Thursday, December 5, 2019

Sailpoint IIQ Vs OIM -Not a comparison but to find the match

There are many people like me who use to work in Oracle but moved to sailpoint IIQ and find it hard to match the concepts. Both the tool are architecturally different, however if we find match among this two, it will help to understand sailpoint easily. I will explain one by one

Connectors are the most useful component for any IDM team as it helps to integrate it with different target system.
The concept of connector is same in both the tool, Only different is the connectors comes OOTB for sailpoint but in OIM we need to install them separately. How I will discuss the internal components of the connectors like resource object, application instance etc. I will provide the mapping then from there we will go in details.

Resource Object (OIM) - Application (Sailpoint)
Adapter (OIM) - Provisioning Policy/ Provisioning Plan (Sailpoint)
Lookup (OIM) - Custom Objects  (Sailpoint)
Access Policy - IT Role
Reconciliation - Aggregation
Linking to identity (happens through recon rule, part of reconciliation in OIM) - Correlation
Process Tigers - Attribute sync
SOA approvals  - Workflow
Account  - Link
Role - Bundle

I will write in details for each one of it.


  

Sunday, March 31, 2019

Enable LCM module in IIQ 7.3

1. Stop tomcat

2. Go to C:\apache-tomcat-8.5.39\webapps\identityiq\WEB-INF\bin path in command prompt.

3.. run the below command:

iiq console
> import init-lcm.xml

4. start tomcat.

Sailpoint IIQ 7.3 Basic installation step in windows desktop


Prerequisite:  Mysql server 5.7 and tomcat 8.5 is already installed.
Assumption:
·        Mysql server 5.7 and tomcat 8.5 is installed in same desktop.
·        Its basic installation, did not encrypted the password and provisioning module (LCM) is not installed.
·        Did not changed any default config in  iiq.properties

1.       Download identityiq-7.3 from compass
2.       Uzip the installer zip
3.       Create a folder identityiq_home and copy identityiq.war war file in it


4.       Extract the war file
C:\identityiq_home>jar -xvf identityiq.war

5.       Delete identityiq.war file from identityiq_home
6.       Go to C:\identityiq_home\WEB-INF\database. create_identityiq_tables-7.3.mysql should be there
7.       Open mysql command line client

8.       I had a problem to run database. create_identityiq_tables-7.3.mysql  file from  the path, to avoid, I copied database. create_identityiq_tables-7.3.mysql  to path of the C:\Program Files\MySQL\MySQL Server 5.7\bin and tan the below command.

9.       Run the command Show databases the new schemas should be shown.

10.   Create a folder identityiq  in C:\apache-tomcat-8.5.39\webapps

11.   Copy the content of identityiq_home  in identityiq directory.

12.   Start tomcat



Saturday, August 25, 2018

Run Sailpoint Client Code from Eclipse

To run Sailpoint client code from Eclipse the below structure should be there in eclipes
1. src
     - spclient .java (given in this blog)

     - iiq.properties  ( copy from C:\<application server>\webapps\identityiq\WEB-INF\classes\ path)

     - iiqBeans.xml  ( unzip C:\<application server>\webapps\identityiq\WEB-INF\lib\identityiq.jar and copy iiqBeans.xml in Eclipes Src folder)


2. Lib
     - Copy all jar from C:\<application server>\webapps\identityiq\WEB-INF\lib\
     - Add all jars in java build path.

Please note: The IIQ path mentioned in the code should be accessible by Eclipse.

Hit the run button :)

Source code:

import sailpoint.api.SailPointContext;
import sailpoint.api.SailPointFactory;
import sailpoint.object.Identity;
import sailpoint.spring.SpringStarter;
import sailpoint.tools.GeneralException;

public class spclient {
      
       /**
        * Create Sailpoint context
        * @return
        */

       private SailPointContext getSailpointContext() {
              SailPointContext context =null;
              String override=null;
              SpringStarter ss= new SpringStarter ("iiqBeans.xml",override);
              String configFile=ss.getConfigFile();
              System.out.println("config File::"+configFile);
              String[] services = {"Task","Request"};
              SpringStarter.setSuppressedServices(services);
              SpringStarter.suppressSchedulers();
              SpringStarter.setSuppressVersionChecker(true);
              ss.start();
              System.out.println("HERE");

              try {
                     context= SailPointFactory.createContext("identityiq");
                     if(context !=null) {
                           System.out.println("Got Connection "+context);
                           context.authenticate("spadmin", "admin"); //Provide current id password.
                     }else {
                           System.out.println("null Connection ");
                     }
              }catch(Exception e) {
                     e.printStackTrace();
              }
              return context;
       }
       /**
        * Search Identity
        * @param context
        * @param identiyName
        * @return
        */

       private Identity searchIdentity (SailPointContext context, String identiyName) {
              Identity identity =null;
              Boolean inactivityflag=true;
              System.out.println("Nirupam");

              try {
                     identity= context.getObject(Identity.class,identiyName);
                     System.out.println("First Name::"+identity.getFirstname());
                     System.out.println("Last Name::"+identity.getLastname());
                     inactivityflag=(Boolean) identity.getAttribute("inactive");
                     System.out.println("inactivityflag::"+inactivityflag);
              } catch (GeneralException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
              }
              return identity;
       }

       public static void main (String[] args) {
          String path= "C:\\Tomcat8\\webapps\\identityiq"; // provide the path from your install Directory
              System.setProperty("SPHOME",path);
              System.setProperty("SP_HOME",path); 
              System.setProperty("sailpoint.home",path);
              SailPointContext context =null;
              System.out.println("Establishing Connection ");
              spclient sc=new spclient();
              context =sc.getSailpointContext();
              sc.searchIdentity(context,"spadmin");
              try {
                     context.close();
              } catch (GeneralException e) {
                     e.printStackTrace();
              }
       }

}

Saturday, February 10, 2018

Start a Service in windows using script

Save the below lines of code in a .bat file. I am trying to start MySQL57 service if its not running already.


for /F "tokens=3 delims=: " %%H in ('sc query MySQL57 ^| findstr " STATE"') do ( if /I "%%H" NEQ "RUNNING" ( net start MySQL57 ) )

Wednesday, October 5, 2016

Run query form java code using OIM Client login

import Thor.API.Security.XLClientSecurityAssociation;
import com.thortech.xl.client.dataobj.tcDataBaseClient;
import com.thortech.xl.dataaccess.tcClientDataAccessException;
import com.thortech.xl.dataaccess.tcDataProvider;
import com.thortech.xl.dataaccess.tcDataSet;
import com.thortech.xl.dataaccess.tcDataSetException;
import com.thortech.xl.orb.dataaccess.tcDataAccessException;

public void connectOIMDB(OIMClient oimClient){
XLClientSecurityAssociation.setClientHandle(oimClient);
tcDataProvider dataProvider = new tcDataBaseClient() ;        
        String query ="SELECT * FROM USR WHERE USR_LOGIN = 'XELSYSADM'";        
  tcDataSet dataSet = new tcDataSet();
  dataSet.setQuery(dataProvider, query);
  dataSet.executeQuery();
  System.out.println("Login ID: "+dataSet.getString("USR_LOGIN"));

}

Saturday, April 16, 2016

Event Handler to update Display Name

public EventResult execute(long processId, long eventId, Orchestration orchestration) {

HashMap<String, Serializable> parameters = orchestration.getParameters();
HashMap<String, Object> mapAttrs = new HashMap<String, Object>();

String firstName = (String)parameters.get(UserManagerConstants.AttributeName.FIRSTNAME.getId());
String lastName = (String)parameters.get(UserManagerConstants.AttributeName.LASTNAME.getId());


mapAttrs.put("base", "Mr."+firstName+" "+lastName);


orchestration.addParameter("Display Name", mapAttrs);

return new EventResult();
}