Nu SharePoint 2010 Forefront Identity Manager gebruikt voor profiel synchronisatie, is het tijd voor ons SharePoint admins om wederom een nieuw product te leren, althans in den basis.
Forefront Identity Manager of FIM, is onderdeel van een bredere set aan tools binnen het Identity Management werkgebied. Het biedt synchronisatiemogelijkheden van Identity Informatie tussen verschillende bronnen, en zit daar als controlerend component met bijgeleverde metabase tussen. Zo is het mogelijk informatie over personen vanuit bijvoorbeeld HR systemen te synchroniseren naar bijvoorbeeld AD, SQL of LDAP. Verder biedt het ook nog de mogelijkheden om nieuwe objecten aan te maken om zo opgenomen te worden in een breder provisioning proces, met daaraan gekoppelde functionaliteit om bijvoorbeeld wachtwoorden te synchroniseren.
Omdat FIM binnen SharePoint bedoeld is voor profiel synchronisatie, zal ik laatstgenoemde functionaliteiten buiten beschouwing laten. Deze blog post richt zich puur op synchronisatie van gebruikers informatie. Ook zal ik het alleen het standaard Active Directory scenario belichten. De principes hierachter zijn gelijk voor andere sources.
(voor informatie over de User Profile Service binnen SharePoint zie: http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-user-profile-service.aspx)
Overview
FIM bestaat normaal gesproken uit een aantal onderdelen, namelijk:
- Forefront Identity Manager Service:
Windows Service die de kernactiviteiten (ook synchronisatie) van FIM controleert.
- Forefront Identity Manager Synchronization Service:
Windows Service die communiceert met de verschillende data sources.
- Forefront Identity Manager Portal:
Self service portal en management portal voor Identity Management activiteiten (account, group beheer etc).
- Forefront Identity Manager Password Portal
Self service portal en management portal voor password management.
Wanneer je binnen SharePoint een User Profile Application provisioned, en vervolgens de User Profile Synchronization Service start binnen Central Admin (Services on Server), zal SharePoint FIM configuren. Hierbij worden alleen de FIM Service en FIM Synchronization Service geconfigureerd. De beide portals komen niet beschikbaar.
De belangrijkste concepten rondom de FIM Synchronization Service zijn de management agents, connector space en Metaverse:
- Management agents zijn stukjes code die gebruikt worden om een data source (AD, SQL, LDIF file) te kunnen doorlopen. Zie het als een SharePoint protocol handler in 2007.
- Connector space is eigenlijk niets meer dan een tijdelijke werkruimte voor de verschillende management agents om informatie vanuit de data sources te kunnen bewerken (op basis van policies en workflows) voordat het naar de metabase (Metaverse) wordt geschreven. In het geval van SharePoint zijn het een set tabellen in de Synchronization database die je aanmaakt, wanneer je een User Profile Application aanmaakt. Een connector space object (representatie van bijv AD user in connector space, zoals gedefinieerd binnen de Management Agents) wordt altijd aan een Metaverse object (representatie van bijv. AD user in de Metaverse, zoals gedefinieerd door het Metaverse schema) gekoppeld via 'attribute flow' rules.
- Metaverse is een compleet overzicht van alle attributen uit de verschillende data sources met additionele metadata in 1 centrale directory (Meta Directory). Dit om te kunnen bepalen wat bijvoorbeeld de primaire bron is van een bepaald attribuut. Dit is ook niet meer dan SQL tabellen in de Synchronization database.
Vermoedelijk ben je nu nog steeds erg verward… Misschien dat het volgende plaatje wat meer duidelijkheid schept:
Wat hier geschetst wordt is in een notendop wat de Synchronization Service doet:
- FIM haalt door code in de management agent (onthoudt: geen service of echte agents, gewoon een stukje code wat in de context van de Synchronization service draait) gegevens op uit een datasource en slaat het op in de connector space.*
- In de connector space kan de management agent op basis van policies nog van alles doen met de opgehaalde gegevens. Een makkelijk voorbeeld is om vreemde tekens uit een string te halen.
- De data wordt in de Metaverse weggeschreven.
- Bepaalde management agents halen deze eventueel nieuwe data op uit de Metaverse en slaan het op in de connector space.
- In de connector space kan de management agents op basis van policies weer van alles doen met deze data. Misschien moet er aan een username een aantal voorloopkarakters worden toegevoegd omdat deze niet voldoet aan een minimaal aantal karakters.
- De data wordt weggeschreven naar de data source.
* Heel belangrijk in dit concept is dat er in een dergelijk scenario altijd maar 1 master source is voor een bepaald attribuut. Een username kan dus maar op 1 data source gewijzigd worden. Uiteraard kan je ervoor kiezen een username niet te synchroniseren naar een bepaald data source, door het bijvoorbeeld helemaal niet mee te nemen in de configuratie, of alleen voor een initiële provisioning te kiezen. Je kunt het username dan wel gewoon wijzigen, zonder de kans dat het overschreven wordt door een wijziging in de master source.
Configuratie en troubleshooting
Voordat we over gaan tot inzage in de configuratie tool, laat ik alvast even heel duidelijk zijn:
Bij FIM binnen SharePoint 2010 doe je de configuratie vanuit SharePoint. Afblijven dus verder!!!
De configuratie tool voor FIM is echter wel handig bij troubleshooten, vandaar wat meer uitleg. De tool die je gebruikt voor het configureren van de FIM services rondom synchronisatie is de Synchronization Service Manager , en te vinden onder 'C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe'.
Deze tool bestaat uit een aantal onderdelen:
- Operations – toont een overzicht van operaties die uitgevoerd worden en uitgevoerd zijn geweest.
- Management Agents – Configuratieonderdeel voor de management agents.
- Metaverse Designer – Configuratieonderdeel voor het Metaverse schema.
- Metaverse Search – Search tool voor de Metaverse
- Joiner – Configuratieonderdeel om connector space objecten te (ont)koppelen aan Metaverse objecten.
In de volgende paragraven zal ik elk van deze onderdelen iets meer belichten.
Operations
De Operations tab zul je veel gebruiken als SharePoint beheerder bij het troubleshooten van issues. Dit geeft een veel uitgebreider overzicht weer van de status van de verschillende operaties als binnen de User Profile Service. Selecteer gewoon een regel en zie wat voor informatie deze geeft. Het geeft bijvoorbeeld weer welke wijzigingen er gemaakt zijn, en – nog belangrijker – welke dus niet.
Management Agents
De Management Agents tab toont de verschillende Management Agents. Voor SharePoint 2010 zijn het er standaard 3 nadat je een profile import connection voor AD hebt gemaakt:
- De ILMMA agents is van het type 'FIM Service Management Agent' en wordt niet gebruikt. Deze type agent wordt alleen gebruikt in de volledige installatie van FIM en wordt gebruikt voor workflow van bijv. Password Portal.
- De MOSS-<GUID> agents is van het type 'Extensible Connectivity' en deze babbelt met de SharePoint profile database via een code in Microsoft.Office.Server.UserProfiles.ManagementAgent.dll. Dit connector type is dus bedoeld om je eigen Management Agents mee te bouwen. Hiervan is er dus altijd maar 1. In SharePoint 2010 kan je maar 1 User Profile Service hebben per 'User Profile Synchronization Service'. Je kunt uiteraard wel meerdere servers inzetten, en dus meerdere service instances inzetten.
- De MOSSAD-<naam van SharePoint import connection> is van het type 'Active Directory Domain Services' en babbelt – hoe kan het ook anders – met AD. Voor elke import connectie die je binnen SharePoint aanmaakt komt er een extra management agent bij. Het type verschilt uiteraard per import connectie type. Een connectie voor een 'Active Directory Resource' begint bijv. met MOSSADR-.
De management agents worden voorgeconfigureerd bij het deployen van de User Profile Service en het aanmaken van de Import connections. De configuratie is de bereiken door het context menu van een management agent op te vragen:
Properties bevat de meeste configuratie. De configuratie van deze management agents wordt voor een groot deel bepaald door Rules Extentions, welke opgenomen zijn in de Configure Extention Settings sectie, wanneer je de properties opvraagt van de management agent. Dit is een binary (Microsoft.Office.Server.UserProfiles.ActiveDirectoryMAExtension.dll bijvoorbeeld voor AD types) die het overgrote deel van de configuratie van de management agent bepaald. Nogmaals: niet aan de configuratie komen dus!!
Configure Run Profiles bevat de configuratie van de eigenlijke Operations die je terug ziet in het Operations configuratieonderdeel. Een management agent die geen run profiles heeft, doet dus niets. SharePoint stuurt het aftrappen van deze run profiles dus aan. Dat is wat je ziet in de logs.
Een run profile bevat 1 of meerdere stappen. Een stap voert 1 operatie uit. Je kunt kiezen uit de volgende operaties:
Operatie | Omschrijving |
Delta Import (stage only) | Importeert gewijzigde objecten uit de data source naar de connector space. |
Full Import (stage only) | Importeert alle objecten uite de data source naar de connector space. |
Delta Import and Delta Synchronization | Importeert gewijzigde objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, de gewijzigde data gesynchroniseerd de MetaVerse. |
Full Import and Delta Synchronization | Importeert alle objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, alleen gewijzigde data gesynchroniseerd de MetaVerse. |
Full Import and Full Synchronization | Importeert alle objecten uit de data source naar de connector space. Vervolgens wordt na het processen van de verschillende rules, alle data gesynchroniseerd de MetaVerse. |
Delta Synchronization | Na het processen van de verschillende rules, wordt de gewijzigde staged data gesynchroniseerd de MetaVerse. |
Full Synchronization | Na het processen van de verschillende rules, wordt alle staged data gesynchroniseerd de MetaVerse. |
Export | Data uit de connector space wordt weggeschreven naar de data source. Dit is altijd een delta; alleen gewijzigde data wordt weggeschreven. |
Ook hier mag je eigenlijk niets wijzigen.
Om te troubleshooten zijn er een aantal onderdelen waar je waardevolle informatie vandaan kunt halen of extra logging kunt aanzetten:
- Object Types en Attributes – In de properties van de management agents (verschilt per management agents, maar nagenoeg dezelfde informatie is altijd beschikbaar) is te vinden welke objecten en bijhorende attributen door de management agent behandeld worden. Wanneer er zich problemen voordoen kan je in de tool verifieren of de informatie die jij verwacht ook daadwerkelijk verwerkt word. Voor AD agents heten deze onderdelen Select Object Types en Select Attributes.
- Connector Filter – De 'Configure Connector Filter' settings in de properties van een management agent bepalen welke objecten en attributen gefilterd moeten worden.
- Attribute Flow – De 'Configure Attribute Flow' laat zien hoe de connector space attributen gekoppeld zijn aan de Metaverse attributen. Dit stelt je in staat te controleren of de juiste informatie aan elkaar geknoopt wordt.
Voorbeeld:
Op de AD management agents is givenName
in de connector space (bron=AD dus) gekoppeld aan givenName in de Metaverse. Flow direction is Import dus de waarde wordt vanuit AD naar de Metaverse gebracht:

Op de MOSS management agent is FirstName in de connector space (MOSS Profile database dus) gekoppeld aan givenName in de Metaverse. Flow direction is Export
dus de waarde wordt vanuit de Metaverse naar de Profile Database gebracht.
Zo kan je de gehele flow dus controleren.
- Run Profiles – Je kunt aan de run profiles zien wat voor type operatie het is. Als er dus iets mis gaat, kan je beter pinpointen waar je het moet zoeken. Verder kan je in de run profiles onder de configuratie van Steps een logfile aan laten maken met extra informatie. Dit kan erg handig zijn. Je kiest dan voor Configure Run Profiles > Edit Step > Set Log File Options
Metaverse Designer
De Metaverse Designer heb je echt niets te zoeken. Je kunt hier het schema zien van de metaverse, maar meer informatie valt er niet te halen.
Metaverse Search
De Metaverse Search kan erg handig zijn. Je kunt hiermee in de Metaverse zoeken en nagaan of jouw verwachte objecten aanwezig zijn met de juiste attribuut waarden:

Het zoeken spreekt voor zich. Na het zoeken dubbelklik je een result en krijg je een uitgebreid overzicht op de Attributes tab van hoe het object is opgenomen in de Metaverse:
Op de Connectors tab krijg je een overzicht van de connector spaces waar dit object mee gejoined is. Wanneer je vervolgens een management agent selecteert, kun je kiezen voor Properties, waarna je een overzicht krijgt van hoe het object er in de connector space uitziet. Verder bevat dit scherm informatie over wanneer het type object en wanneer de laatste wijzigingen zijn geweest in de connector space. Op zich handige informatie, maar de meest handige functionaliteit hier is Preview. Onder aan het scherm is een Preview knop. Wanneer je deze gebruikt kom je in een venster waar je een Full of Delta synchronisatie kunt simuleren van die management agent (ofwel synchronisatie vanuit de connector space richting de metaverse). Je krijgt dan een compleet overzicht van wat er zou gebeuren als je nu zou synchronizeren. Je kunt bijvoorbeeld ook checken wat voor resultaten dat zou hebben voor de Export operaties van andere management agents. In mijn geval heb ik voor het schrijven van http://blogs.microsoft.nl/blogs/mpriem/archive/2010/08/07/SharePoint-2010-profiel-synchronisatie-export.aspx het property department gewijzigd zodat deze vanuit SharePoint zou synchen met AD. Je ziet in onderstaand voorbeeld dat mijn FULL synch zou zorgen dat de AD management agent bij de Export operatie het attribute department gaat proberen te exporteren, maar dat de Final Value (Unchanged) is. Het is dus ondertussen niet gewijzigd.
Joiner
In joiner kun je zoeken naar objecten in connector spaces die niet gekoppeld zijn aan objecten in de metaverse. Ik kan niet zo snel een situatie bedenken dat je hier graag zou willen kijken. Je zou hier hoogstens even kunnen kijken of bepaalde objecten gefilterd zijn door rules door te zoeken op Filtered Disconnetors. Echter, aangezien rules nagenoeg allemaal gebaseerd zijn op Rules Extentions, valt er verder weinig aan te troubleshooten. Misschien dat na gelang de tijd vordert zich nieuwe toepassingen aandoen, maar vooralsnog zou ik Joiner links laten liggen.
Troubleshooting
Naast de eerder genoemde plekken waar je relevante informatie kunt vinden, is er binnen deze tool ook nog de mogelijkheid op twee plekken wat extra logging aan te zetten:
Extra logging in Application Log:
- Open de Microsoft.ResourceManagement.Service.exe.config file in 'C:\Program Files\Microsoft Office Servers\14.0\Service'.
- Verander de waarde van Error naar "Verbose".
- Herstart de Forefront Identity Manager Service.
- Trace logging – Je kunt EWT tracing gebruiken om extra informatie boven tafel te toveren, maar dit is alleen nodig bij in-depth troubleshooting en wil je alleen doen op aanwijzen van een Microsoft Support engineer. Meer hierover is te vinden op http://msdn.microsoft.com/en-us/library/ff357801.aspx