9 Replies Latest reply on Oct 19, 2009 6:51 PM by Kevin Pinsky

    Change of Status value in OIM


      I have created an GTC for trusted reconcilaition with Oracle Database table. In Mapping, I mapped Status column of my database table to Status field of OIM. I am also defined Lookup for status variable in Design COnsole and mentioed the same in Mapping.

      WHen I changed the Status of an user to 'Disable' and ran trusted reconciliation. The value is reflecting against user's status in reconcilation table, but the same status (Disable) is not reflecting OIM?

      What could be the reason and how to solve this?

        • 1. Re: Change of Status value in OIM
          Kevin Pinsky
          Performing a recon event is like running an updateUser API against the OIM user profile. I think updating the status does trigger the actualy "Disable User" or "Enable User". I would suggest you reconcilie the status to another field called like "Target Status". Create a trigger on this to run the enable or disable API instead.

          • 2. Re: Change of Status value in OIM
            Rajiv Dewan
            Have you tried with another status like Deleted or DELETED or DISABLED or Disabled ?

            Try with this, it should work.
            • 3. Re: Change of Status value in OIM
              Hi Kevin,

              Thank you for quick response.

              Can you please give me a detailed/elaborate description on how to go ahead?

              • 4. Re: Change of Status value in OIM
                Rajiv Dewan
                As per Kevin's suggestion

                Just create UDF with name user Status.

                And create a task in Xellerate User process defn Change User Status. Attach your java code in that task to Enable or Disable the user using User API.

                Create entry of this Task in Lookup.USR_PROCESS_TRIGGERS.

                It will work.

                This is Kevin's suggestion, I am just explaining litle bit.

                Correct me Kevin, if I i am missing something.
                • 5. Re: Change of Status value in OIM
                  I have tried with status changed to 'DELETED'...

                  But same thing is happening...

                  Not getting status updated to Deleted in OIM

                  • 6. Re: Change of Status value in OIM
                    Kevin Pinsky
                    Did you implement my suggestion? Did you map the reconciled value to a User Defined Field? The when you create your new task name on your lookup trigger for this field, add this Process Task to your Xellerate User provisioning process definition. In your adapter, you will want an if statement for all the possible values to run either the Enable User, Disable User, or Delete User.

                    • 7. Re: Change of Status value in OIM
                      Daniel Gralewski-Oracle
                      Have you created the status field mapping with "Mapping Action" set to "Creating Mapping With Translation" in the staging area?

                      I have a flat file GTC connector for recon and the Status maping between my trusted system and OIM is working with no problems.

                      • 8. Re: Change of Status value in OIM
                        I have a similar issue as the original post. I've used the GTC to connect with a CSV flat file. User creation from the flat file is fine. All the OIM profile required fields get pulled in, as well as some additional fields. I'm in the process of trying to get a field in the flat file (column header "active") to update the user's OIM profile status.

                        Here is how I've configured OIM to pull from the flat file and hopefully (though currently unsuccessfully) update the OIM status.

                        I created a Lookup Definition as follows:
                        a.     Code field = Lookup.OracleHR_GTC.Status
                        b.     Field field = USR_STATUS
                        c.     Lookup Type radio button = Selected.
                        d.     Required checkbox = Unchecked
                        e.     Group field = OracleHR_GTC

                        Lookup Code Information sub-table
                        Code Key     Decode
                        1     Active
                        2     Disabled
                        3     Deleted

                        I then opened the GTC connector in the OIM Admin & User console and modified the Reconciliation Staging field "active" as follows:

                        Enabled = “Create Mapping With Translation”
                        On the Input Data Set, selected "Source" and Field Name "active"
                        On the Lookup Code Name, selected "Literal" and typed the lookup def name “Lookup.OracleHR_GTC.Status”

                        When I run the scheduled task for the GTC connector I receive the following error:

                        *DEBUG,16 Oct 2009 20:31:29,707,[XELLERATE.GC.PROVIDERREGISTRATION], provider resp codes{TRANSLATION_COLUMN_NOT_FOUND=Lookup Code does not contain any entry pair of decoded-encoded value, TRANSLATION_INVALID_LOOKUP=Lookup Code does not exist in OIM, TRANSLATION_API=An error occurred in translation provider while executing the OIM API, ONETOONE_CLASS_CAST=Attempted to cast an object to a subclass of which it is not an instance, ONETOONE_INPUTSTR_MISSING=Input String is Missing}*

                        If I go into the Design Console - Reconciliation Manager, the test user has all the attributes, including the "active" field, which is correctly being translated from (1,2,3) into the decode values (Active, Disabled, Deleted), but the OIM status is not being updated.

                        Where am I going wrong? Is it a bad lookup definition or am I missing a task somewhere to perform the user change when it is modified?
                        • 9. Re: Change of Status value in OIM
                          Kevin Pinsky
                          The quickest solution i can think of if its not working for you is to do the following:

                          Create a UDF on your User Profile to map the status value.
                          Create a post-insert entity adapter to check if the user is disabled to disable their account immediately after creation.
                          Add the UDF to the user form trigger lookup.
                          Add the process task to the Xellerate User provisioning process definition. Create an adapter that has an input of the status field, and either use the enable or disable user api.