Active Directory connector behavior

Posted: 12th May 2010 by Anders Bengtsson in System Center Service Manager

This week my friend Patrik Sundqvist and I delivered a Service Manager event together with Microsoft in Sweden. There were a lot of good questions from the audience and a great interest in the product. One of the questions was if the Active Directory synchronize blank attributes from Active Directory if there is a value in the CMDB. Of course we have tried this in a sandbox J

1. I created a new user account in Active Directory. I did not change any default values so the Office attribute (PhysicalDeliveryOfficeName) was set to < Not Set >
2. I ran the Active Directory connector synchronization
3. I verified that I had a blank Office attribute in the CMDB
4. I updated the attribute in the CMDB
5. I logged in and out with the account on a workstation
6. I ran the Active Directory connector synchronization
7. The Office attribute in the CMDB is back to blank

If my AD user object is updated, in this case some attributes was updated when the user loged into a workstation, the watermark on the user object is updated, then the whole user will be synchronized back to the CMDB.

Remember this! What you see is not always what you think in Service Manager. You might think that looking at a computer in the computer form is in fact looking at a single object in the CMDB. This is seldom the truth since most forms in Service Manager targets TypeProjections (which could be seen as a view displaying data from several objects related to each other). As an example you might take a look at the type projection acting as source to the “computer form” in Service Manager. As you can see in the definition below, quite a few different objects support the computer form.

Microsoft.Windows.Computer.ProjectionType :

<TypeProjection Accessibility=”Public”>

<Component Path=”$Context/Path[Relationship='ConfigurationManager!Microsoft.SystemCenter.ConfigurationManager.DeployedComputerRunsWindowsComputer' SeedRole='Target']$” Alias=”PhysicalComputer” />

 <Component Path=”$Context/Path[Relationship='Windows!Microsoft.Windows.ComputerHostsOperatingSystem']$” Alias=”OperatingSystem” />

 <Component Path=”$Context/Path[Relationship='Windows!Microsoft.Windows.ComputerHostsLogicalDevice' TypeConstraint='Peripherals!Microsoft.Windows.Peripheral.NetworkAdapter']$” Alias=”NetworkAdapter” />

<Component Path=”$Context/Path[Relationship='Windows!Microsoft.Windows.ComputerHostsLogicalDevice' TypeConstraint='Peripherals!Microsoft.Windows.Peripheral.Processor']$” Alias=”Processor” />

<Component Path=”$Context/Path[Relationship='Windows!Microsoft.Windows.ComputerHostsLogicalDevice' TypeConstraint='Peripherals!Microsoft.Windows.Peripheral.PhysicalDisk']$” Alias=”PhysicalDisk” />

<Component Path=”$Context/Path[Relationship='Windows!Microsoft.Windows.ComputerHostsLogicalDevice' TypeConstraint='Peripherals!Microsoft.Windows.Peripheral.LogicalDisk']$” Alias=”LogicalDisk” />

<Component Path=”$Context/Path[Relationship='System!System.ComputerPrimaryUser']$” Alias=”PrimaryUser” />

<Component Path=”$Context/Path[Relationship='System!System.ConfigItemOwnedByUser']$” Alias=”Custodian” />

<Component Path=”$Context/Path[Relationship='WorkItem!System.WorkItemRelatesToConfigItem' SeedRole='Target']$” Alias=”ImpactedWorkItem” />

<Component Path=”$Context/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem' SeedRole='Target']$” Alias=”RelatedWorkItem” />

<Component Path=”$Context/Path[Relationship='SupportingItem!System.ConfigItemHasFileAttachment']$” Alias=”FileAttachment” />

<Component Path=”$Context/Path[Relationship='System!System.ConfigItemRelatesToConfigItem']$” Alias=”RelatedConfigItem” />

<Component Path=”$Context/Path[Relationship='System!System.ConfigItemRelatesToConfigItem' SeedRole='Target']$” Alias=”RelatedConfigItemSource” />

<Component Path=”$Context/Path[Relationship='CoreKnowledge!System.EntityLinksToKnowledgeDocument']$” Alias=”RelatedKnowledgeArticles” />

        </TypeProjection>

A short summary of this is ”last-write wins” and that you should be very aware that a form can be a mix of the result of a number of connectors and synchronized data.

  1. Hi mates, its impressive piece of writing on the topic of educationand fully explained, keep
    it up all the time.

  2. [...] form is a combination of objects and relationships between classes. Some more info about that in this post. Opalis handle this object per object and relationship per relationship. In the following [...]