Synchronization of reference attributes
Hi, I have some problem with reference attributes. I have a reference attribute in the Person object and I would like to export it to a text file. My problem is that when my object go from the FIM MA connector space to the metaverse, I lost the reference. This is probably normal because I don't want to sync (or even put into the connector space) the referenced object. I just would like to have the reference as a string into my text file. In the article : http://social.technet.microsoft.com/wiki/contents/articles/about-reference-attributes.aspx it is written that "There is one option you have – "dereferencing" reference attributes. What does this mean? In this case, you need to turn the reference attribute into a self-owned attribute. This means, from the look and feel perspective, the “end result” might still look the same. You can define a string attribute for an object and store a GUID value in this attribute. In this case, the “look and feel” of this attribute is the same as a reference attribute – an attribute that contains a GUID value. However, technically, there is huge difference." So, I think it is possible, but I don't think any option into the sync service manager to do this kind of thing. Do you have any idea how to deal with this problem ? Thank you. /Rem
May 7th, 2010 5:30pm

Hi Rem, You have two options in this case: 1 - Change the attribute type in the FIM MA from a reference type to a string type 2 - Push the referenced objects into the Metaverse Unfortunately, you can't write an advanced attribute flow from the FIM MA to the Metaverse to translate the reference into a string. -Jeremy
Free Windows Admin Tool Kit Click here and download it now
May 7th, 2010 7:46pm

Hi, Thank you for your answer. I don't really get what you want to say by : "Change the attribute type in the FIM MA from a reference type to a string type". Do I have to change it in the Metaverse schema ? If I do that, when I try to map the attributes (in the configure attribute flow tab of the properties of my FIM MA) I get the error message : "The type of xxx (Reference) is not compatiblee with the type of xxx (String)". If I can't write an advanced attribute flow, I suppose that I should change the reference type into a string type of my attribte directly in the FIM portal ? It's not really what I want because it seems that I will loose the very convenient way of choosing the referenced object when I create my user : using an identity picker. About the second choice : pushing the referenced objects into the metaverse, it's kind of complicated because I created a structure full of reference attributes and referenced object and I really would avoid creating this structure into the metaverse schema. /Rem
May 10th, 2010 10:19am

You're right that you will lose your people picker function if you change from a reference to a string. Unfortunately, FIM handles reference attributes in a special way and that means that the referenced object needs to be in the Metaverse if you want to flow the reference to the metaverse. For MA's other than the FIM MA you can flow from a reference<>string using an advanced attribute flow or a custom function in a sync rule. As dsicussed above, this is not an option for the FIM MA. Good luck and please let us know what you decide to do. -Jeremy
Free Windows Admin Tool Kit Click here and download it now
May 10th, 2010 11:41am

Okay. I chose to push my referenced object into metaverse. It works better : I now have a valid reference in the attribute of the metaverse object. Now, I would like to convert my reference into string. So, you tell me to use a custom function in my sync rule. Does it want to say that I have to code ? devellop a dll ? Is there any way to do that without developement ? /Rem
May 10th, 2010 4:02pm

Hi Rememk, Have you tried a sync rule with the following code: CustomExpression("" + mvAttribute) => csAttribute I have not tried this personally but several people have used it to convert from string->DN: http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/6d3df467-5266-455a-88bc-3bb25b05f2ca Otherwise, this is a very easy to do in .Net csentry("attribute").StringValue = mvenentry("attrbute").Value.ToString;
Free Windows Admin Tool Kit Click here and download it now
May 10th, 2010 7:23pm

Hello, Following your advice, I tried a sync rule with the code : CustomExpression("" + mvAttribute) => csAttribute It does not work: I get the error "An attribute flow contains a reference attribute as its source value, xxx. Outbound attribute flows containing function expression cannot have reference attributes". I tried also in the other way (from cs to mv), I get the error : "An attribute flow contains a function expression. Defining an inbound attribute flow containing a function expression to a metaverse reference attribute xxx is not allowed." It works in the link you gave me because the reference is not in the metaverse but in the AD. So, I think I will try to develop in .NET. I'm a really newbie in that. I think I have to create a function and to compile it to create a DLL. Is there an easy way to do that (writing my code with notepad and compiling it with a mere commandline) or should I install Visual studio etc ... ? I really thank you for all the answers you're giving to me. /Rem
May 11th, 2010 7:28pm

You can use Jeremy's trick on the inbound side. Here is an example for the related configuration of the manager attribute: This attribute flow mapping dereferences the manager attribute to become a string: Cheers, MarkusMarkus Vilcinskas, Knowledge Engineer, Microsoft Corporation
Free Windows Admin Tool Kit Click here and download it now
May 12th, 2010 1:19am

Rem, Your best bet will be to install Visual Studio. From the Sync engine Management Agents screen, you can choose the MA and then choose Create Extensions Projects. If you add the advanced flow rule in the MA config before you create the extension project then the function you need to write will already be stubbed out for you in the new solution. Add some simple code similar to my example above and then compile. The DLL will be installed in the correct place for you. -Jeremy
May 12th, 2010 8:39am

Hi Jeremy, Hi Markus, Markus, I think the trick is not working beacause my referenced object is not in the AD. I just want to communicate (in a first time) with a plain text file. Referenced objects are in FIM ! You gave me the solution to dereference something from the AD to a string in FIM. I would like to dereference something from FIM to the text file or to create a reference when I provision my FIM database. Jeremy, I created a extension project. I have added a similar code to your example above in the MapAttributesForExport method. However, it seems that, in order to be called, the method need an advanced attribute flow to be created in the "Configure attribute flow" tab of the properties of the management agent. I can't create such a flow because when I try to map my data source attribute and my metaverse attribute, I get the error : "Metaverse reference attributes can not be defined as source attributes or rules extension export flow". I will continue to search but I'm really thinking of giving up :( ...
Free Windows Admin Tool Kit Click here and download it now
May 12th, 2010 11:50am

Ah, You're right. This is why we really need to be able to do some manioulation of the data on the flow from FIM MA -> MV. Markus, Do you have any ideas here? It sounds like the boiled-down requirement is: Get a reference value from FIM DB to other system as String. Perhaps the right approach is to use a workflow on the FIM object to grab the reference and put it in a non-reference attribute in FIM DB and then flow that to MV/External System? Seems like a long way around but that's what I can think of right now.... -Jeremy
May 12th, 2010 7:20pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics