Wednesday, July 27, 2011

Impact of Changing Classification Values

You may find your users want you to remove/replace some classification values, but before you make the requested changes you need to determine if that classification is used anywhere else in the product and what the impact of changing it will be.

To determine which objects use a specific classification run the following SQL script (substituting the name of the root classification you are looking for for the value in red below) :

select name
from IBS_SPEC_TYPE
where spec_template_id in
(select spec_template_id from ibs_spec_value_meta_data
where atr_type = 'Classification' and
classification_root_name = 'Location Primary Use')

The results of this query will show which objects have a field that points to that classification root value. Using this, you can go into the Data Modeler for each object, select the field that uses the classification and click on 'Where Used'. This will pop up a window showing all GUI's, queries and workflows where the field is used. Pay special attention to workflows that show 'Workflow Condition' in the Action column - this will help identify workflows that may use specific classification values in their logic.

Locating the Module for a Business Object

If you've ever known the name of the business object you were looking for, but could not figure out which module it is located in and didn't feel like searching every module in the GUI builder, below is a script to help you out. The IBS_SPEC_TYPE table provides a list of all business objects and the IBS_MODULE table give a list of all modules, so a simple SQL script can join these two tables and give you your answer. For a list of all objects and modules use this:

select O.NAME, M.MODULE_NAME
from IBS_SPEC_TYPE o, IBS_MODULE m
where O.SPEC_CLASS_TYPE = M.MODULE_ID
order by M.MODULE_NAME, O.NAME

If you just want to get the details for a specific object you can use the script below, substituting the value in red for the name of the BO you are looking for.

select O.NAME, M.MODULE_NAME
from IBS_SPEC_TYPE o, IBS_MODULE m
where O.SPEC_CLASS_TYPE = M.MODULE_ID
and O.NAME = 'triREPaymentAdjustment'
order by M.MODULE_NAME, O.NAME