All known provisioning errors thrown by OIM or Yale objects are classified into one of three categories. This category tells the monitoring system how to treat the error.
| Category | Retry Count | Meaning |
|---|---|---|
| OK | any | Listed as OK with a green icon. No further action is necessary. |
| WARN | Not maxed out | Listed as OK with a green icon. No immediate action is necessary. |
| WARN | Maxed out | Listed as a warning with a yellow icon. No immediate action is necessary. |
| FAIL | Not maxed out | Listed as a warning with a yellow icon. No immediate action is necessary. |
| FAIL | Maxed out | Listed as a failure with a red icon. Action should be taken to resolve the problem as soon as possible. |
| Unclassified | any |
Listed as a warning with a yellow icon. No immediate action may be necessary. The error should be added to the classification table. |
In addition to the above classifications, if the status page is being checked outside of normal business hours (8:00 AM - 5:00 PM Monday through Friday) the above classifications will all be bumped down one level. So error categories of FAIL above would be downgraded to WARN, and WARN downgraded to OK. This is done because most provisioning errors are not critical ones where someone needs to be contacted off-hours to address the issue.
The oim_error_classification table lists all classified errors. It consists of four columns:
| Column | Contents |
|---|---|
| sch_data |
Contains the error message stored by OIM. For classified errors, this matches the sch.sch_data value. |
| classification | This is how the error is classified. Valid values are OK, WARN or FAIL. |
| off_hours_ovrd | This is a flag to override the downgrading of error classifications outside of normal work hours. When set to Y, the error condition WILL NOT downgrade one level after hours. |
| display_as | English description of the error. |
Query for error counts and classifications:
SELECT sch.sch_data,
obj.obj_name,
COUNT (*) error_count,
NVL (cls.classification, 'NONE') classification,
DECODE (osi.osi_retry_counter,
0, 'MAXED',
NULL, 'MAXED',
'NOT MAXED') oim_retry_status,
NVL (cls.off_hours_override, 'N'),
NVL (cls.display_as, 'Not Classified') display_as
FROM idmgr.oti,
idmgr.sch,
idmgr.obj,
oim_error_classification cls,
idmgr.osi
WHERE oti.sch_key = sch.sch_key
AND obj.obj_key = oti.obj_key
AND osi.sch_key = sch.sch_key
AND sch.sch_status = 'R'
AND sch.sch_data = cls.sch_data(+)
GROUP BY sch.sch_status,
sch.sch_data,
obj.obj_name,
cls.classification,
osi.osi_retry_counter,
cls.off_hours_override,
cls.display_as;
Build this into a query with classification and retry attempts.