Search This Blog

Tuesday, November 7, 2017

Creating Reconciliation events and Stamping Application instance to users programmatically Via Java code

Note - This sample code is given here to help developers. Please validate & use this on your own risk.

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import oracle.iam.platform.OIMClient;
import oracle.iam.reconciliation.api.EventAttributes;
import oracle.iam.reconciliation.api.ReconOperationsService;

public class ReconAppInstance {

public static void positiveRecon(String resName, String itResourceName, ArrayList<String> usersList) throws Exception {
System.out.println(" Inside Positive Recon Resource Name=" + resName + ", usersList=" + usersList);
OIMClient oimClient = Connection.OIMConnection();

// For creating connection class use below link :
ReconOperationsService reconOperation =  oimClient.getService(ReconOperationsService.class);
EventAttributes ea = new EventAttributes();
ea.setEventFinished(true);
for (int i = 0; i < usersList.size(); i++) {
// Note i have provided all attribute value same as user login, you can change it as per your requirement

String userlogin = usersList.get(i);
Map<String, Object> reconMap = new HashMap<String, Object>();
System.out.println("Creating Map");
reconMap.put("Unique Id", userlogin);
reconMap.put("User Id", userlogin);
reconMap.put("First Name", userlogin);
reconMap.put("Common Name", userlogin);//
reconMap.put("Full Name", userlogin);
reconMap.put("User Principal Name", userlogin);
reconMap.put("IT Resource Name", itResourceName);// It Resource name
reconMap.put("City", "Test City"); // label
reconMap.put("Organization Name", "ou=Test"); // label

if (!reconOperation.ignoreEvent(roName, reconMap)) {
long eventKey = reconOperation.createReconciliationEvent(resName, reconMap, ea);
System.out.println("Postive Recon =" + eventKey);
reconOperation.processReconciliationEvent(eventKey);
}
}
}

public static void main(String[] args) {
// Lets do it for AD User RO 
String roName = "AD User";
String itResourceName = "ADITRES";
ArrayList<String> usersList = new ArrayList<String>();
// Note  : All these users should exist in OIM
String userLogin = "TestUser";
for (int i = 1; i < 11; i++) {
String tuserLogin = userLogin + i;
usersList.add(tuserLogin);}
try {
positiveRecon(roName, itResourceName, usersList);
} catch (Exception e) {
e.printStackTrace();
}
      }
}












Creating Users in OIM programmatically via Java code

// This stand alone code can be used to create users in OIM programmatically. This can be used for bulk user creation in any testing or development environment.

Note - This sample code is given here to help developers. Please validate & use this on your own risk.

import oracle.iam.identity.usermgmt.api.UserManager;
import oracle.iam.identity.usermgmt.vo.User;
import oracle.iam.platform.OIMClient;

public class CreateUsers {

public static void main(String[] args) throws Exception {

OIMClient oimClient = Connection.OIMConnection();
UserManager userManager = oimClient.getService(UserManager.class);

// Creating user in bulk for testing

for(int i=1; i<=10; i++){
User user = new User("");
user.setAttribute("User Login", "Test"+i);
user.setAttribute("First Name", "Test"+i);
user.setAttribute("Last Name", "Test"+i);
user.setAttribute("usr_password", "****");
user.setAttribute("act_key",  new Long(2)); // Information Systems
user.setAttribute("Xellerate Type", "End-User");
user.setAttribute("Role", "Full-Time");
user.setAttribute("Email", "test.user"+i+"@test.com");
user.setAttribute("Country", "USA");
user.setAttribute("Department Number", "1234");
user.setAttribute("Employee Number", "1111"+i);
user.setAttribute("Home Postal Address", "Test Road");
user.setAttribute("Postal Address", "Test Street");
user.setAttribute("Postal Code", "88888");
user.setAttribute("Title", "Employee");
user.setAttribute("State", "Test State");
userManager.create(user);
System.out.println(user+"User Successfully got Created");
}
}

For getting help to connect to OIM standalone use below link :
https://saurabht-idmblog.blogspot.com/2016/10/getting-oim-connectionoimclient-in-java.html



Sunday, June 4, 2017

Reading OIM IT resource Parameters programmatically via Java Code

Note - This code is only to help developers. Please use this on your own risk.

public class GetITResourceAttributesValueTest{
 
 private static tcITResourceInstanceOperationsIntf tcITResOp;
 private static OIMClient oimClient = null;
 static UserManager userMgrOps = null;
 static ProvisioningService provServOps = null;
 static RoleManager roleManager = null;
 static RequestService reqServOps = null;
 
  // This  Test Code code will help developer to get the IT resource attribute values programitacally. Do not use this code in production
 
  tcITResOp=oimClient.getService(tcITResourceInstanceOperationsIntf.class);

 private static tcITResourceInstanceOperationsIntf getTcITResOp(){
        if(tcITResOp==null)
            tcITResOp=oimClient.getService(tcITResourceInstanceOperationsIntf.class);
     
        return tcITResOp;
    }

 private static HashMap<String, String> getITResourceParamters(String itResource){
           HashMap<String, String> map = new HashMap<String, String>();
           map.put("IT Resource.Name", itResource);
           try{
               tcResultSet set = getTcITResOp().findITResourceInstances(map);
               map.clear();
               if (!set.isEmpty()){
                   set = getTcITResOp().getITResourceInstanceParameters(set.getLongValue("IT Resource.Key"));
                   for (int i=0;i<set.getTotalRowCount();i++){
                       set.goToRow(i);
                   System.out.println(set.getStringValue("IT Resources Type Parameter.Name")+"  "+set.getStringValue("IT Resource.Parameter.Value"));
                       map.put(set.getStringValue("IT Resources Type Parameter.Name"), set.getStringValue("IT Resource.Parameter.Value"));
                   }
               }
           } catch (Exception e) {
               System.out.println("Exception : - "+e);
           }
           return map;
       }

// Running via Main method to see Test Server IT Resource Details
 
 public static void main(String[] args) {
  Map itData= getITResourceParamters("Test Server");
  Iterator it = itData.entrySet().iterator();
 
     while (it.hasNext()) {
         Map.Entry pair = (Map.Entry)it.next();
         System.out.println(pair.getKey() + " = " + pair.getValue());
         it.remove(); 
     }

 }

}