locked
Disconnect join if joined attribute changes RRS feed

  • Question

  • I'm not sure if this question has been posted and answered previously but I thought I'd ask anyway.

    I have the following situation:

    MA1 - Joins based on employee number in MV and flows cardNumber

    MA2 - Joins based on cardNumber in MV and flows other attributes

    The problem I have is the cardNumber that is flown by MA1 above can change (re-issued) so the join that the MV object has to MA2 will need to be disconnected to make way for a new join from MA2. I have tried developing a process where I have 2 MV attributes (cardNumber and originalCardNumber) and created an IAF on MA1 to check for the existence of originalCardNumber in MV and if different to cardNumber in CS, deprovision connector in MA2 but I get a "connector is read-only" error.

    Is there a standard way of doing such a task?

    Monday, June 18, 2012 2:12 AM

Answers

  • Hi-

    You want to call Deprovision() on the connector which will cause it to disconnect. In order to do this, you need to make the call from your Provisioning code in a metaverse extension. In any case, this should be pretty straight forward to do.

    Your provisioning code is going to get called any time the metaverse object gets touched. This will happen when the cardNumber attribute in the metaverse gets updated due to a change in MA1. So, in your provisioning code, I'd grab the connector for MA2 and check if MA2cs[cardNumber] != mvEntry[cardNumber] then call MA2cs.Deprovision(). This will cause a disconnect (assuming that's the deprovisioning action in the MA properties), and from there the object will get re-evaluated for joining.


    My Book - Active Directory, 4th Edition
    My Blog - www.briandesmond.com

    • Proposed as answer by Paul Loonen Tuesday, July 10, 2012 4:10 AM
    • Marked as answer by UC Rob Wednesday, July 11, 2012 12:13 PM
    Monday, June 18, 2012 6:18 AM

All replies

  • Hi-

    You want to call Deprovision() on the connector which will cause it to disconnect. In order to do this, you need to make the call from your Provisioning code in a metaverse extension. In any case, this should be pretty straight forward to do.

    Your provisioning code is going to get called any time the metaverse object gets touched. This will happen when the cardNumber attribute in the metaverse gets updated due to a change in MA1. So, in your provisioning code, I'd grab the connector for MA2 and check if MA2cs[cardNumber] != mvEntry[cardNumber] then call MA2cs.Deprovision(). This will cause a disconnect (assuming that's the deprovisioning action in the MA properties), and from there the object will get re-evaluated for joining.


    My Book - Active Directory, 4th Edition
    My Blog - www.briandesmond.com

    • Proposed as answer by Paul Loonen Tuesday, July 10, 2012 4:10 AM
    • Marked as answer by UC Rob Wednesday, July 11, 2012 12:13 PM
    Monday, June 18, 2012 6:18 AM
  • Hi Brian,

    Thanks for your response. Your answer looks spot on from what i've read, however is there a way to implement such functionality in an MA extension instead of the MV extension? Without going into it too much, I am unable to modify the MV extension code at the minute. A suggestion has been thrown around to try and use the FilterForDisconnection technique on the MA. I'm not sure if this will work, but I am trying to find some examples out there on how I could go about doing this.

    Once again appreciate the assistance :)

    Cheers.

    Tuesday, June 19, 2012 5:25 AM
  • I can't think of a way to do this in that entry point given you don't have access to the MVEntry object.

    My Book - Active Directory, 4th Edition
    My Blog - www.briandesmond.com

    Tuesday, June 19, 2012 1:53 PM
  • Hi Brian,

    I ended up gaining access to the MV Extension and sorted it out based on your feedback.

    Thanks for your help!

    Wednesday, July 11, 2012 12:13 PM