# DCoim.ctl:362:Collects Oracle Identity Manager Information # $Id: DCoim.ctl,v 1.18 2015/07/22 15:45:33 RDA Exp $ # ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/lib/collect/OFM/DCoim.ctl,v 1.18 2015/07/22 15:45:33 RDA Exp $ # # Change History # 20150721 KRA Extend the collections. =head1 NAME OFM:DCoim - Collects Oracle Identity Manager Information =head1 DESCRIPTION This module collects information about Oracle Identity Manager. The following reports can be generated and are regrouped under C: =cut echo tput('bold'),'Processing OFM.OIM module ...',tput('off') # Initialization var $AS_TYPE = ${W_AS_TYPE} var $OIM_FIX = ${B_FIX:true} var $OIM_HOME = ${D_HOME:''} var $OIM_LOCAL = ${B_LOCAL} var $OIM_NAM = ${T_NAME:'XIMDD'} var $OIM_PRT = ${N_PORT:8080} var $OIM_RDBMS = ${B_RDBMS} var $OIM_SRV = ${T_SERVER} var $OIM_USR = uc(${T_ADM_USER:'XELSYSADM'}) var $TAIL = ${DFT.N_TAIL:1000} loop $str (@{T_RESOURCES}) var $rsr{$str} = true var $ERR = ' (error)' var $TOC = '%TOC%' var $TOP = '[[#Top][Back to top]]' pretoc '1:Oracle Identity Manager' # Load the common macros run DB:DBinfo() run OFM:WLSlib() run RDA:INVinfo() run RDA:library() # --- RDBMS home collections -------------------------------------------------- if $OIM_RDBMS {call setDbTarget(${I_DB}) # Test the database connection if !testDb() {var $ver = getDbVersion() =head2 dbinfo - Database Information Gets the version and edition of the database =cut debug ' Inside OIM module, getting database version and edition' report dbinfo prefix {write '---+!! Product Versions from V$Version' write '|*Banner*|' } set $sql {# SQL1 "SELECT '|' || v.banner || '|' " FROM v$version v "/ } call writeDb($sql) if isCreated(true) toc '2:[[',getFile(),'][rda_report][Database Information]]' =head2 system - System Information Collects OIM system information from the database. =cut debug ' Inside OIM module, gathering information about system' report system var $TTL = '---+!! System Information' var @TTL = ('',\ '---+ Version Information',\ '---+ System Configuration') var @HDR = ('',\ '|*Key* |*Code* |*Value* |*Data Level* |*Create* |*Createby* |\ *Update* |*Updateby* |*Note* |*Row Version* |',\ '|*Keyword* |*Value* |*Description* |') set $sql {# SQL1 "SELECT '|' || " xsd_key || ' |' || " xsd_code || ' |' || " xsd_value || ' |' || " xsd_data_level || ' |' || " xsd_create || ' |' || " xsd_createby || ' |' || " xsd_update || ' |' || " xsd_updateby || ' |' || " xsd_note || ' |' || " xsd_rowver || ' |' " FROM xsd "/ "# MACRO separator(2) "# SQL2 "SELECT '|' || " pty_keyword || ' |' || " REPLACE(pty_value,'|','|') || ' |' || " pty_name || ' |' " FROM pty " ORDER BY pty_keyword,pty_value "/ } call separator(1) if loadDb($sql) {call writeLastDb() call separator(0,'System Information') var $OIM_VER = field('\|',3,grepLastDb('XL_PATCH_BASE','f')) var $OIM_BLD = field('\|',3,grepLastDb('XL_BUILD','f')) var $UPA = field('\|',2,\ grepLastDb('XL.UserProfileAuditDataCollection','f')) if or($OIM_VER,$OIM_BLD) var $aut = cond(or(compare('older',$OIM_VER,'9.1.0.2'),\ compare('older',$OIM_BLD,'1865.28')),false,true) } =head2 users - User Information Displays the information about OIM users. =cut debug ' Inside OIM module, gathering information about users' report users var $TTL = '---+!! User Information' var @TTL = ('',\ '---+ OIM User Count per Status',\ '---+ New OIM Users per Day, Last 10 Days',\ '---+ Users per Organization',\ '---+ Users per Group',\ '---+ User Configuration History') var @HDR = ('',\ '|*Status*| *Count*|',\ '|*Date*| *Count*|',\ '|*Account Name*| *Count*|',\ '|*Group Name*| *Count*|',\ '| *Configuration Key*|*Updated Date*|*Updated By*|*Reason*|') set $sql {# SQL1 "SELECT '|' || " usr_status || ' | ' || " COUNT(*) || '|' " FROM usr " GROUP BY usr_status "/ "# MACRO separator(2) "# SQL2 "SELECT '|' || " TO_CHAR(TRUNC(usr_create),'DD-Mon-YYYY') || ' | ' || " COUNT(*) || '|' " FROM usr " WHERE usr_create > TRUNC(SYSDATE - 10) " GROUP BY TRUNC(usr_create) " ORDER BY TRUNC(usr_create) "/ "# MACRO separator(3) "# SQL3 "SELECT '|' || " act_name || ' | ' || " COUNT(usr_key) || '|' " FROM act,usr " WHERE usr.act_key = act.act_key " GROUP BY act.act_name "/ "# MACRO separator(4) "# SQL4 "SELECT '|' || " ugp_name || ' | ' || " COUNT(usr.usr_key) || '|' " FROM ugp,usg,usr " WHERE ugp.ugp_key = usg.ugp_key " AND usg.usr_key = usr.usr_key " GROUP BY ugp_name " ORDER BY ugp_name "/ } var (undef,$col) = getDbColumns('RDA','USR_CONFIG_HISTORY') call clearDbColumns('RDA') if $col {append $sql {# MACRO separator(5) "# SQL5 "SELECT '| ' || " cfg_key || '|' || " TO_CHAR(updated_date,'DD-Mon-YYYY HH24:MI:SS') || ' |' || " updated_by || ' |' || " reason || ' |' " FROM usr_config_history " ORDER BY updated_date desc "/ } } call separator(1) call writeDb($sql) call separator(0,'User Information') =head2 tables - Table Analysis Information Displays the information about table analysis. =cut debug ' Inside OIM module, gathering table analysis information' report tables var $TTL = '---+!! Table Analysis Information' var @TTL = ('',\ '---+ Table Analysis Information') var @HDR = ('',\ '|*Table Name*|*Last Analyzed*|') set $sql {# SQL1 "SELECT '|' || " table_name || ' |' || " TO_CHAR(MAX(last_analyzed),'DD-Mon-YYYY') || ' |' " FROM user_tables " GROUP BY table_name " ORDER BY table_name "/ } call separator(1) call writeDb($sql) call separator(0,'Table Analysis Information') =head2 orchest - Orchestration Information Displays orchestration process and events information. =cut var (undef,$col) = getDbColumns('RDA','ORCHPROCESS') call clearDbColumns('RDA') if $col {debug ' Inside OIM module, gathering orchestration information' report orchest var $TTL = '---+!! Orchestration Information' var @TTL = ('',\ '---+ Orchestration Process and Events') if compare('VALID',$OIM_VER,'11.1.2.3') {var @HDR = ('',\ '| *Process Id*|*Status*|*Entity Type*|*Operation*|*Stage*|') set $sql {# SQL1 "SELECT '| ' || " id || '|' || " status || ' |' || " entitytype || ' |' || " operation || ' |' || " stage || ' |' " FROM orchprocess "/ } } else {var @HDR = ('',\ '| *Process Id*|*Status*|*Entity Type*|*Operation*|*Stage*| \ *Total Events*| *Failed Events*|') set $sql {# SQL1 "SELECT '| ' || " id || '|' || " status || ' |' || " entitytype || ' |' || " operation || ' |' || " stage || ' | ' || " (SELECT COUNT(1) " FROM orchevents b " WHERE a.id = b.processid) || '| ' || " (SELECT COUNT(1) " FROM orchfailedevents c " WHERE a.id = c.processid) || '|' " FROM orchprocess a "/ } } call separator(1) call writeDb($sql) call separator(0,'Orchestration Information') } =head2 access - Access Policy Information Displays the information about OIM access policies. =cut debug ' Inside OIM module, gathering access policy related information' report access var $TTL = '---+!! Access Policy Information' var @TTL = ('',\ '---+ Access Policy Information') var @HDR = ('',\ '| *Policy Key*|*Policy Name*| *Policy Priority*|\ *Policy Description*|*Object Name*| *Denial*|*Usergroup Name*|') set $sql {# SQL1 "SELECT '| ' || " pol.pol_key || '|' || " pol.pol_name || ' | ' || " pol.pol_priority || '|' || " pol.pol_description || ' |' || " obj.obj_name || ' | ' || " pop.pop_denial || '|' || " ugp.ugp_name || ' |' " FROM pol,pop,obj,pog,ugp " WHERE pol.pol_key = pop.pol_key " AND pop.obj_key = obj.obj_key " AND pol.pol_key = pog.pol_key " AND pog.ugp_key = ugp.ugp_key "/ } call separator(1) call writeDb($sql) call separator(0,'Access Policy Information') =head2 passwords - Password Policy Information Displays the information about OIM password policies. =cut debug ' Inside OIM module, gathering password policy related information' report passwords var $TTL = '---+!! Password Policy Information' var @TTL = ('',\ '---+ Number of Password Policies',\ '---+ Number of Dictionary-Based Password Policies',\ '---+ Dictionary-Based Password Policies') var @HDR = ('',\ '| *Count*|',\ '| *Count*|',\ '|*Password Policy Name*|') set $sql {# SQL1 "SELECT '| ' || " COUNT(*) || '|' " FROM pwr "/ "# MACRO separator(2) "# SQL2 "SELECT '| ' || " COUNT(*) || '|' " FROM pwr " WHERE pwr_dictionary_location IS NOT NULL "/ "# MACRO separator(3) "# SQL3 "SELECT '|' || " pwr_name || ' |' " FROM pwr " WHERE pwr_dictionary_location IS NOT NULL " ORDER BY pwr_name "/ } call separator(1) call writeDb($sql) call separator(0,'Password Policy Information') =head2 upgrade - Upgrade Status Information Displays the information about OIM upgrade status per feature. =cut debug ' Inside OIM module, gathering upgrade status related information' report upgrade var $TTL = '---+!! Upgrade Status Information' var @TTL = ('',\ '---+ Upgrade Status Information') var @HDR = ('',\ '|*Feature Id*|*Upgrade State*|*Upgraded*|') set $sql {# SQL1 "SELECT '|' || " feature_id || ' |' || " feature_upgrade_state || ' |' || " is_feature_upgraded || ' |' " FROM upgrade_feature_state "/ } call separator(1) call writeDb($sql) call separator(0,'Upgrade Status Information') =head2 expimp - Export/Import Information Displays the export/import information. =cut # Export/import related items debug ' Inside OIM module, gathering export/import related information' report expimp prefix {write '---+ Exported/Imported' write '|*File* |*Description* |*User* |*Date* |' } set $sql {# SQL1 "SELECT '|' || " eif_filename || ' |' || " eif_description || ' |' || " eif_user || ' |' || " TO_CHAR(eif_create,'DD_Mon-YYYY HH24:MI:SS') || ' |' " FROM eif " ORDER BY eif_create "/ } call writeDb($sql) if isCreated(true) {write $TOP toc '2:[[',getFile(),'][rda_report][Export/Import Information]]' } =head2 registry - Version Registry Information Displays the information about OIM registry version. =cut debug ' Inside OIM module, gathering version registry information' report registry var $TTL = '---+!! Version Registry Information' var @TTL = ('',\ '---+ Version Registry Information') var @HDR = ('',\ '|*Owner*|*Version*|') set $sql {# SQL1 "SELECT '|' || " owner || ' |' || " version || ' |' " FROM schema_version_registry "/ } call separator(1) call writeDb($sql) call separator(0,'Version Registry Information') =head2 blkld - Bulk Load Information Displays the bulk load information. =cut debug ' Inside OIM module, gathering bulk load information' set $qry {# SQL1 "SELECT 'tbl=' || table_name " FROM all_tables " WHERE owner = 'DEV_OIM' " AND table_name LIKE 'OIM_BLKLD_EX%' "/ } set $sql {# SQL2 "SELECT :1 " FROM :2 "/ } report blkld title '---+!! Bulk Load Information' title $TOC loop $nam (grepDb($qry,'^tbl=(.*)$','1')) {var ($hdr,$col) = getDbColumns('RDA',$nam) call clearDbColumns('RDA') next !$col prefix {write "---++ '",$nam,"' Table Information" write $hdr } call writeDb(bindDb($sql,$col,$nam)) if hasOutput(true) write $TOP } if isCreated(true) toc '2:[[',getFile(),'][rda_report][Bulk Load Information]]' =head2 miscellaneous - Miscellaneous Displays the miscellaneous information. =cut debug ' Inside OIM module, gathering miscellaneous information' set $sql {# SQL1 "SELECT 'tbl=' || table_name " FROM all_tables " WHERE table_name like '%JMSSTORE' " OR table_name like '%WLSTORE' " OR table_name in ('JMS_MESSAGES','XLAQQUEUETAB','OJMS_MSGS','SIB001') "/ } var ($tbl) = grepDb($sql,'^tbl=','f') report miscellaneous var $TTL = '---+!! Miscellaneous Information' var @TTL = ('',\ '---+ Number of Task Assignment Adapters',\ '---+ Adapter Compile Status (not OK)',\ '---+ List of Servers',\ '---+ Number of Access Policies',\ '---+ Number of Tasks',\ concat('---+ Number of ',$tbl),\ '---+ Number of JMS Transactions',\ '---+ Number of AUD_JMS',\ '---+ Connectors',\ '---+ New Requests per Day, Last 10 Days',\ '---+ Number of Simple Rules',\ '---+ Number of Complex Rules',\ '---+ Scheduled Tasks') var @HDR = ('',\ '| *Count*|',\ '|*Adapter Name*|*Status*|',\ '|*Server Name*|*Server Type*|',\ '| *Count*|',\ '|*Task Type*|*Status*| *Count*|',\ '| *Count*|',\ '| *Count*|',\ '| *Count*|',\ '|*Name*|*Version*|*Status*|',\ '|*Date*| *Count*|',\ '| *Count*|',\ '| *Count*|',\ '|*Task Name*|*Status*|*Frequency*| *Interval*|\ *Last Start Time*|*Last Stop Time*|*Next Start Time*|') set $sql {# SQL1 "SELECT '| ' || " COUNT(1) || '|' " FROM adp " WHERE adp_type = 'A' "/ "# MACRO separator(2) "# SQL2 "SELECT '|' || " adp_name || ' |' || " adp_status || ' |' " FROM adp " WHERE adp_status <> 'OK' "/ "# MACRO separator(3) "# SQL3 "SELECT '|' || " svr_name || ' |' || " svd_svr_type || ' |' " FROM svd,svr " WHERE svd.svd_key = svr.svd_key "/ "# MACRO separator(4) "# SQL4 "SELECT '| ' || " COUNT(1) || '|' " FROM pol "/ "# MACRO separator(5) "# SQL5 "SELECT '|' || " pkg.pkg_type || ' |' || " sta.sta_bucket || ' | ' || " COUNT(osi.sch_key) || '|' " FROM sch,sta,pkg,obj,act,mil,tos,orc,osi " WHERE sch.sch_key = osi.sch_key " AND sta.sta_status = sch.sch_status " AND orc.pkg_key = pkg.pkg_key " AND osi.orc_key = orc.orc_key " AND pkg.obj_key = obj.obj_key " AND osi.mil_key = mil.mil_key " AND tos.tos_key = orc.tos_key " AND act.ACT_KEY = osi.ACT_KEY " GROUP BY pkg.pkg_type,sta.sta_bucket " ORDER BY pkg.pkg_type,sta.sta_bucket "/ } if $tbl {append $sql {# MACRO separator(6) "# SQL6 "SELECT '| ' || " COUNT(1) || '|' " FROM :1 "/ } } var (undef,$col) = getDbColumns('RDA','JMS_TRANSACTIONS') call clearDbColumns('RDA') if $col {append $sql {# MACRO separator(7) "# SQL7 "SELECT '| ' || " COUNT(1) || '|' " FROM jms_transactions "/ } } append $sql {# MACRO separator(8) "# SQL8 "SELECT '| ' || " COUNT(1) || '|' " FROM aud_jms "/ } var (undef,$col) = getDbColumns('RDA','CIH') call clearDbColumns('RDA') if $col {append $sql {# MACRO separator(9) "# SQL9 "SELECT '|' || " cih_name || ' |' || " cih_version || ' |' || " cih_status || ' |' " FROM cih "/ } } append $sql {# MACRO separator(10) "# SQL10 "SELECT '|' || " TO_CHAR(TRUNC(req_create),'DD-Mon-YYYY') || ' | ' || " COUNT(1) || '|' " FROM req " WHERE req_create > TRUNC(SYSDATE - 10) " GROUP BY TRUNC(req_create) " ORDER BY TRUNC(req_create) "/ "# MACRO separator(11) "# SQL11 "SELECT '| ' || " COUNT(1) || '|' " FROM (SELECT COUNT(1) FROM rul GROUP BY obj_key HAVING COUNT(1) = 1) "/ "# MACRO separator(12) "# SQL12 "SELECT '| ' || " COUNT(1) || '|' " FROM (SELECT COUNT(1) FROM rul GROUP BY obj_key HAVING COUNT(1) > 1) "/ "# MACRO separator(13) "# SQL13 "SELECT '|' || " tsk_name || ' |' || " DECODE(tsk_disable,1,'Disabled',0,'Enabled') || ' |' || " tsk_freqtype || ' | ' || " tsk_interval || '|' || " TO_CHAR(tsk_last_start_time,'DD-Mon-YYYY HH24:MI:SS') || ' |' || " TO_CHAR(tsk_last_stop_time,'DD-Mon-YYYY HH24:MI:SS') || ' |' || " TO_CHAR(tsk_next_start_time,'DD-Mon-YYYY HH24:MI:SS') || ' |' " FROM tsk " ORDER BY tsk_name "/ } call separator(1) call loadDb(bindDb($sql,value($tbl))) call writeLastDb() var (undef,undef,$AUD_STA,$AUD_FRQ,$AUD_INT) = split('\|',\ first(grepLastDb('Issue Audit Messages Task','f')),6) call separator(0,'Miscellaneous Information') set $sql {# SQL1 "SELECT 'rsr=' || svd.svd_svr_type || '-' || svr.svr_name " FROM svr, " svd " WHERE svr.svd_key = svd.svd_key " AND svd.svd_svr_type != 'Remote Manager' "/ } call loadDb($sql) loop $str (keys(%rsr)) {if !grepLastDb(concat('^rsr=',$str)) {echo 'Skipping test for unknown IT resource type-name combination: ',$str delete $rsr{$str} } } =head2 audit - Audit Information Verifies OIM audit-related information and displays the results found. =cut if and(length($UPA),not(match($UPA,'^None$',true))) {debug ' Inside OIM module, checking audit related information' report audit set $sql {# SQL1 "SELECT '| ' || " aud_jms_key || '| ' || " identifier || '|' || " TO_CHAR(create_date,'DD-Mon-YYYY HH24:MI:SS') || ' |' " FROM aud_jms " WHERE create_date < SYSDATE - 7 "/ "# CAPTURE ONLY Value "# SQL2 "SELECT 'value=' || tsa_value " FROM tsa,tsk " WHERE tsa.tsk_key = tsk.tsk_key " AND tsk.tsk_name = 'Issue Audit Messages Task' "/ "# CAPTURE ONLY Count "# SQL3 "SELECT 'count=' || COUNT(*) " FROM aud_jms "/ } title '---+!! Audit Information' title $TOC prefix {write '---+ Records older than 7 days in Aud_Jms Table' write '| *Key*| *Identifier*|*Create Date*|' } call writeDb($sql) if hasOutput(true) write $TOP var $max = value(grepDbBuffer('Value','^value=','f')) var $jms = value(grepDbBuffer('Count','^count=','f')) write '---+ Audit Results' write '|*XL.UserProfileAuditDataCollection*|',$UPA,' |' write '|*Audit Messages Task Status*|',check($AUD_STA,\ 'Enabled','%BLUE%','%RED%'),$AUD_STA,'%ENDCOLOR% |' write '|*Audit Messages Task Maximum Records*|',cond(\ and(expr('>=',$max,200),expr('<=',$max,20000)),'%BLUE%','%RED%'),$max,\ '%ENDCOLOR% |' write '|*Audit Messages Task Frequency*|',$AUD_FRQ,' |' write '|*Audit Messages Task Schedule*|',cond(\ and(compare('eq',$AUD_FRQ,'CUSTOM'),expr('>',$AUD_INT,30)),\ '%RED%','%BLUE%'),$AUD_INT,'%ENDCOLOR% |' write '|*Row count in Aud_Jms Table*|',cond(\ expr('>',$jms,1000),'%RED%','%BLUE%'),$jms,'%ENDCOLOR% |' write $TOP toc '2:[[',getFile(),'][rda_report][Audit Information]]' } } } # --- AS Home Collections ----------------------------------------------------- if $OIM_LOCAL {var $fil = catFile($OIM_HOME,'inventory','ContentsXML','comps.xml') if ?testFile('fr',$fil) {if xmlFind(xmlLoadFile($fil),'PRD_LIST/TL_LIST/COMP') {var ($xml) = (last) var $OIM_VER = xmlValue($xml,'VER') var $dsc = xmlData(xmlFind($xml,'EXT_NAME')) if and(match($dsc,'^Oracle IDM Suite',true),\ match($OIM_VER,'^11\.')) {var $OIM11 = true var $aut = true } else var $aut = cond(compare('older',$OIM_VER,'9.1.0.2'),false,true) } } =head2 product_info - Product Information Gathers the OIM product information if OIM is installed in a separate Oracle Home. =cut if $OIM11 {debug ' Inside OIM module, processing Product Information (can take time)' report product_info write '---+!! OIM Oracle Home Product Information' write '---## From ',encode($OIM_HOME),' ' write $TOC write '---+ Files in Oracle Home' call statDir('an',$OIM_HOME) write $TOP call inventory_details(catDir($OIM_HOME,'inventory'),${B_INTERIM}) toc '2:[[',getFile(),'][rda_report][Product Information]]' =head2 Configuration Files Gathers OIM-related configuration files. =cut debug ' Inside OIM module, gathering configuration files' pretoc '2:Configuration Files' call sort_files(3,0,\ catFile($OIM_HOME,'server','bin','env.props'),\ grepDir(catDir($OIM_HOME,'server','bin'),'\.properties$','inp')) unpretoc =head2 Upgrade Log Files Gets the upgrade log files. =cut debug ' Inside OIM module, gathering upgrade log files' pretoc '2:Upgrade Log Files' call sort_files(3,$TAIL,\ catFile($OIM_HOME,'server','upgrade','logs','MT',\ 'ant_grantPermissionsUpgrade.log'),\ catFile($OIM_HOME,'server','upgrade','logs','MT','ant_soaOIMLookupDB.log'),\ catFile($OIM_HOME,'server','upgrade','logs','MT','SeedSchedulerData.log'),\ grepDir(catDir($OIM_HOME,'server','upgrade','logs','MT'),\ '^OIMUpgrade.*?\.log$')) unpretoc =head2 Patch Log Files Gathers OIM-related patch log files. =cut debug ' Inside OIM module, gathering patch log files' pretoc '2:Patch Log Files' call sort_files(3,$TAIL,\ catFile($OIM_HOME,'server','bin','patch_oim_was.log'),\ catFile($OIM_HOME,'server','bin','patch_oim_wls.log')) unpretoc =head2 Manifest Information Gathers the Oracle home manifest information. =cut debug ' Inside OIM module, getting Oracle home manifest information \ (can take time)' pretoc '2:Manifest Information' call dsp_manifest(3,$OIM_HOME) unpretoc } # Check whether authentication is needed for Diagnostic Dashboard if $OIM11 var $dir = catDir($OIM_HOME,'server','config') else var $dir = catDir($OIM_HOME,'xellerate','config') if !?$aut {if ?testFile('fr',catFile($dir,'Version.prop')) {var $OIM_VER = value(grepFile(lastFile(),'^product\.version','fi')) var (undef,undef,undef,$ver,$bld) = \ split('\.',value(grepFile(lastFile(),'^build\.number','fi')),5) var $OIM_BLD = concat($ver,'.',$bld) var $aut = cond(or(compare('older',$OIM_VER,'9.1.0.2'),\ compare('older',$OIM_BLD,'1865.28')),false,true) } } =for stopwords xlconfig =head2 xlconfig_parsing - xlconfig.xml Parsing Test Checks whether the F file has XML parsing errors. =cut if ?testFile('r',$fil = catFile($dir,'xlconfig.xml')) {report xlconfig_parsing debug ' Inside OIM module, parsing xlconfig.xml for errors' write '---+!! xlconfig.xml XML Parsing Test' var $xml = xmlLoadFile($fil) if xmlError($xml) {write 'The OIM Server config file \ ``$OIM_HOME/xellerate/config/xlconfig.xml`` is corrupt.' write 'Some configuration items will not be readable or used. It could \ cause performance or malfunction issues.' } else write 'No errors detected in ``$OIM_HOME/xellerate/config/xlconfig.xml``' if isCreated(true) toc '2:[[',getFile(),'][rda_report][xlconfig.xml Parsing Test]]' } =head2 OIM Configuration Files Gets OIM configuration files. =cut pretoc '2:Xellerate Config Files' call sort_files(3,0,catFile($dir,'xlconfig.xml'),\ catFile($dir,'log.properties')) unpretoc if match($AS_TYPE,'oc4j') {pretoc '2:OC4J Configuration' var $dir = ${D_AS_HOME} var $dir1 = catDir($dir,'opmn','conf') var $dir2 = catDir($dir,'j2ee',${T_OC4J_INSTANCE:''},'config') call sort_files(3,0,catFile($dir1,'opmn.xml'),\ catFile($dir2,'data-sources.xml'),\ catFile($dir2,'jms.xml'),\ catFile($dir2,'server.xml'),\ catFile($dir2,'default-web-site.xml'),\ catFile($dir2,'system-jazn-data.xml'),\ catFile($dir2,'transaction-manager.xml')) unpretoc } elsif match($AS_TYPE,'jboss') {pretoc '2:JBOSS Configuration' var $dir = ${D_JBOSS_HOME} if or(isWindows(),isCygwin()) call sort_files(3,0,catFile($dir,'bin','run.bat')) elsif isUnix() call sort_files(3,0,catFile($dir,'bin','run.conf'),\ catFile($dir,'bin','run.sh')) pretoc '3:Non Clustered' call sort_files(4,0,\ grepDir(catDir($dir,'server','default','conf'),\ '(log4j|jboss-log4j)\.xml','p')) pretoc '3:Clustered' call sort_files(4,0,\ grepDir(catDir($dir,'server','all','conf'),\ '(log4j|jboss-log4j)\.xml','p')) unpretoc } =head2 Ant Configuration Gets F file. =cut debug ' Inside OIM module, gathering ant.properties file' pretoc '2:Ant Configuration' call cat_report(catDir($OIM_HOME,'server','plugin_utility'),'ant.properties') unpretoc =head2 OIM Profile Files Gets OIM profile files. =cut pretoc '2:Xellerate Profile Files' call sort_files(3,$TAIL,\ grepDir(catDir($OIM_HOME,'xellerate','Profiles'),'\.profile$','p')) unpretoc =for stopwords JavaTasks =head2 javatasks - JavaTasks Files Gets list of files in F<$OIM_HOME\xellerate\JavaTasks> and F<$OIM_HOME\server\JavaTasks> directories. =cut report javatasks loop $dir (catDir($OIM_HOME,'xellerate','JavaTasks'),\ catDir($OIM_HOME,'server','JavaTasks')) {prefix write '---+!! List of files from ',$dir call statDir('a',$dir) } if isCreated(true) toc '2:[[',getFile(),'][rda_report][JavaTasks Files]]' =for stopwords ScheduleTask =head2 schedtask - ScheduleTask Files Gets list of files in F<$OIM_HOME\xellerate\ScheduleTask> and F<$OIM_HOME\server\ScheduleTask> directories. =cut report schedtask loop $dir (catDir($OIM_HOME,'xellerate','ScheduleTask'),\ catDir($OIM_HOME,'server','ScheduleTask')) {prefix write '---+!! List of files from ',$dir call statDir('a',$dir) } if isCreated(true) toc '2:[[',getFile(),'][rda_report][ScheduleTask Files]]' =for stopwords ThirdParty =head2 thdparty - ThirdParty Files Gets list of files in F<$OIM_HOME\xellerate\ThirdParty> and F<$OIM_HOME\server\ThirdParty> directories. =cut report thdparty loop $dir (catDir($OIM_HOME,'xellerate','ThirdParty'),\ catDir($OIM_HOME,'server','ThirdParty')) {prefix write '---+!! List of files from ',$dir call statDir('a',$dir) } if isCreated(true) toc '2:[[',getFile(),'][rda_report][ThirdParty Files]]' =head2 plugins - plugins Files Gets list of files in F<$OIM_HOME\xellerate\plugins> and F<$OIM_HOME\server\plugins> directories. =cut report plugins loop $dir (catDir($OIM_HOME,'xellerate','plugins'),\ catDir($OIM_HOME,'server','plugins')) {prefix write '---+!! List of files from ',$dir call statDir('a',$dir) } if isCreated(true) toc '2:[[',getFile(),'][rda_report][plugins Files]]' =head2 OIM Log Files Gets OIM log files. =cut pretoc '2:Xellerate Log Files' call sort_files(3,$TAIL,\ grepDir(catDir($OIM_HOME,'logs'),'\.(log|err)$','p'),\ grepDir(catDir($OIM_HOME,'xellerate','logs'),'.','p')) unpretoc =head2 Bulk Load Log Files Gets bulk load log files. =cut pretoc '2:Bulk Load Log Files' call sort_files(3,$TAIL,\ grepDir(catDir($OIM_HOME,'server','db','oim','oracle',\ 'Utilities','oimbulkload'),'^oim_blkld_user_load_summary\.log$','dir')) unpretoc } =head2 sch_stat - Scheduler Status Collects scheduler status information. =cut # Validate the server name and port once {if !match($OIM_SRV,'^[\w\-\.]+$') {echo 'Invalid OIM diagnostic dashboard server' break } if !match($OIM_PRT,'^\d+$') {echo 'Invalid OIM diagnostic dashboard port' break } # Get the scheduler status debug ' Inside OIM module, getting scheduler status information' report sch_stat if $aut {var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,\ '/SchedulerService-web/j_security_check') var $pwd = askPassword(concat('Enter ',$OIM_USR,' user password:')) var $req = createRequest('POST',$url) call addReqForm($req,\ concat('j_username=',$OIM_USR),\ concat('j_password=',$pwd),\ 'Submit=Submit') var $rsp = submitRequest($req) if isSuccess($rsp) {var $OIM11 = true var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,\ '/SchedulerService-web/status') var $req = createRequest('GET',$url) } else {var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,'/xlScheduler/') var $req = createRequest('POST',$url) call addReqForm($req,\ concat('USERNAME=',$OIM_USR),\ concat('PASSWORD=',$pwd),\ 'ACTION=STATUS') } } else {var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,'/xlScheduler') var $req = createRequest('GET',$url) } var $rsp = submitRequest($req) if isSuccess($rsp) {prefix {write '---+!! Scheduler Status' write '---## Using: ',$url write $TOC } var $htm = htmlLoadResponse($rsp,htmlDisable(htmlParser(),'R')) loop $lin (htmlTable($htm)) write $lin } if isCreated(true) toc '2:[[',getFile(),'][rda_report][Scheduler Status]]' else echo 'Cannot get the scheduler status (',join(',',getRspCode($rsp)),\ ' - ',getRspMessage($rsp),')' # --- Diagnostics Dashboard operations ---------------------------------------- # Validate the application name if !match($OIM_NAM,'^\w+$') {echo 'Invalid diagnostic dashboard application name' break } # Get a session cookie debug ' Inside OIM module, accessing diagnostic dashboard (can take time)' var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,'/',$OIM_NAM,\ '/SystemVerification') var $req = createRequest('GET',$url) var $sec = ${N_TIMEOUT:150} if !match($sec,'^\d+$') var $sec = 150 call setDftTimeout($sec) var $rsp = submitRequest($req) if !isSuccess($rsp) {echo 'Cannot access the diagnostic dashboard (',join(',',getRspCode($rsp)),\ ' - ',getRspMessage($rsp),')' break } if and($aut,not($OIM11)) {var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,'/',$OIM_NAM,\ '/UserVerification') var $req = createRequest('POST',$url) call addReqForm($req,\ concat('userID=',$OIM_USR),\ concat('password=',$pwd)) var $rsp = submitRequest($req) if !isSuccess($rsp) {echo 'Cannot access the diagnostic dashboard (',join(',',getRspCode($rsp)),\ ' - ',getRspMessage($rsp),')' break } var $url = concat('http://',$OIM_SRV,':',$OIM_PRT,'/',$OIM_NAM,\ '/SystemVerification') var $req = createRequest('GET',$url) var $rsp = submitRequest($req) if !isSuccess($rsp) {echo 'Cannot access the diagnostic dashboard (',join(',',getRspCode($rsp)),\ ' - ',getRspMessage($rsp),')' break } } pretoc '2:Diagnostics Dashboard' =head2 Diagnostics Dashboard reports =head3 sys_info - System Information Collects Oracle Identity Manager system information. =cut # Extract the system information from previous response var $sys = undef var $htm = htmlLoadResponse($rsp,\ htmlFilter(htmlDisable(htmlParser(),'DR'),'td')) loop $nod (htmlFind($htm,'.../td class="ControlLabel"')) {loop $itm (htmlContent($nod,'S')) {var $str = htmlText($itm) next !match($str,'\w+') if $aut {if match($str,'^Oracle Identity Manager') var $str = concat(' ',$str) var $sys = concat($sys,replace($str,'\240',' ',true)) } else var $sys = replace($str,'\240',' ',true) } } # Parse the system information if $sys {debug ' Inside OIM module, getting OIM system information' report sys_info loop $val (split('\s{2,}',$sys)) {next match($val,'(\<|The following diagnostic)',true) if match($val,'^System Information\s*:',true) write '---+ System Information' elsif match($val,'^(.*):$') write '|',last,' ||' elsif match($val,'^(.*):\s+(.*)$') {var ($hdr,$txt) = (last) write '|*',$hdr,'* |',$txt,' |' } } if isCreated(true) toc '3:[[',getFile(),'][rda_report][System Information]]' } =head3 db_connect - Database Connectivity Check This test verifies whether Oracle Identity Manager is able to connect to the database. This test verifies the direct database connection as well as the J2EE data sources (XA and non-XA). =head3 lock_status - Account Lock Status This test verifies whether Oracle Identity Manager locks an account when there are successive multiple invalid login attempts. This test checks if a given account is locked. =head3 enc_key_ver - Data Encryption Key Verification This test verifies the Data Encryption Key used for Oracle Identity Manager. The data encryption key in an Oracle Identity Manager installation should be the same as the one used to encrypt the data in the Oracle Identity Manager database. This may not be the case when an Oracle Identity Manager installation is pointed to a database schema created for a different Oracle Identity Manager installation. This can happen also when a database dump from one Oracle Identity Manager installation is imported for a different Oracle Identity Manager installation without copying the corresponding key. =head3 sch_svc_sta - Scheduler Service Status This test verifies the status of the Oracle Identity Manager Scheduler Service running on this server (for version earlier than 11.1.2). =head3 rem_mgr_sta - Remote Manager Status This test reports the status of the Remote Managers with which this Oracle Identity Manager installation is set up. =head3 jms_msg - JMS Messaging Verification This test verifies that Oracle Identity Manager can submit a JMS message and process it. =head3 jvm_prop - Java VM System Properties Report This test displays all the Java VM system properties. =head3 lib_version - Libraries and Extensions Version Report This test reports the version of the Oracle Identity Manager libraries and extensions. =head3 lib_manifest - Libraries and Extensions Manifest Report This test reports the manifest information of the Oracle Identity Manager libraries and extensions. =head3 sso_diag - SSO Diagnostic Information This test provides information pertaining to SSO setup. Also, it provides instructions required to set up Oracle Identity Manager to enable retrieving run-time diagnostic information related to SSO logins. =head3 basic_conn - Test Basic Connectivity This test is equivalent to the basic connectivity test of the installation process, except that the IT resource instance information may be used to provide information about the target system. The administrator should be able to select a target IT resource instance to use, or enter the target data manually. =head3 test_prov - Test Provisioning This test implements the current test harness which allows creating, modifying, or deleting a user on the target system. At this time, there is no requirement to use the provisioning flows within the server, this test is simply one of the connector functionality. =head3 test_recon - Test Reconciliation This test performs sample reconciliation from the target system. However, the reconciliation engine of Oracle Identity Manager will not be called. Instead, the reconciled data will be provided in a log file and displayed as output to the diagnostic dashboard. This may require specific flags on the reconciliation portion of the connectors to prevent calling the actual reconciliation logic. These requirements should be specified as part of this project so that future connector developers may implement the test reconciliation effectively. =head3 soa_oim_config - SOA-OIM Configuration Check This test checks whether the details provided for SOA-wiring are valid or not (for version 11.1.1.3 or later). =head3 oaacg_conn_test - OAACG Connectivity Test This test checks that Oracle Identity Manager is able to connect to the Oracle Application Access Controls Governor (OAACG) server (for version 11.1.1.3 or later). =head3 spml_web_service - SPML Web Service This test verifies that SPML WSDL is accessible (for version 11.1.1.3 or later). =head3 owsm_setup - Test OWSM Setup This test checks Oracle Web Service Manager (OWSM) setup by submitting a request with OWSM header information (for version 11.1.1.3 or later). =head3 spml_oim_req_invo - Test SPML to OIM request invocation This test verifies that OSPML WS to OIM is a signature-based login and ensures this is working by simulating a OIM request (for version 11.1.1.3 or later). =head3 spml_oim_attr - SPML attributes to OIM attributes This test lists all the mapping of SPML attributes to OIM attributes (for version 11.1.1.3 or later). =head3 username_test - User Name Test This test lists the existing user name generation policy defined in OIM (for version 11.1.1.3 or later). =head3 oim_callback_webservice - Diagnose OIM Callback Web Service This test verifies that OIM Callback WSDL is accessible (for version 11.1.1.3 or later). =head3 usr_role_oim_ldap - Diagnose creation of user and role in OIM and LDAP This test verifies the user creation and role creation are working fine in LDAP and OIM individually (for version 11.1.1.3 or later). =head3 ovd_conn - Diagnose OVD Connection This test verifies that Oracle Identity Manager is able to connect to the OVD (for version 11.1.1.3 or later). =head3 ldap_res_cont - Diagnose LDAP reserve container This test verifies whether the tree structure of reserve container is set up properly (for version 11.1.1.3 or later). =cut # Declare a macro for formatting a PRE block macro fmt_pre {var ($str) = @arg var $str = replace(encode($str),'\n','%BR%',true) var $str = replace($str,'\t','  ',true) return $str } # Extract the HTML content and write to reports macro write_data {var ($htm,$lvl,$str) = @arg import $ERR,$TOP keep $ERR,$TOP var %tb_rpt = (\ 'Database Connectivity Check',\ 'db_connect',\ 'Account Lock Status',\ 'lock_status',\ 'Data Encryption Key Verification',\ 'enc_key_ver',\ 'Scheduler Service Status',\ 'sch_svc_sta',\ 'Remote Manager Status',\ 'rem_mgr_sta',\ 'JMS Messaging Verification',\ 'jms_msg',\ 'Java VM System Properties',\ 'jvm_prop',\ 'Oracle Identity Manager Libraries and Extensions Version Report',\ 'lib_version',\ 'Oracle Identity Manager Libraries and Extensions Manifest Report',\ 'lib_manifest',\ 'Test Basic Connectivity',\ 'basic_conn',\ 'Test Provisioning',\ 'test_prov',\ 'Test Reconciliation',\ 'test_recon',\ 'SSO Diagnostic Information',\ 'sso_diag',\ 'Test Basic Connectivity',\ concat('basic_conn_',$str),\ 'Test Provisioning',\ concat('test_prov_',$str),\ 'Test Reconciliation',\ concat('test_recon_',$str),\ 'SOA-OIM Configuration Check.',\ 'soa_oim_config',\ 'SPML Web Service',\ 'spml_web_service',\ 'SPML attributes to OIM attributes',\ 'spml_oim_attr',\ 'User Name Test',\ 'username_test',\ 'Diagnose OIM Callback Web Service',\ 'oim_callback_webservice',\ 'Diagnose OVD Connection',\ 'ovd_conn',\ 'Diagnose LDAP reserve container',\ 'ldap_res_cont',\ 'OAACG Connectivity Test.',\ 'oaacg_conn_test',\ 'Diagnose creation of user and role in OIM and LDAP',\ 'usr_role_oim_ldap',\ 'Test OWSM setup',\ 'owsm_setup',\ 'Test SPML to OIM request invocation',\ 'spml_oim_req_invo'\ ) loop $nod (htmlFind($htm,'.../td class="ControlLabel"')) {var ($ttl,@nod) = htmlContent($nod,undef,'table|td|th|tr') next !@nod # Validate that it is a test node next !compare('eq',htmlName($ttl),'a') var $ttl = replace(htmlValue($ttl,'name'),'\+',' ',true) debug ' Inside OIM module, extracting ',$ttl # Parse the test information var ($key,%tst) = ('?') loop $itm (@nod) {var $tag = htmlName($itm) if !defined($tag) var $tst{$key} = trim(htmlText($itm),'\240+') elsif compare('eq',$tag,'b') var $key = lc(field('\s',0,htmlText($itm))) elsif compare('eq',$tag,'pre') {if htmlFind($itm,'table') {var $str = undef var $pre = cond(match($ttl,\ '(properties|version) report|OIM attributes',true),'',"\011") loop $det (htmlContent($itm)) {if compare('eq',htmlName($det),'table') {if ?$str var $str = concat(chomp($str),"\012") loop $row (htmlFind($det,'tr')) {var $txt = trim(chomp(htmlText($row))) if length($txt) var $str = concat($str,$pre,$txt,"\012") } } else var $str = concat($str,htmlText($det)) } var $tst{$key} = chomp(replace($str,'\n{3,}',"\012\012",true)) } else var $tst{$key} = trim(htmlText($itm)) } } # Generate the report report nvl($tb_rpt{$ttl},$ttl) write '---+!! ',replace($ttl,'\.$') write '|*Description*|',$tst{'description'},' |' if exists($tst{'input'}) write '|*Input Parameters*|``',fmt_pre($tst{'input'}),'`` |' write '|*Result*|',check(uc($tst{'result'}),'FAILED','%RED%','%BLUE%'),\ $tst{'result'},'%ENDCOLOR% |' if match($ttl,'properties report',true) {write '---++ Properties' write '|*Property*|*Value*|' loop $lin (split('\n',$tst{'details'})) {next match($lin,'^\s*$') write '|',join(' |',split('\s+',replace($lin,'\|','|',true),2)),' |' } } elsif match($ttl,'version report',true) {write '---++ Library Versions' write '|*Library Name*|*Version*|' loop $lin (split('\n',$tst{'details'})) {next match($lin,'^\s*(\z|LIBRARY)',true) write '|',join(' |',split('\s+',$lin,2)),' |' } } elsif match($ttl,'manifest report',true) {write '%BR%' write '%TOC3-2%' var $flg = false loop $lin (split('\n',$tst{'details'})) {next match($lin,'^\s*(\z|LIBRARY)') if match($lin,'^Name:') {if $flg write $TOP var $flg = true write '---++ ',replace($lin,'^Name:\s*') } elsif match($lin,'^\s+(\w[^:]+):\s+(.*)$') {var ($key,$val) = last write '|*',$key,'* |',$val,' |' } } } elsif match($ttl,'OIM attributes',true) {write '---++ Attributes' write '|*SPML Attribute Name*|*OIM Attribute Name*|' loop $lin (split('\n',$tst{'details'})) {next match($lin,'^\s*$',true) write '|',join(' |',split('\s{2,}',$lin,2)),' |' } } else write '|*Details*|``',fmt_pre($tst{'details'}),'``|' if isCreated(true) {write $TOP toc $lvl,':[[',getFile(),'][rda_report][',\ replace(replace($ttl,'Oracle Identity Manager '),'\.$'),\ check(uc($tst{'result'}),'FAILED',$ERR),']]' } } } # Submit query (POST request with session cookie) debug ' Inside OIM module, executing tests (can take time)' var @elm = () if compare('valid',$OIM_VER,'11.1.1.3') {var @elm = ('CB_VALIDATESOACONFIGURATIONS=selected',\ 'CB_SPMLWSTEST=selected',\ 'CB_SPMLOIMATRMAPPINGTEST=selected',\ 'CB_USERNAMETEST=selected',\ 'CB_OIMCALLBACKWSTEST=selected',\ 'CB_OVDCONNECTTEST=selected',\ 'CB_LDAPRESERVECONTAINERTEST=selected') if compare('valid',$OIM_VER,'11.1.1.5') call push(@elm,\ 'CB_VALIDATEOAACGCONFIGURATIONS=selected',\ 'CB_USERROLECREATETEST=selected',\ concat('INP_USERROLECREATETEST_SPMLUSER=',encode($OIM_USR)),\ concat('INP_USERROLECREATETEST_SPMLUSERPASSWORD=',$pwd),\ 'CB_OWSMHEADERTEST=selected',\ concat('INP_OWSMHEADERTEST_SPMLUSER=',encode($OIM_USR)),\ concat('INP_OWSMHEADERTEST_SPMLUSERPASSWORD=',$pwd),\ 'CB_SPMLOIMREQINVOCATIONTEST=selected',\ concat('INP_SPMLOIMREQINVOCATIONTEST_SPMLUSER=',encode($OIM_USR)),\ concat('INP_SPMLOIMREQINVOCATIONTEST_SPMLUSERPASSWORD=',$pwd)) else call push(@elm,'CB_USERROLECREATETEST=selected',\ 'CB_OWSMHEADERTEST=selected',\ 'CB_SPMLOIMREQINVOCATIONTEST=selected') } if compare('older',$OIM_VER,'11.1.2') call push(@elm,'CB_VALIDATESCHEDULER=selected') var $req = createRequest('POST',$url) call addReqForm($req,\ 'INP_ORACLEPREREQUISITESCHECK_DBSERVER=',\ 'INP_ORACLEPREREQUISITESCHECK_PORT=1521',\ 'INP_ORACLEPREREQUISITESCHECK_XIMDBNAME=',\ 'INP_ORACLEPREREQUISITESCHECK_XIMSCHEMANAME=',\ 'INP_ORACLEPREREQUISITESCHECK_SYSTEMUSER=SYSTEM',\ 'INP_ORACLEPREREQUISITESCHECK_SYSTEMPASSWORD=',\ 'INP_TRUSTSTOREVERIFICATION_TARGETSYSTEM=',\ 'INP_TRUSTSTOREVERIFICATION_PORT=',\ 'INP_TRUSTSTOREVERIFICATION_CERTIFICATESTORELOCATION=\ null%2Fjre%2Flib%2Fsecurity%2Fcacerts',\ 'INP_TRUSTSTOREVERIFICATION_CERTIFICATESTOREPWD=',\ 'INP_CONNECTORCONNECTION_ITRESOURCETYPE=',\ 'INP_CONNECTORCONNECTION_ITRESOURCENAME=',\ 'INP_CONNECTORPROVISION_ITRESOURCETYPE=',\ 'INP_CONNECTORPROVISION_ITRESOURCENAME=',\ 'INP_CONNECTORRECONCILIATION_ITRESOURCETYPE=',\ 'INP_CONNECTORRECONCILIATION_ITRESOURCENAME=',\ 'CB_VALIDATEDBCONNECTIONS=selected',\ 'CB_VALIDATEUSERLOCKED=selected',\ concat('INP_VALIDATEUSERLOCKED_USERNAME=',encode($OIM_USR)),\ 'CB_VALIDATEDBKEY=selected',\ 'CB_VALIDATEREMOTEMANAGER=selected',\ 'CB_VALIDATEMESSAGE=selected',\ 'CB_SYSTEMPROPERTIESCHECK=selected',\ 'CB_REPORTLIBRARIESVERSION=selected',\ 'CB_REPORTLIBRARIESMANIFEST=selected',\ 'CB_SSODIAGNOSTICINFO=selected',\ 'INP_SOADIAGNOSTICINFO_REQUESTID=',\ 'INP_KERNELGETSTATUS_PROCESSID=',\ 'INP_KERNELTESTRETRY_PROCESSID=',\ @elm,\ 'Verify=Verify') var $rsp = submitRequest($req) if !isSuccess($rsp) {echo 'Failed to get OIM diagnostic dashboard results (',\ join(',',getRspCode($rsp)),' - ',getRspMessage($rsp),')' break } var $htm = htmlLoadResponse($rsp,\ htmlFilter(htmlDisable(htmlFix(htmlParser(),\ $OIM_FIX),\ 'DR'),\ 'td','a','b','pre')) call write_data($htm,3,undef) loop $rsr (keys(%rsr)) {debug ' Inside OIM module, executing ',$rsr,' tests (can take time)' var ($typ,$nam) = split('\-',$rsr,2) pretoc '3:',encode($nam),' - ',encode($typ) call clearReqForm($req) var $req = createRequest('POST',$url) call addReqForm($req,\ 'INP_ORACLEPREREQUISITESCHECK_DBSERVER=',\ 'INP_ORACLEPREREQUISITESCHECK_PORT=1521',\ 'INP_ORACLEPREREQUISITESCHECK_XIMDBNAME=',\ 'INP_ORACLEPREREQUISITESCHECK_XIMSCHEMANAME=',\ 'INP_ORACLEPREREQUISITESCHECK_SYSTEMUSER=SYSTEM',\ 'INP_ORACLEPREREQUISITESCHECK_SYSTEMPASSWORD=',\ 'INP_VALIDATEUSERLOCKED_USERNAME=XELSYSADM',\ 'INP_TRUSTSTOREVERIFICATION_TARGETSYSTEM=',\ 'INP_TRUSTSTOREVERIFICATION_PORT=',\ 'INP_TRUSTSTOREVERIFICATION_CERTIFICATESTORELOCATION=\ null%2Fjre%2Flib%2Fsecurity%2Fcacerts',\ 'INP_TRUSTSTOREVERIFICATION_CERTIFICATESTOREPWD=',\ 'CB_CONNECTORCONNECTION=selected',\ concat('INP_CONNECTORCONNECTION_ITRESOURCETYPE=',\ encode($typ)),\ concat('INP_CONNECTORCONNECTION_ITRESOURCENAME=',\ encode($nam)),\ 'CB_CONNECTORPROVISION=selected',\ concat('INP_CONNECTORPROVISION_ITRESOURCETYPE=',\ encode($typ)),\ concat('INP_CONNECTORPROVISION_ITRESOURCENAME=',\ encode($nam)),\ 'CB_CONNECTORRECONCILIATION=selected',\ concat('INP_CONNECTORRECONCILIATION_ITRESOURCETYPE=',\ encode($typ)),\ concat('INP_CONNECTORRECONCILIATION_ITRESOURCENAME=',\ encode($nam)),\ 'INP_SOADIAGNOSTICINFO_REQUESTID=',\ 'INP_KERNELGETSTATUS_PROCESSID=',\ 'INP_KERNELTESTRETRY_PROCESSID=',\ 'Verify=Verify') var $rsp = submitRequest($req) if !isSuccess($rsp) {echo 'Failed to get OIM diagnostic dashboard results (',\ join(',',getRspCode($rsp)),' - ',getRspMessage($rsp),')' break } var $htm = htmlLoadResponse($rsp,\ htmlFilter(htmlDisable(htmlFix(htmlParser(),\ $OIM_FIX),\ 'DR'),\ 'td','a','b','pre')) call write_data($htm,4,$rsr) unpretoc } } =head1 COMMON HOME INFORMATION Includes the reports generated by the L module about the common home. =cut toc '%PUSH("%SPLIT%")%' toc '%PUSH("1+:Common Product Home")%' toc '%INCLUDE("OFM_IREQ_OFM_OIM_CH_TF.toc")%' toc '%POP2%' =head1 ORACLE WEBLOGIC SERVER DOMAIN COLLECTIONS It includes all reports produced by the L module for the specified Oracle WebLogic Server domain. =cut toc '%PUSH("%SPLIT%")%' toc '%PUSH("1+:Oracle WebLogic Server Overview")%' toc '%INCLUDE("OFM_WREQ_OFM_OIM_WH_TF.toc")%' toc '%POP2%' toc '%PUSH("%SPLIT%")%' toc '%PUSH("1+:Oracle WebLogic Server Domain")%' toc '%INCLUDE("OFM_WREQ_OFM_OIM_DOM_TF.toc")%' toc '%POP2%' unpretoc =head1 SEE ALSO L, L, L, L, L, L =begin credits =over 10 =item RDA 4.10: Brad Donison. =item RDA 4.14: Mikko Uronen, Kari Jyrala. =item RDA 4.16: Brad Donison. =item RDA 4.17: Brad Donison. =item RDA 4.19: Brad Donison. =item RDA 4.21: Brad Donison. =item RDA 4.22: Brad Donison. =item RDA 4.24: Greg Cook, Andrew Salt. =item RDA 4.26: Brad Donison. =item RDA 8.00: Brad Donison. =item RDA 8.01: Brad Donison. =item RDA 8.03: Irina Donaldson. =item RDA 8.04: Brad Donison, Wes Root. =item RDA 8.06: Brad Donison. =item RDA 8.07: Irina Donaldson. =item RDA 8.09: Brad Donison. =back =end credits =head1 COPYRIGHT NOTICE Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. =head1 TRADEMARK NOTICE Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. =cut