Groups with Static and Dynamic Members in FIMService

We had a business case whereby a filter couldn’t really create groups which catered for the purpose. We also needed to put in some static members (Explicit Members) in it.

Now by default a /Group in FIMService can either be Explicit or a Filter type group. But a Set allows you to have an explicit as well as filter on it.

WARNING: Many custom attributes are used for our purpose but you hopefully will get the gist of it

CREATE

So came up with a design for such groups (we identify them by Autogen and have an attribute called accountType)

  • Create a Set with Autogen-{GroupName} with an accountType = AutogenSet
  • Set the filter and explicit members needed on the set
  • Create a filter group with Autogen-{GroupName} with an accountType = AutogenGroup
  • Put the ResourceID of the new group in the set to an attribute called ‘connectedGroupObjectID’ and viceversa to ‘connectedSetObjectID’ – This it have relation between the group and set
  • Set the filter on this group as

CLEANUP

  • Create a auth workflow with delete resource and target =  [//Target/connectedSetObjectID]
  • Create a set which has ‘All Autogen Groups’
  • Create a MPR which ties the above i.e. when a delete resource happens for any in set ‘All Autogen Groups’ then run the Auth workflow which will delete the set as well

SCRIPT

Wrote a script so that these groups, sets and links can be created in one go using FIM/MIM Service Powershell Module.

NOTE

  • I assume user already knows the XPATH for his filter (Will help you on how to create it easily as well in a post coming soon).
  • Many custom attributes have been used in FIMService but you get the bigger picture and not necessarily needed for your environment.
  • I am really bad at powershell so don’t be surprised if you see some ‘what the hell did he do that for?’ moment 🙂 You will definitely find mistakes but hey.. works for me.. Still please point it out 🙂

LOGIC

This script was written by me quite specific for our environment and therefore contains a lot of custom attributes and logic. This is just to give an idea what we do / can do with the idea. I have decided not to dumb it down and present it as-is. If you get confused somewhere please do contact me or leave a comment

  • Asks for DisplayName (Mandatory)
  • Asks for a requestedAccountName (Mandatory in our env to generate sAMAccountName and AccountName)
  • Asks for a owner AccountName / uid (Mandatory in our environment to set as the owner of the group)
  • Asks if the Group will have a mail address (if so then we populate some additional attributes to provision to GoogleApps)
    • If Mail Enabled then asks for some additional attributes to be set like
      • Mail Prefix (to generate the mail address)
      • Posting Permission
      • To be hidden from Global Address List or not
      • Is it going to be used as a Security Group in AD (sets as Distribution else as MailEnabledSecurity)
    • If not then sets it as a Security Group
  • Asks for the XPATH Filter – then it goes and checks if it’s correct and does return some users back else exists.
  • Creates the Set and adds the above filter to it
  • Creates the Group
    • Sets the filter pointing to the set above
  • Links the two
  • Done

The only thing it doesn’t do is setting explicit members to the set which is done manually after creation.

 

To the sync side you will simply see one Group come out with Member attribute containing both ExplicitMembers and ComputedMembers and a combination.

Hope this helps someone in their “complex business” environment.

Composite write back to FIMService via Powershell

So if you have a large number of objects to update in FIMService it could be complicated..

Lithnet FIM/MIM Powershell Module makes it so much simpler..

Below is a script I used to say update all accounts which have “accountType” = oldaccounts and set “accountBlocked” to true (my custom schema).

Some explanations

  • I have set PageSize = 100 which means if you are returning more than that number process only 100 at a time..
  • I have set “-AttributesToGet” which gives me only the attribute what I want

See how easy is that? You can do multiple operations before save-resource and thus do a bunch of changes to say 1000 users and in 10 saves it will be done!!!

PS: As you can see its simple for demonstration and not doing any error handling etc..

Cosmetic Bug in MIM SP1 Portal Display (v4.4.1302)

So another day – another bug found by me (I do that a lot apparently and its a known issue with me in my team 😛 )

If you install MIM SP1 v4.4.1302 and open up the FIM Portal there is a cosmetic bug with IE/Edge and Firefox. This does not happen in Chrome

When you open up – say the users tab in maximized view you would see

 

But if you change the size of the browser the center image does not shift and skews the view

 

It’s been confirmed by Microsoft and will probably be in the bottom of their list and fixed in upcoming releases

Some Great Addons for Admins in FIM / MIM Space

So if you have been playing with Microsoft FIM (Forefront Identity Manager) / MIM (Microsoft Identity Manager) you would already happen to know its not the best user experience out of the box if you have a complex environment.

Meet LithNet: https://github.com/lithnet

A lot of tools written by MVP Ryan Newington under whom I have had the privilege to work with. Have helped with lot of testing thus most of the codes following in the blog will contain cmdlets from the above.

Some of the MOST helpful tools in the belt are (which I use pretty much everyday)

There are some other great tools there like UMARE, ACMA, GoogleApps Management Agent which includes powershell commands to manage googleapps and some cool new stuff coming which I am not able to talk about atm 😉

If you need any explanation on how to use them, do hit me up here or the developer.

Follow the dev @Twitter