Objective
Test a rule expression with a specific user from the the HyperVerse Graph - namely one where the account name is test_user.
Note: This builds on the use of the generic "Object Record" as a good starting point for any search.
From here adjustments can be made such as
- Changing Data Type
- Changing the Value Rule to an expression - see below.
Expression to test
If(DEMO.targetAddress, Contains(special.Environment.MyDomains, Split(LowerCase(DEMO.targetAddress), "@").-1), false)
Problem
Unexpected final value when syncing user "test_user" for attribute targetAddress.
Eventual Outcome
A Full data sync had happened over the weekend in UAT and the HyperVerse was now stale. I was not expecting targetAddress to be null in the HyperVerse, nor for unexpected flag values.
Investigation
- Located the object in the time traveller and made the DEMO silo the context silo:
- Ran a sync preview and inspected the Process Actions
- Not expecting to see any change with the Import Settings, inspected the corresponding Rule Results:
Rule Result Details
Include Deleted Entries | No | ||||||||||
Blocked by Throttle | No | ||||||||||
Scope Results |
|
||||||||||
Calculated Data |
|
||||||||||
Staged Changes |
|
||||||||||
Precedence Replacements | None |
Revised Approach
Suspecting a possible issue with the use of "Contains" for the intersection of 2 sets (which was misguided because I was thinking of multivalue proxyAddresses not single value targetAddress), I wanted to be able to test the hasMail IAF rule in isolation.
- Started with the Rule Tester using a generic approach in Use Rule Tester to investigate a Silo object
- Changed the Data Type to HyperSync Graph
- Changed the Value Rule to the expression above, namely:
If(DEMO.targetAddress, Contains(special.Environment.CommercialDomains, Split(LowerCase(DEMO.targetAddress), "@").-1), false) - Clicked Render - returned 1 object with Rule Value == false
This was consistent with the rule results above - i.e. no change, when I was expecting there to be a value based on what I was seeing in MIM, namely:
targetAddress,SMTP:test_user@sidmdemo.mail.onmicrosoft.com,DEMO,string,11/30/2022 7:20:27 PM
- There had been no change since 11/30/2022 … so I wasn't expecting one now …
- Progressively broke down the expression:
Contains(special.Environment.Domains, Split(LowerCase(DEMO.targetAddress), "@").-1): False-
-
- special.Environment.Domains
sidmdemo.onmicrosoft.com
sidmdemo.mail.onmicrosoft.com
-
- Contains(special.Environment.Domains,"sidmdemo.mail.onmicrosoft.com"): TRUE
- Contains(special.Environment.Domains,"a" "b" "c" "sidmdemo.mail.onmicrosoft.com"): TRUE
Note: at this point it appears that contains works as an intersection test - useful for proxyAddresses but unnecessary for targetAddress !!!
-
-
-
- Split(LowerCase(DEMO.targetAddress), "@"): Null
- DEMO.targetAddress: Null
- HV.targetAddress: Null
… at this point I was confused, and at this point returned to the MIM Sync console to investigate current state.
-
-
- Here I deduced I should run delta imports for DEMO AD management agents, and this detected unexpected changes.
- Checked to see if any pending changes were present on the MIM MV object, and sure enough there were!
- Deduced that the sync rule was actually OK, and that instead the underlying directory data had indeed been changed and needed to be re-scanned.
Comments
0 comments
Please sign in to leave a comment.