How to clear datetime values
I'm trying to clear datetime values from FIM Portal. In an inbound synchronization rule I have a flow that converts a string from a csv to a format that FIM understands. How ever, if that value is cleared from csv, nothing happens in FIM Portal. It gets deleted in the connector space of a CSV MA, but it stays in the metaverse. So how can I clear it? I found out that there is a similar thread. Are there any updates to this?
April 21st, 2011 9:41am

How many inbound attribute flows do you have configured for the related metaverse attribute? What is the value of the metaverse attribute? Cheers, Markus Markus Vilcinskas, Knowledge Engineer, Microsoft Corporation
Free Windows Admin Tool Kit Click here and download it now
April 21st, 2011 11:50am

There is just one inbound attribute flow for this attribute. If I look at it in Metaverse Designer and choose "Configure Attribute Flow Precedence" I see that there are this one from CSV MA (SR-Expression). Metaverse value look like this: 2010-12-20T08:00.00.000 I use IIF(Eq(employeeEndDate,""),"",Word()) to convert the value from CSV to the format above.
April 21st, 2011 12:17pm

The "" isn't going to send a null. The technique described in my post here (http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/9145e869-2b55-4711-bab8-45c052ab0392/) will do the job, though.My Book - Active Directory, 4th Edition My Blog - www.briandesmond.com
Free Windows Admin Tool Kit Click here and download it now
April 21st, 2011 6:15pm

But this is an inbound from CSV, not outbound to AD (so adding metaverse attribute wouldn't work). I cannot edit the CSV file, but I can edit the MA. Is it possible to do?
April 22nd, 2011 6:35am

But this is an inbound from CSV, not outbound to AD (so adding metaverse attribute wouldn't work). I cannot edit the CSV file, but I can edit the MA. Is it possible to do? OK. You can either define a column in the CSV that's always null, or use an advanced (coded) import flow rule.My Book - Active Directory, 4th Edition My Blog - www.briandesmond.com
Free Windows Admin Tool Kit Click here and download it now
April 22nd, 2011 11:13am

I added a null column in the csv and edited my ISR (if employeeEndDate is present, correct the format and flow it else flow null) IIF(IsPresent(employeeEndDate),Word(employeeEndDate,3,".")+"-"+Word(employeeEndDate,2,".")+"-"+Word(employeeEndDate,1,".")+"T00:00:00.000",null) However, this doesn't remove the value, if it is removed from csv file. Am I doing something wrong? It seems that it doesn't read this null-column value to the connector space.
April 26th, 2011 9:57am

I know that you can do this in an advanced (rules extension) flow with logic such as the following: if (!csentry["employeeEndDate"].IsPresent()) { if (mventry["employeeEndDate"].IsPresent()) { mventry["employeeEndDate"].Delete(); } } else { ... } However I too would have expected this to work for a FIM Portal sync rule ... and putting the null column value as the 3rd (false) parameter of the IIF function (as suggested by Brian) should work for you. You may have misunderstood Brian's direction on this ...Bob Bradley, www.unifysolutions.net (FIMBob?)
Free Windows Admin Tool Kit Click here and download it now
April 26th, 2011 11:59am

The answer here is a little counter-inuitive. Skip to the end if you don't care about the explanation. Explanation: There is a single MA contributing a value to a metaverse attribute. Within that MA, there is a single connectorspace attribute contributing to that MV attribute. Now, in a normal direct flow (employeeEndDate=>employeeEndDate), when the connectorspace attribute becomes null, it disappears from the connectorspace (behaviour witnessed above) and the associated metaverse attribute would be deleted, because there's no contributing MA. But in this case we're looking at an advanced flow, using IIF to first determine if the connectorspace attribute is present, and then taking action if it is/isn't. In classic rules extensions (correct me if I'm wrong Bob), the code described by Bob wouldn't be executed if employeeEndDate was the only attribute included in the IAF (you'd also have to include an anchor/dn value to ensure the rule was triggered). And if I recall correctly, as soon as the flow doesn't execute, it's considered that the MA is no longer contributing a value. (I'd have to go back and check this). In FIM Portal, it seems that the rule is resolved regardless of the presence of the attribute in the connectorspace. Eg, IIF(IsPresent(employeeEndDate),employeeEndDate,"123") One can easily confirm that this flows the end date when it exists and a string containing "123" when it doesn't. So the answer is that you want the 3rd parameter in your IIF function to be a null value... but as covered, passing Null() only tells FIM to ignore input from this MA. From the reference: The Null function is used to define that this MA does not have an attribute to contribute and that attribute precedence should continue with the next MA. Now, if we weren't using the Portal, FIM would skip to the next contributing MA and if no further contributing MA's existed (as in your example), it would clear the Metaverse value. So, as far as I am concerned, this is a bug as the behaviour is not consistent. But that doesn't help you. As already stated, you want to flow a null value into the metaverse because you don't have access to the Delete() function from the Portal. But the problem is that once a connectorpace attribute becomes null, it is deleted from the object. So where do you source the null value from? And here comes the counter-intuitive bit... Answer: IIF(IsPresent(employeeEndDate),Word(employeeEndDate,3,".")+"-"+Word(employeeEndDate,2,".")+"-"+Word(employeeEndDate,1,".")+"T00:00:00.000",employeeEndDate) In other words... if it is present, do the calculations... else if the attribute is not present, flow it into the metaverse. Makes perfect sense, right? Anyway, I setup your scenario in my test environment and it appears to work. Give it a shot. - Ross Currie
April 27th, 2011 1:42am

IIF function expects 3 parameters. First should be boolean, so I guess it should be something like IsPresent(employeeEndDate). Second is the value for true condition (the value I want if it's there) and third is the value for false condition (this new null column). If this new null column is empty in the CSV file, It doesn't appear for user objects in the connector space.
Free Windows Admin Tool Kit Click here and download it now
April 27th, 2011 1:56am

IIF function expects 3 parameters. First should be boolean, so I guess it should be something like IsPresent(employeeEndDate). Second is the value for true condition (the value I want if it's there) and third is the value for false condition (this new null column). If this new null column is empty in the CSV file, It doesn't appear for user objects in the connector space. Correct, that's the counter-intuitive bit. I think you'll find you don't need a new column... as per your OP's description, when the employeeEndDate is cleared from the CSV, it is deleted from the connectorspace. If you have parameter 3 as employeeEndDate, even though it is deleted from the connectorspace, FIM will import a null value, which will delete it from the MV. Edit: You WOULD need a new null column if you wanted to delete the metaverse value when the CS attribute IS present (ie, non-null). This does not seem to apply in your particular case - Ross Currie
April 27th, 2011 2:06am

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

Other recent topics Other recent topics