none
Importing multiple objects from HR, into a single Person.MV object? RRS feed

  • Question

  • Hi,

    We have an HR system with numerous Object Classes, with many attributes. Object Classes include:

    • Person (details about the person, like firstname, lastname, etc)
    • Position (details of all the positions in the company, including manager for this position)
    • Occupancy (details on who has been assigned a position, including start and end dates for the position)
    • Location (location details, including country, state, etc)

    The HR system is accessible via a web service, and because these are 4 different object classes, MIM may require 4 separate MAs to pull the data into 4 relevant Object Classes in the MIM MV (Person (existing object), Position (new object), Occupancy (new object) and Location(new object)).

    We need the Person MV object class attributes to be populated based on the other 3 object classes and the values in their attributes (e.g location, occupied position) so we can create some workflows, assign people to Groups, and for some other RBAC requirements.

    How do we take values/attributes from other Objects (position, occupancy, location) and inject them into the Person Object class in the MV?

    Thank you in advance,

    SK

    Wednesday, March 27, 2019 9:48 AM

Answers

  • You should look in the direction of writing your own MA/Connector (ECMA or Powershell). You can then write your own logic and "join" the different objects together inside your code and expose a constructed "person" object containing the values needed from all the object types you mention. The sync engine then only sees one object type from your HR source - the person object.

    If you are more of an SQL person, you can fetch all the data from the webservices with SSIS (SQL Integration Service) and stage all data in tables for each object type. You can then write your own views on top of these tables and expose a person object containing data from all object types stored in your staging tables. In MIM Sync engine, you use the built in SQL Connector for importing data from your view(s).

    You can also configure 4 different MA's as you mention and use join rules to join each of the object types to the person object in MV - but all depends on how your data looks like (sounds like you can get a lot of "duplicates" from some of the object types).

    • Marked as answer by Shim Kwan Thursday, March 28, 2019 10:23 PM
    Wednesday, March 27, 2019 12:03 PM
  • That's correct. Your (powershell) code will do all the fetching/joining/transformation/filtering needed before it sends the "constructed" person object to the sync engine/connector space.

    Of course there is some overhead using powershell over writing your own ECMA in C#, but it all depends on your volume/number of objects. And of course what kind of logic/processing you have inside your code. One other factor is how often you need to run import jobs against your source and how long your import jobs take.

    I prefer almost always to code my connectors in Powershell over ECMA, but thats me. It's simple and fast to develop, debug and maintain later. 


    • Marked as answer by Shim Kwan Thursday, March 28, 2019 10:23 PM
    Thursday, March 28, 2019 10:51 AM

All replies

  • You should look in the direction of writing your own MA/Connector (ECMA or Powershell). You can then write your own logic and "join" the different objects together inside your code and expose a constructed "person" object containing the values needed from all the object types you mention. The sync engine then only sees one object type from your HR source - the person object.

    If you are more of an SQL person, you can fetch all the data from the webservices with SSIS (SQL Integration Service) and stage all data in tables for each object type. You can then write your own views on top of these tables and expose a person object containing data from all object types stored in your staging tables. In MIM Sync engine, you use the built in SQL Connector for importing data from your view(s).

    You can also configure 4 different MA's as you mention and use join rules to join each of the object types to the person object in MV - but all depends on how your data looks like (sounds like you can get a lot of "duplicates" from some of the object types).

    • Marked as answer by Shim Kwan Thursday, March 28, 2019 10:23 PM
    Wednesday, March 27, 2019 12:03 PM
  • Thx Fredrik, sounds like we have a lot of options to investigate :)

    much appreciated

    Wednesday, March 27, 2019 5:45 PM
  • Looking at the first option - PowerShell MA...

    if data is sourced from 3 different objects (and their respective attributes), is the idea that the PowerShell MA on-the-fly creates and maintains and transforms the person data in the PShell MA Connector Space with the correct information (based on input from the other 2 object classes)?

    What kind of processing overhead are we talking about?


    • Edited by Shim Kwan Thursday, March 28, 2019 2:14 AM
    Thursday, March 28, 2019 1:34 AM
  • That's correct. Your (powershell) code will do all the fetching/joining/transformation/filtering needed before it sends the "constructed" person object to the sync engine/connector space.

    Of course there is some overhead using powershell over writing your own ECMA in C#, but it all depends on your volume/number of objects. And of course what kind of logic/processing you have inside your code. One other factor is how often you need to run import jobs against your source and how long your import jobs take.

    I prefer almost always to code my connectors in Powershell over ECMA, but thats me. It's simple and fast to develop, debug and maintain later. 


    • Marked as answer by Shim Kwan Thursday, March 28, 2019 10:23 PM
    Thursday, March 28, 2019 10:51 AM
  • Appreciate your time Fredrik, thank you
    Thursday, March 28, 2019 10:23 PM