Skip navigation

Full disclosure…you aren’t supposed to do this. The metaverse in FIM 2010 (ILM 2007, MIIS 2003) can be exported to an XML file. I finally got around to writing an app that can search the schema of ldap directories and SQL tables and add those new attributes to the MV schema with a prefix. Why? Because you will pretty much never get away from data flow troubleshooting questions. The FIM Sync Manager interface can only run on the console of the server that it’s installed on. (And no, you can’t install it on a server that has Remote App/terminal services installed.) There is some basic RBAC for segregating permissions but you still have to give RDP access to the machine.

The initial configuration of this application is also the very definition of tedium. The “old” method using the Sync manager was a pain…the SharePoint based method is worse.

More to come in the next post, but the general idea is a more automated means of getting the connected directories mapped into the system with inbound attribute flow’s that populate MV objects with the corresponding CD data. Programmatically generating the metaverse schema is the first step. Next step will be manipulating the MA export files.  Being able to generate these config files out of band will also enable some interesting UI scenarios for creating the attribute flows…There has to be a better way.

For the impatient:

Here’s a snippet that adds MV elements to the “person” class…
static void AddSchemaElement(string schemaObjectName)
{
var xEle = xDoc.Descendants(XName.Get(“directory-schema”, dsml.NamespaceName)).First();
var personEle = xEle.FirstNode.ElementsAfterSelf().Where(x => x.Name.LocalName == “class” && x.FirstAttribute.Value == “person”).First();
XElement newAtrributeType = new XElement(XName.Get(“attribute-type”, dsml.NamespaceName),
new XAttribute(“id”, schemaObjectName),
new XAttribute(“single-value”, “true”),
new XAttribute(XName.Get(“indexable”, msDsml.NamespaceName), “true”),
new XAttribute(XNamespace.Xmlns + “ms-dsml”, msDsml.NamespaceName),
new XElement(dsml + “name”, schemaObjectName),
new XElement(dsml + “syntax”, “1.3.6.1.4.1.1466.115.121.1.15”));

xEle.Add(newAtrributeType);
personEle.Add(new XElement(dsml + “attribute”,
new XAttribute(“ref”, “#” + schemaObjectName),
new XAttribute(“required”, “false”)
));
return;
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: