Friday, July 18, 2014

OVD 11.1.1.7.0 Add Instance

In this post, I will cover the steps required to add an instance of OVD to an existing OVD installation home.

This kind of configuration is specially helpful in scenario where you want to add instances for load balancing or to create an instance for testing etc.

My existing OVD setup was 11.1.1.7.0.

ORACLE_HOME=C:\Oracle\Middleware\Oracle_IDM2
ORACLE_INSTANCE=C:\Oracle\Middleware\asinst_2

set of existing running processes

                                                                                                                                              

we will have to use the opmnctl command inside ORACLE_INSTANCE. Also weblogic admin server must be running prior to adding an instance as the command connects to weblogic server to register the component.



opmnctl.bat createcomponent  -componentName ovd2 -componentType OVD -admin cn=orcladmin -isAdminSSL true -ovdAdminPort 8900   -namespace dc=mydomain,dc=com -ldapPort 6502 -ldapSport 7502



Command requires login to weblogic admin server (Deepak-PC.mydomain.com):
  Username: weblogic
  Password:

Creating empty component directories...Done
Provisioning OVD files for ovd2
  OVD creation in progress
  Creating OVD specific directories
  Copying Configuration Files
  Registering OVD Ports
  Updating OVD Admin Password
OVD Admin Password:
  Setting CSF values
  Updating Configuration Files
  Adding opmn Snippet
  Setting proxy mbean information
Registering ovd2 component
Command succeeded.


                                                                                                                                                                                                    


Also while starting the processes i found out that my computer has changed the timezone.

commands to fix that error

C:\Oracle\Middleware\asinst_2\EMAGENT\EMAGENT\bin>emctl resetTZ agent
Oracle Enterprise Manager 10g Release 5 Grid Control 10.2.0.5.0.
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
Updating C:\Oracle\Middleware\asinst_2\EMAGENT\EMAGENT/sysman/config/emd.properties...
Successfully updated C:\Oracle\Middleware\asinst_2\EMAGENT\EMAGENT/sysman/config/emd.properties.
Login as the em repository user and run the  script:
exec mgmt_target.set_agent_tzrgn('Deepak-PC.mydomain.com:5162','Australia/Sydney')
and commit the changes
This can be done for example by logging into sqlplus and doing
SQL> exec mgmt_target.set_agent_tzrgn('Deepak-PC.mydomain.com:5162','Australia/Sydney')
SQL> commit


                                                                                                                                                                                             
                                                                                                                                                                                               

Start all the opmn processes now



You can use ODSM to login to OVD now


















                                                                                                                                                                                   
                                                                                                                                                                                  

Weblogic em console view

                                                                                 


Tuesday, May 27, 2014

Sun Identity Manager to Oracle Identity Manager Migration

This post is a work in progress ....

In this post I will talk about the migration from Sun Identity Manager to Oracle Identity Manager Environment.

The target OIM version which I am considering is 11g R2 PS2 (11.1.2.2.0) which is most recent as of this writing.

Well to start off with let just consider a feature by feature comparison of the 2 products.

Let us first look at what all things need to be migrated if we want to move from Sun IdM to Oracle IdM.

Data - Users, Orgs, Roles, Audit Data, Operational Data, Passwords, Challenge Questions & Answers
Configuration - Resources, Connectors, Workflows, Forms, UI, Password Polices, Access Policies, XPRESS Code,


Here is a Diagram of Sun Identity Manager Component Architecture




                                                                                                                                                              

and here is a diagram of OIM component architecture





                                                                                                                                                                 

I will break down the different development artifacts and way to go about it while doing the migration

  1. UI - SIM uses jsp as its view technology. It was easier so complicated UI could be built as the developer saw it fit. OIM uses adf and far more complex way of doing the UI requirements.
  2. Approval Workflow - SIM used xpress based workflows where UI can be embedded directly into workflows and you could achieve any flow by coding for it. OIM has few different component like SOA composite, notification, escalation reminders etc but few things like form cannot be directly inserted wherever we feel like to present customized look and feel. There are lot of out-of-the-box which we will have to use when they are migrated to OIM
  3. Forms in SIM are a way to present data to end user using html components. There are lot of triggers which can attached to create javascript like affects.
  4. Access Policies - There is no direct equivalents in SIM for Access Policy in OIM. though resource can be directly assigned to roles for role based access policy.
  5. Rules - Role Membership rules are missing in SIM though similar equivalents can be developed.
  6. Roles - In SIM there are various catagories of roles but essentially they achieve the same goal. SIM roles can be directly mapped to OIM roles.
  7. Resources vs. Application Entities - In SIM a resource modeled a physical system with connection details where the provisioning and reconciliation operations were performed.  Approval and Provisioning workflows worked in top of these. In OIM application instances which consists of RO + ITR represented both but within AIs to achieve that effect. 
  8. Connectors - SIM connectors though java based were created with SIM framework in mind wherein the CRUD events were triggered based on standardized naming convention. In OIM, the connector operations are mapped individually wherein what class method will be triggered on these CRUD operations were configured regardless of any strict naming convention. The connector classes are ordinary java classes with 1to1 mapping of an event to a method. SIM connector classes implements and extends certain top level classes so that method could be automatically triggered based on event type. SIM Connectors cannot be used when migrating to OIM and new Out-of-the-box oim connectors needs to be used.
  9. Data Access - In SIM target end systems data of the users are fetched in real time  but in OIM the data that is used for display is what was last stored during provisioning or reconciliation operation in the process forms.
  10. Support for attestation - Present in OIM not in SIM.
  11. Deferred Task Scanner was feature that allowed to trigger any kind of workflow on a later date one-time or a regular basis in SIM. To achieve something similar we have create scheduled job and task in OIM.
  12. Views - SIM offered views of all standard entities like user, org, roles etc which can be checked out and data can be accessed in forms, emails or any business workflows. OIM offers API to do something similar.
  13. APIs - Most of programming activities in SIM are done via XPRESS code but in OIM we have to make of standard java api to accomplish these.
  14. Reports - SIM offered out-of-the-box reports within the product itself and also customized reports could be developed without requiring any additional product. OIM 11g uses BI Publisher to view all out-of-the-box reports or to develop custom ones.
  15. Approval Engine - In SIM the approval engine is within the product itself but OIM 11g requires SOA Server as its approval engine.
  16. There is no equivalent of Sandbox feature for UI changes within OIM 11g to SIM.
  17.  All the connectors to end systems were self contained within SIM and did not require any additional download unlike OIM wherein the connector needs to downloaded separately and installed.








Monday, May 19, 2014

OAM 11g R2 PS2 (11.1.2.2) Cannot Open The Federation Settings Page, MBean Operation Access Denied

After I changed my system store to OUD via oamconsole
and
configured that as Security Provider in security realms in weblogic console.
I was receiving the below error message.

Cannot Open The Federation Settings Page, MBean Operation Access Denied

This was stopping to access any federation settings.

The fix for it


1. Log in to the WebLogic Administration Server Console
2. In the left pane of the console, click Security Realms.
3. On the Summary of Security Realms page, click myrealm under the Realms table.
4. On the Settings page for myrealm, click the Roles & Policies tab.
5. On the Realm Roles page, expand the Global Roles entry under the Roles table. This brings up the entry for Roles.
6. Click the View Role Conditions link next to Admin Role
7. On the Edit Global Roles page, under Role Conditions, click Add Conditions.
8. On the Choose a Predicate page, select Group from the predicates list and click Next.
9. On the Edit Arguments Page, specify the admin group specified in OUD store (while setting it to system store in oamconsole) in the Group Argument field and click Add.
10. Click Finish to return to the Edit Global Rule page.
11. The Role Conditions now show the the admin group specified in OUD store Group as an entry.
12. Click Save to finish adding the Admin role to the admin group specified in OUD store Group.


Screen shot below






OIM 11g R2 PS2 List of all Metadata Files

In this post I will provide the list of all metadata files that are there in the OIM MDS and the command to do so.
Exporting all files is specially handy when you are troubleshooting any issues with event handlers or want to understand where all the settings related to certain features are located.

Please create a folder as per  toLocation below before proceeding


C:\>cd Oracle\Middleware\Oracle_IDM1\common\bin

C:\Oracle\Middleware\Oracle_IDM1\common\bin>wlst.cmd

wls:/offline> connect()
Please enter your username :weblogic
Please enter your password :
Please enter your server URL [t3://localhost:7001] :
Connecting to t3://localhost:7001 with userid weblogic ...
Successfully connected to Admin Server 'AdminServer' that belongs to domain 'base_domain'.

Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.

wls:/base_domain/serverConfig> exportMetadata(application='OIMMetadata', server='oim_server1', toLocation='C:/Oracle/Middleware/Oracle_IDM1/exportAllM
etaData')
Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help(domainRuntime)

Executing operation: exportMetadata.

Operation "exportMetadata" completed. Summary of "exportMetadata" operation is:
List of documents successfully transferred:

/adf/META-INF/connections.xml
/custom/metadata/LDAP User/LDAPAccountSchema.xml
/custom/metadata/MyDisconnectedApp/MyDisconnectedApp.xml
/db/DBAT Connector Lookup Reconciliation.xml
/db/DBAT Trusted User
/db/FLATFILEGTC_GTC
/db/FLATFILEGTC_GTC.xml
/db/GTC/ProviderDefinitions/CSVReconFormat.xml
/db/GTC/ProviderDefinitions/Concatenation.xml
/db/GTC/ProviderDefinitions/DBProvisioningFormat.xml
/db/GTC/ProviderDefinitions/DBProvisioningTransport.xml
/db/GTC/ProviderDefinitions/DBReconFormat.xml
/db/GTC/ProviderDefinitions/DBReconTransport.xml
/db/GTC/ProviderDefinitions/IsBlankOrNullValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsByteValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsDoubleValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsFloatValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsInRangeValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsIntValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsLongValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsShortValidatorProvider.xml
/db/GTC/ProviderDefinitions/IsValidDateValidatorProvider.xml
/db/GTC/ProviderDefinitions/MatchRegexpValidatorProvider.xml
/db/GTC/ProviderDefinitions/MaxLengthValidatorProvider.xml
/db/GTC/ProviderDefinitions/MinLengthValidatorProvider.xml
/db/GTC/ProviderDefinitions/OnetoOne.xml
/db/GTC/ProviderDefinitions/SPMLProvisioningFormat.xml
/db/GTC/ProviderDefinitions/SharedDriveReconTransport.xml
/db/GTC/ProviderDefinitions/Translation.xml
/db/GTC/ProviderDefinitions/ValidateDateFormat.xml
/db/GTC/ProviderDefinitions/WSProvisioningTransport.xml
/db/GTC/Schema/Providers-def.xsd
/db/GTC/Schema/pstc_spmlv2_core.xsd
/db/HR APPLICATION TABLES_GTC
/db/HR APPLICATION TABLES_GTC.xml
/db/LDAP Connector Lookup Reconciliation.xml
/db/LDAP Connector Search Delete Reconciliation.xml
/db/LDAP Connector Search Incremental Reconciliation.xml
/db/LDAP Connector Sync Reconciliation.xml
/db/LDAP Group
/db/LDAP Organisation Unit
/db/LDAP Role
/db/LDAP Trusted User
/db/LDAP User
/db/MyDisconnectedApp
/db/RAMLS_FLATFILEGTC_GTC.xml
/db/RA_DBATTRUSTEDUSER4753023.xml
/db/RA_FLATFILEGTC_GTC.xml
/db/RA_HRAPPLICATIONTA5D0970E2.xml
/db/RA_LDAPGROUPAD314A6.xml
/db/RA_LDAPORGANISATIO9223D0D1.xml
/db/RA_LDAPROLE9503816F.xml
/db/RA_LDAPTRUSTEDUSERC570B56D.xml
/db/RA_LDAPUSER9504ECC4.xml
/db/RA_LDAP_GRP.xml
/db/RA_LDAP_ROL.xml
/db/RA_MYDISCONNECTEDAPP.xml
/db/RA_XELLERATEUSER37B8BD73.xml
/db/RA_XELLERATE_ORG.xml
/db/Xellerate Organization
/db/Xellerate User
/db/form-metadata/FormMetaData.xml
/db/identity/entity-definition/OIMOrgDataProvider.xml
/db/identity/entity-definition/OIMPendingRoleGrantRelationProvider.xml
/db/identity/entity-definition/OIMRoleCategoryDataProvider.xml
/db/identity/entity-definition/OIMRoleDataProvider.xml
/db/identity/entity-definition/OIMRoleGrantRelationProvider.xml
/db/identity/entity-definition/OIMRoleRelationshipRelationProvider.xml
/db/identity/entity-definition/OrgUserRelationProvider.xml
/db/identity/entity-definition/Organization.xml
/db/identity/entity-definition/OrganizationUserRelationship.xml
/db/identity/entity-definition/PendingRoleUserMembership.xml
/db/identity/entity-definition/Role.xml
/db/identity/entity-definition/RoleCategory.xml
/db/identity/entity-definition/RoleRoleRelationship.xml
/db/identity/entity-definition/RoleUserMembership.xml
/db/identity/entity-definition/UserDataProvider.xml
/db/oim-config.xml
/db/task.xml
/file/RECON_ROLE_OLDSTATE.xml
/file/RECON_USER_OLDSTATE.xml
/file/User.xml
/file/async-messaging.xml
/file/recon/profile.xsd
/metadata/UpgradeMetadata.xml
/metadata/iam-features-OIMMigration/EventHandlers.xml
/metadata/iam-features-Scheduler/EventHandlers.xml
/metadata/iam-features-accesspolicy/event-definition/EventHandlers.xml
/metadata/iam-features-accesspolicy/model-data/AccessPolicyBasedApplicationInstanceProvisioning.xml
/metadata/iam-features-accesspolicy/model-data/AccessPolicyBasedProvisioning.xml
/metadata/iam-features-asyncwsclient/EventHandlers.xml
/metadata/iam-features-asyncwsclient/plugin.xml
/metadata/iam-features-autoroles/event-definition/EventHandlers.xml
/metadata/iam-features-callbacks/CallbackConfiguration.xjb
/metadata/iam-features-callbacks/CallbackConfiguration.xsd
/metadata/iam-features-catalog/CatalogableEntities.xml
/metadata/iam-features-catalog/EventHandlers.xml
/metadata/iam-features-certification/event-definition/EventHandlers.xml
/metadata/iam-features-configservice/event-definition/EventHandlers.xml
/metadata/iam-features-configservice/plugin.xml
/metadata/iam-features-identity/IdentityNotificationEvent.xml
/metadata/iam-features-identity/event-definition/EventHandlers.xml
/metadata/iam-features-identity/plugin.xml
/metadata/iam-features-ldap-sync/LDAPContainer.xml
/metadata/iam-features-ldap-sync/LDAPDataProvider.xml
/metadata/iam-features-ldap-sync/LDAPRelationshipProvider.xml
/metadata/iam-features-ldap-sync/LDAPRepository.xml
/metadata/iam-features-ldap-sync/LDAPRole.xml
/metadata/iam-features-ldap-sync/LDAPRoleMembership.xml
/metadata/iam-features-ldap-sync/LDAPUser.xml
/metadata/iam-features-ldap-sync/LDAPUserMembership.xml
/metadata/iam-features-ldap-sync/OVDInstance.xml
/metadata/iam-features-ldap-sync/ReconScheduleTasks.xml
/metadata/iam-features-ldap-sync/plugin.xml
/metadata/iam-features-notification/EventHandlers.xml
/metadata/iam-features-notification/NotificationEvent.xsd
/metadata/iam-features-notification/NotificationProviders.xml
/metadata/iam-features-oimupgrade/UpgradeMetadata.xml
/metadata/iam-features-oimupgrade/mds-metadata-mergeclass-map.xml
/metadata/iam-features-oimupgrade/mds-transfer-config.xml
/metadata/iam-features-passwordmgmt/event-definition/EventHandlers.xml
/metadata/iam-features-passwordmgmt/notification/ResetPasswordEvent.xml
/metadata/iam-features-provisioning/event-definition/EventHandlers.xml
/metadata/iam-features-provisioning/model-data/DisableAccountRequest.xml
/metadata/iam-features-provisioning/model-data/EnableAccountRequest.xml
/metadata/iam-features-provisioning/model-data/ModifyAccountRequest.xml
/metadata/iam-features-provisioning/model-data/ModifyEntitlement.xml
/metadata/iam-features-provisioning/model-data/ProvisionApplicationInstance.xml
/metadata/iam-features-provisioning/model-data/ProvisionEntitlement.xml
/metadata/iam-features-provisioning/model-data/RevokeAccountRequest.xml
/metadata/iam-features-provisioning/model-data/RevokeEntitlement.xml
/metadata/iam-features-push-identity-toldap/ScheduleTasks.xml
/metadata/iam-features-reconciliation/entity-definition/OperationalDB.xml
/metadata/iam-features-reconciliation/entity-definition/RDBMSChildDataProvider.xml
/metadata/iam-features-reconciliation/entity-definition/RDBMSDataProvider.xml
/metadata/iam-features-reconciliation/entity-definition/RDBMSRepository.xml
/metadata/iam-features-reconciliation/entity-definition/RECON_TABLES.xml
/metadata/iam-features-reconciliation/event-definition/EventHandlers.xml
/metadata/iam-features-reconciliation/plugin.xml
/metadata/iam-features-request/ApprovalCategory.xml
/metadata/iam-features-request/event-definition/EventHandlers.xml
/metadata/iam-features-request/notification/BulkRequestCreationEvent.xml
/metadata/iam-features-request/notification/CreateUserEvent.xml
/metadata/iam-features-request/notification/RequestCreationEvent.xml
/metadata/iam-features-request/notification/RequestStatusChangeEvent.xml
/metadata/iam-features-request/plugin.xml
/metadata/iam-features-requestactions/common/metadata/event-definition/EventHandlers.xml
/metadata/iam-features-requestactions/event-definition/EventHandlers.xml
/metadata/iam-features-requestactions/model-data/AssignRolesDataset.xml
/metadata/iam-features-requestactions/model-data/AssignRolesRequest.xml
/metadata/iam-features-requestactions/model-data/CreateRoleDataSet.xml
/metadata/iam-features-requestactions/model-data/CreateRoleRequestModel.xml
/metadata/iam-features-requestactions/model-data/CreateUserDataSet.xml
/metadata/iam-features-requestactions/model-data/CreateUserRequestModel.xml
/metadata/iam-features-requestactions/model-data/DeleteRoleDataSet.xml
/metadata/iam-features-requestactions/model-data/DeleteRoleRequestModel.xml
/metadata/iam-features-requestactions/model-data/DeleteUserDataset.xml
/metadata/iam-features-requestactions/model-data/DeleteUserRequest.xml
/metadata/iam-features-requestactions/model-data/DeprovisionResourceRequest.xml
/metadata/iam-features-requestactions/model-data/DisableProvisionedResourceRequest.xml
/metadata/iam-features-requestactions/model-data/DisableUserDataset.xml
/metadata/iam-features-requestactions/model-data/DisableUserRequest.xml
/metadata/iam-features-requestactions/model-data/EnableProvisionedResourceRequest.xml
/metadata/iam-features-requestactions/model-data/EnableUserDataset.xml
/metadata/iam-features-requestactions/model-data/EnableUserRequest.xml
/metadata/iam-features-requestactions/model-data/HeterogeneousRequest.xml
/metadata/iam-features-requestactions/model-data/ModifyResourceRequest.xml
/metadata/iam-features-requestactions/model-data/ModifyRoleDataSet.xml
/metadata/iam-features-requestactions/model-data/ModifyRoleRequestModel.xml
/metadata/iam-features-requestactions/model-data/ModifyUserDataset.xml
/metadata/iam-features-requestactions/model-data/ModifyUserRequestModel.xml
/metadata/iam-features-requestactions/model-data/ProvisionEntitlementsDataset.xml
/metadata/iam-features-requestactions/model-data/ProvisionResourceRequest.xml
/metadata/iam-features-requestactions/model-data/RemoveRolesDataset.xml
/metadata/iam-features-requestactions/model-data/RemoveRolesRequest.xml
/metadata/iam-features-requestactions/model-data/ResourceCommonDataset.xml
/metadata/iam-features-requestactions/model-data/RevokeEntitlementsDataset.xml
/metadata/iam-features-requestactions/model-data/SelfCreateUserDataset.xml
/metadata/iam-features-requestactions/model-data/SelfCreateUserRequest.xml
/metadata/iam-features-requestactions/plugin.xml
/metadata/iam-features-requestprofile/event-definition/EventHandlers.xml
/metadata/iam-features-rolesod/EventHandlers.xml
/metadata/iam-features-selfservice/event-definition/EventHandlers.xml
/metadata/iam-features-selfservice/notification/AddProxyUser.xml
/metadata/iam-features-selfservice/notification/CreateNewSelfUser.xml
/metadata/iam-features-selfservice/notification/ForgottenUsername.xml
/metadata/iam-features-sil/db/Registration.xml
/metadata/iam-features-sil/db/Registration.xsd
/metadata/iam-features-sil/db/SILConfig.xml
/metadata/iam-features-sod/EventHandlers.xml
/metadata/iam-features-system-configuration/EventHandlers.xml
/metadata/iam-features-system-configuration/plugin.xml
/metadata/iam-features-tasklist/plugin.xml
/metadata/iam-features-templatefeature/EventHandlers.xml
/metadata/iam-features-transUI/EventHandlers.xml
/metadata/iam-features-transUI/common/metadata/EventHandlers.xml
/metadata/iam-features-transUI/plugin.xml
/metadata/mds-metadata-mergeclass-map.xml
/metadata/mds-transfer-config.xml
/oracle/rules/oracle/iam/certification/rules/EventListenerBase.rules
/oracle/rules/oracle/iam/certification/rules/EventListenerCustom.rules

201 documents successfully transferred.
wls:/base_domain/serverConfig>

OIM 11g - Add Child Data to Child Tables

In this post I will post some sample code to add child data to child tables.
The below sample code will be helpful in scenarios like below

Child Form Auto Prepopulate Doesn't Work (Doc ID 1672861.1)

Currently in OIM custom pre-pop adapters are not supported on child forms

As a workaround you can use a adapter to add a record in child form on success of "create user" task. This will update the child form as expected.

Let me try to explain what I am doing in the code below

Well, this code adds a dsee group in a child table based on the role to which a user belong.

pKey - Process Instance Key
tcdp  - OIM Database Reference available via adapter variable mapping
lookupName - This lookup holds User Role to DSEE Group Mappings
userKey - USR Key
childTableColumName - Child Table Column Name



package com.dubey.deepak.oim.dsee.provisioning;

import Thor.API.Operations.tcFormInstanceOperationsIntf;
import Thor.API.Operations.tcLookupOperationsIntf;
import Thor.API.Operations.tcUserOperationsIntf;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import com.thortech.util.logging.Logger;
import com.thortech.xl.dataaccess.tcDataProvider;
import java.util.HashMap;
import java.util.Map;

public class AddChildData {
 
    public AddChildData() {
 }

 public String AddProcessChildData(long pKey, tcDataProvider tcdp,
   String lookupName, long userKey, String childTableColumName)
   throws Exception {
  String result = "false";
  try {
   tcUserOperationsIntf userOp = (tcUserOperationsIntf) tcUtilityFactory
     .getUtility(tcdp,
       "Thor.API.Operations.tcUserOperationsIntf");
   Thor.API.tcResultSet groupResults = userOp.getGroups(userKey);
   for (int i = 0; i < groupResults.getRowCount(); i++) {
    groupResults.goToRow(i);
    String roleName = groupResults
      .getStringValue("Groups.Group Name");
    System.out.println("roleName--->" + roleName);
    tcLookupOperationsIntf lookupOp = (tcLookupOperationsIntf) tcUtilityFactory
      .getUtility(tcdp,
        "Thor.API.Operations.tcLookupOperationsIntf");
    tcResultSet lookupRes = lookupOp.getLookupValues(lookupName);
    for (int j = 0; j < lookupRes.getRowCount(); j++) {
     lookupRes.goToRow(j);
     String CodeKey = lookupRes
       .getStringValue(
         "Lookup Definition.Lookup Code Information.Code Key")
       .trim();
     if (CodeKey.equalsIgnoreCase(roleName)) {
      String groupName = lookupRes
        .getStringValue(
          "Lookup Definition.Lookup Code Information.Decode")
        .trim();
      System.out.println("groupName----->" + groupName);
      tcFormInstanceOperationsIntf formOp = (tcFormInstanceOperationsIntf) tcUtilityFactory
        .getUtility(tcdp,
          "Thor.API.Operations.tcFormInstanceOperationsIntf");
      tcResultSet childFormDef = formOp
        .getChildFormDefinition(formOp
          .getProcessFormDefinitionKey(pKey),
          formOp.getProcessFormVersion(pKey));
      long childKey = childFormDef
        .getLongValue("Structure Utility.Child Tables.Child Key");
      Map attrChildData = new HashMap();
      attrChildData.put(childTableColumName, groupName);
      formOp.addProcessFormChildData(childKey, pKey,
        attrChildData);
      result = "true";
     }
    }
   }
  } catch (Exception e) {
   System.out.println("exception ---->" + e.getMessage());
   e.printStackTrace();
  }
  return result;
 }
}
 
 
This can be hooked to a dependent task like below

Create a Task and add a dependent task on it which will trigger this