4 Replies Latest reply: Feb 7, 2013 2:54 AM by Nagaraju Chowdary RSS

    Custom ICF Connector - Response Code Mapping

    909830
      Hi all ,

      I am developing an icf connector for a custom built application , I have created the adapters and mapped the return value to the response code in the process task .

      I am returning UID as the userid of the user created through the provisioning process . But i am getting the folllowing error

      Thread Id: 57     Time: 2012-05-09 11:27:00.745     Class: org.identityconnectors.framework.api.operations.CreateApiOp     Method: create     Level: OK     *Message: Return: Attribute: {Name=__UID__, Value=[user19]}*
      Thread Id: 57     Time: 2012-05-09 11:27:00.749     Class: oracle.iam.connectors.icfcommon.service.oim9.OIM9Provisioning     Method: setFormField     Level: OK     Message: Enter
      Thread Id: 57     Time: 2012-05-09 11:27:00.752     Class: oracle.iam.connectors.icfcommon.service.oim9.OIM9Provisioning     Method: getFieldName     Level: OK     Message: Enter
      Thread Id: 57     Time: 2012-05-09 11:27:00.857     Class: oracle.iam.connectors.icfcommon.prov.ICProvisioningManager     Method: createObject     Level: ERROR     Message: Error while creating user
      java.lang.IllegalArgumentException: null field label doesn't exist
           at oracle.iam.connectors.icfcommon.service.oim9.OIM9Provisioning.getFieldName(OIM9Provisioning.java:158)
           at oracle.iam.connectors.icfcommon.service.oim9.OIM9Provisioning.setFormField(OIM9Provisioning.java:70)
           at oracle.iam.connectors.icfcommon.prov.ICProvisioningManager.createObject(ICProvisioningManager.java:123)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

      What should i be returning from the create user method and what mappings do I need to do in the Provisioing tasks .

      I am mentioned the returnValue in the provattr lookup and also created the field in the process from .

      Any help will be appreciated .

      Cheers
      Eshanmug
        • 1. Re: Custom ICF Connector - Response Code Mapping
          Kuldeep
          Hi,
          It seems from your log,
          1. Your java code is not able to create the user in target.
          2. Ideally a string value should return from the adapter (you can return any thing) for create user for a building connector. This string is response code.
          3. If you are returning uid : map return value to a filed lable of same type (integer to integer or String to String).

          thanks,
          Kuldeep
          • 2. Re: Custom ICF Connector - Response Code Mapping
            909830
            Hi Kuldeep ,

            thanks for your update , the application user is getting created correctly , its just the response code mapping I am struggling with .

            public Uid create(ObjectClass objectClass, Set<Attribute> attrSet,OperationOptions operationOptions) , so the create method of the ICF connector framwork only returns a response of type UID , so we need to return something of type uid .



            Cheers
            Easwaran
            • 3. Re: Custom ICF Connector - Response Code Mapping
              Abhishek Tripathi
              Create will return the following response codes:

              Response | Status
              ==============
              SUCCESS | C
              CONFIGURATION_ERROR | R
              CONNECTION_FAILED | R
              UNKNOWN_UID | R
              OBJECT_ALREADY_EXISTS | R
              CONNECTOR_EXCEPTION | R
              ERROR | R
              VALIDATION_FAILED | R
              • 4. Re: Custom ICF Connector - Response Code Mapping
                Nagaraju Chowdary
                hi
                The code returning the UID value at the end of the ICF create Operation on SPI side

                So you need to map the UID to the field in the process Form

                Create a field like ReturnID in the process form and map this filed to the __UID__ in the provisioning attribute lookup

                ReturnID|__UID__

                Then ur code will work and u will get success response back if every thng fine in spi side

                regards

                chowdary

                Edited by: Nagaraju Chowdary on Feb 7, 2013 12:54 AM