Saturday, December 28, 2013

Article how to delete system properties

Hello everybody,

Today I will cover how to delete system property in OIM 11g + some important details related of system properties.

1)Here it is the first code:
...
   SystemConfigurationService confServiceDel = oimClient.getService(SystemConfigurationService.class);
   try{
     SystemProperty sysProp;
     sysProp = confServiceDel.getSystemProperty(sysproperty);
     lgb=confServiceDel.deleteSystemProperty(sysProp.getPtyKeyword(), new Date());
                   
    }catchInvalidDataLevelException e){
        System.out.println("DataLevel issues:"+e);
....

[add here the conditions that you want to work if this happens...]
....


2)***Very important note***
You can delete a system property only if the data level of that system property is set to either 0 or 3. While deleting a system property, a message is displayed if the data level associated with the system property is not appropriate. For a description of the data levels, see Table below, "Data Levels Associated with a System Property".

2.1)DataLevel X description
===================================================
Data Level Description
0                      Indicates that the system property can be modified or deleted

1                      Indicates that the system property cannot be modified or deleted

2                      Indicates that the system property can only be modified

3                      Indicates that a system property can only be deleted
===================================================

3)This above is the main reason why you need to take care closely on exception InvalidDataLevelException . Also make sure during the system property creation or update you set the datalevel related.

3.1)during creation:
   ...
                    SystemProperty syspropcreation = new SystemProperty();
                    syspropcreation.setPtyKeyword(sysproperty);
                    syspropcreation.setPtyNote("Code implemented by ThiagoLeoncio");
                    syspropcreation.setPtyName(sysproperty);
                    syspropcreation.setPtyValue(syspropvalue);
                    syspropcreation.setPtyCreate(new Date());
                    syspropcreation.setPtyUpdate(new Date());
                    syspropcreation.setPtyDataLevel("0");  // <== IMPORTANT PIECE
                    syspropcreation.setPtyUpdateby("13");
                    syspropcreation.setPtyCreateby("13");
                    confService.addSystemProperty(syspropcreation);
   ...
3.2)during update:
...
sysPropUpd.setPtyDataLevel("0");
confServiceUpd.updateSystemProperty(sysPropUpd,new Date());
...

4)Reference:
4.1)http://docs.oracle.com/cd/E21764_01/doc.1111/e14308/system_props.htm#BABFCDAD
4.2)http://docs.oracle.com/cd/E37115_01/apirefs.1112/e28159/oracle/iam/conf/api/SystemConfigurationService.html


I hope this helps.
Thiago Leoncio.

Sunday, November 10, 2013

Archival utilities into OIM11G

Archival utilities into OIM:


In order to improve performance and have better scalability archival tools in OIM 11g are very important features. Today I will explain a bit more about this features and provide some techinical information about them.

Tasks - refers to one or more activities that comprise a process, which handles the provisioning of a resource. OIM doesn’t remove completed tasks from the active task tables.  As size of the active task tables increases. And some environments are experiencing decreased performance when managing open tasks and pending approvals.

Reconciliation -
OIM Reconciliation Manager does not remove reconciled data from the active reconciliation tables. As the size of the active reconciliation tables increases. So as tasks, you can have decreased performance during the reconciliation process.


Nowadays(OIM11G) , we have online archival that is a better option that what we had for first time into version 9. So, basically we can do archival with everything up and running without any outages , from customer perspective.



This archival utilities comes with OIM files as:
 
$OIM_HOME/db/oim/oracle/Utilities/Recon11gArchival/oim_recon_archival.sh,
$OIM_HOME/db/oim/oracle/Utilities/TaskArchival/OIM_TasksArch.sh
$OIM_HOME/db/oim/oracle/Utilities/RequestArchival/oim_request_archival.sh

I hope this helps you on your IDm project,
Thiago Leoncio.