# Presentation: 304137

## Net services software

- the power to change

## Technical overview of DirXML

- Agenda:
- A few words about NDS eDirectory
- DirXML Concepts and Terms
- Demonstrations
- In-depth information
- Q&A

## What are directories for?

**DirXML**

## Why build DirXML on NDS eDirectory?

- eDirectory is flexible and forgiving
- Change tree names, container names
- Add or delete schema without shutting down server
- Split trees, merge trees, create or join partitions
- eDirectory is fault tolerant and reliable
- Multi-master replication - vehicle for data sharing
- Schema and data integrity
- Referential integrity
- eDirectory is scalable and fast
- Billions of objects, thousands of searches/sec.

## DirXML extends eDirectory’s Multi-master Replication

- DirXML extends eDirectory’s Multi-master Replication

- Filter

## DirXML Concepts and Terms

## The goal: link data objects

- Guy

**23**

- DirXML establishes links between similar data objects and maintains the consistency of the data in each object

## Rules establish links automatically

- Matching Rule
- Identifies if an object already exists with similar data
- Links the existing objects rather than creating new ones when rule is satisfied
- Create Rule
- Stipulates which attributes are required for create requests
- Sets default values
- Placement Rule
- Provides placement handles for new objects

## Data flow and data conversion

- Schema Mapping Rule
- Converts schema from XDS to the application’s format
- Transformation Stylesheet
- Converts “CRUD” to any other event
- A type of scripting language for data conversion, etc.
- Publisher and Subscriber Filters
- Provide flow control and security
- Reduce processing to improve performance

## Publisher

- Application

- App
- Shim

- NDS

- VRDIM

- Subscriber

**Create**

**Subscriber**
**Filter**

**Publisher**
**Filter**

**XDS**

**XDS**

**XML**

**DATA**

**XSLT**
**Processor**

**Matching**
**Rule**

**Event**
**Transformation**
**Style Sheet**

**Rules**
**Engine**

**DATA**

**Schema**
**Mapping**
**Rule**

**Create**
**Rule**

**Placement**
**Rule**

**Logging**

**Matching**
**Rule**

**Event**
**Transformation**
**Style Sheet**

**Schema**
**Mapping**
**Rule**

**Create**
**Rule**

**Placement**
**Rule**

**Input Transform**
**Style Sheet**

**Event**
**Queue**

**Delta**
**Enforcement**

**Publisher**
**Filter**
**Enforcement**

**Output Transform**
**Style Sheet**

- Join Engine

**Modify**

**Delete**

**Create**

**Modify**

**Delete**

## Demo: Employee Provisioning

## Take a business process...

**Notes:**
To begin with... I realize you can’t actually read this... but that’s not my intent.  What this image conveys is the complexity of what we found.  

This is the actual systems diagram developed in assessing what’s required to move to Zero Day Start at Novell.  From conversations with others, it’s apparent that what we found is not unusual.  

This diagram is a reminder of how complex business processes can become.  The opportunity for improvement is tremendous.

17 fish bowls with one fish each -- 8 more than the 7 shown in the ad that ran in this morning’s New York times  --  would be required to represent the 17 databases and systems that relate to each new hire at Novell.  Employee information ultimately is stored in over 50 different places within the Novell network.

What’s represented on this slide spans from PBXs, to PeopleSoft, to Directory, to a facilities database, a building access security database... and on and on.

Until we change this fall, it takes two weeks to process a new hire at Novell.  The 17 systems touch 10 different parts of our organization.  It means a complicated process of numerous people sending e-mails, making calls, and taking days to assign rights, access privileges, equipment, etc... 
Then, what can sometimes be a more critical business issue -- a security issue -- is that it’s typically an even harder job to take away those rights and privileges after an employee leaves.  Access rights tend to expand to more and more systems over time, and getting all of this access turned off when an employee leaves can take months.

At Novell, all of  this will change in a big way...  soon.

## ...and turn it into an e-business process

**LDAP**

**XML**

**IP**

**SSL**

- ...and turn it into an e-business process

**Notes:**
Moving to a one Net solution will make a dramatic change with new automated distribution of employee information between different directories and applications.   It simplifies a very cumbersome process.  And open standards make it possible.

Wide adoption of important new standards are helping make one Net concepts such as Zero Day Start a reality. 
They include:
LDAP...  the lightweight directory access protocol,         
      		and...
	XML...     for data exchange between dissimilar 
 		applications and directories.
SSL, as a security standard, and obviously IP, are also a factor.

And to be fully forthcoming... this is an example of how IS&T brings new Novell products up on our production network before first customer ship.  Novell’s customers will be able to implement similar solutions beginning this fall.

We are using the next version of NDS, code named Tao, and iChain another new  Novell product, to automate the enabling and synchronization of information between the relative tools and services on the previous slide.  In fact, Novell has set Ship Criteria for these products around the requirement that they enable these processes before they ship.
Zero Day Start will create an “aggregated view” of all employee data within the directory.

Then, with the acceptance of a new job offer by a new employee...   this event will trigger the generation of a directory account followed by numerous automatic actions including:  creation of e-mail, calendaring and instant messaging services, building access rights timed for the appropriate start-date;  an office phone number set to activate on the first day at work.

Another very credible step to a one Net future.

## Slide 15

## Slide 16

## Schema Mapping Rule

- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <attr-name-map>
-    <class-name>
-       <nds-name>**User**</nds-name>
-       <app-name>**System User**</app-name>
-    </class-name>
-    <attr-name classname="**User**">
-       <nds-name>**Given Name**</nds-name>
-       <app-name>**First Name**</app-name>
-    </attr-name>
-    <attr-name classname="**User**">
-       <nds-name>**Surname**</nds-name>
-       <app-name>**Last Name**</app-name>
-    </attr-name>
-    <attr-name classname="**User**">
-       <nds-name>**Telephone Number**</nds-name>
-       <app-name>**Phone**</app-name>
-    </attr-name>
-    <attr-name classname="**User**">
-       <nds-name>**L**</nds-name>
-       <app-name>**Location**</app-name>
-    </attr-name>
- </attr-name-map>

## Subscriber Create Rule

- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <create-rules>
-    <create-rule class-name="**User**">
-       <required-attr attr-name="**CN**"/>
-       <required-attr attr-name="**L**">
-          <value>**Unspecified**</value>
-       </required-attr>
-    </create-rule>
- </create-rules>

## Subscriber Matching Rule

- <?xml version="1.0" encoding="ISO-8859-1" ?>
-  <matching-rule>
-       <match-class class-name="**User**"/>
-       <match-attr attr-name="**Surname**"/>
-       <match-attr attr-name="**Given Name**"/>
-       <match-attr attr-name="**Location**"/>
-    </matching-rule>
-    <matching-rule>
-       <match-class class-name="**User**"/>
-       <match-attr attr-name="**cn**"/>
-    </matching-rule>
- </matching-rules>

## Subscriber Placement Rule

## Map “Paino” to “Weight”

- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <attr-name-map>
-    <class-name>
-       <nds-name>**User**</nds-name>
-       <app-name>**System User**</app-name>
-    </class-name>
-    <attr-name classname="**User**">
-       <nds-name>**Given Name**</nds-name>
-       <app-name>**Name**</app-name>
-    </attr-name>
-    <attr-name classname="**User**">
-       <nds-name>**Paino**</nds-name>
-       <app-name>**Weight**</app-name>
-    </attr-name>
- </attr-name-map>

## Map “Paino” to “Gewicht”

- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <attr-name-map>
-    <class-name>
-       <nds-name>**User**</nds-name>
-       <app-name>**System User**</app-name>
-    </class-name>
-    <attr-name classname="**User**">
-       <nds-name>**Given Name**</nds-name>
-       <app-name>**Name**</app-name>
-    </attr-name>
-    <attr-name classname="**User**">
-       <nds-name>**Paino**</nds-name>
-       <app-name>**Gewicht**</app-name>
-    </attr-name>
- </attr-name-map>

## Sample only - not tested

- <?xml version="1.0" encoding="ISO-8859-1"?>
- <xsl:stylesheet
- 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- 	version="1.0">
- <xsl:import href=“copyall.something.com”>
- <xsl:template match="add-attr[@attr-name = ’**Weight**'] |
- 		modify-attr[@attr-name = ’**Weight**'] |
- 		attr[@attr-name = ‘**Weight**’]" >
- 	<xsl:copy>
- 		<xsl:apply-templates select="node()|@*" mode=”weight-transform"/>
- 	</xsl:copy>
- </xsl:template>
- <xsl:template match="node()|@*" mode=”weight-transform">
- 	<xsl:copy>
- 		<xsl:apply-templates select="node()|@*" mode=”weight-transform"/>
- 	</xsl:copy>
- </xsl:template>
- <xsl:template match="value[child::component]" mode=”weight-transform">
- 	<xsl:copy>
- 		**<xsl:value-of select=**"**number(.) div 2.21**"**/****>**
- 	</xsl:copy>
- </xsl:template>
- </xsl:stylesheet>

**Sample only - not tested**

## Publisher/Subscriber Filter Selection

## Publisher/Subscriber Filter

## Subscriber - Create

- Apply
- Driver Filter

- Convert
- to XDS

- Apply
- Matching
- Rule:

- Is
- there a single
- match?

- Get both
- Subscriber and
- Publisher filters

**YES**

**NO**

**FOREIGN**
**KEY**

- Update
- Association

- Query
- Application

- Merge
- Attributes

- Mark
- Association
- Pending

- Do we
- have all required
- attributes?

- Apply
- Placement
- Rule

**NO**

**NO**

**YES**

- Submit ANF
**Create Object**

- Submit ANF
**Modify Object**

**FOREIGN**
**KEY**

## Subscriber - Modify

- Apply
- Driver Filter

- Read
- Association

- Convert
- to XDS

- Does
- Association
- exist?

- Apply
- schema/format
- transformation

**Create**

- Submit ANF
**Modify Object**

**YES**

**NO**

- Has the
- foreign key
- changed

**YES**

**NO**

**FOREIGN**
**KEY**

- Update
- Association

## Subscriber - Delete

- Apply
- Driver Filter

- Read
- Association

- Convert
- to XDS

- Does
- Association
- exist?

- Submit ANF
**Delete Object**

**YES**

**NO**

## Publisher - Create

- Apply
- Shim’s copy
- of the
- Driver Filter

- Have
- a match?

**NO**

- Merge
- Attributes

- Delta
- Enforcement
- (mini merge)

**YES**

- Submit ANF
**Modify Object**

- Is this
- a change by the
- shim?

**YES**

- Do we
- have all required
- attributes?

**Create Object**

- Read
- Association
- from NDS

**NO**

- Apply
- Matching
- Rule

**Query NDS**

**Query App**

- Determine
- Placement
- in NDS

**Modify Object**

**YES**

**NO**

## Publisher - Modify

- Apply
- Driver Filter

- Read
- Association

- Convert
- to XDS

- Does
- Association
- exist?

- Apply
- schema/format
- transformation

- Submit ANF
**Modify Object**

**YES**

**NO**

- Has the
- foreign key
- changed

**YES**

**NO**

**FOREIGN**
**KEY**

- Update
- Association

**Create**

## Publisher - Delete

- Apply
- Driver Filter

- Read
- Association

- Does
- Association
- exist?

**Delete Object**

**YES**

**NO**