Preprocessor-relevant configuration parameters
IMPORTANT: The One Identity Manager database needs to be recompiled every time a preprocessor-relevant configuration parameter and its options are changed.
The Preprocessor relevant parameter option is used to label a configuration parameter as preprocessor relevant. A preprocessor expression is entered in the associated configuration parameter option.
When a preprocessor relevant configuration parameter is set it is valid globally across the system. The preprocessor condition does not come into effect until the database has been compiled.
NOTE: Predefined preprocessor configuration parameters are overwritten during schema installation. Define company-specific, preprocessor-relevant configuration parameters and options in the Designer under the Custom configuration parameter.
To display preprocessor relevant configuration parameters
-
In the Designer, select the Base data > General > Configuration parameters category.
-
In the Configuration Parameter Editor, select the View > Preprocessor definitions menu item.
The Preprocessor definitions view shows all preprocessor conditions. Double-click an entry to display the configuration parameter.
NOTE: In the Designer, you can find an overview of existing preprocessor dependencies in the One Identity Manager Schema > Preprocessor dependencies category.
Related topics
Preprocessor conditions in objects
IMPORTANT: Each modification to preprocessor objects requires recompiling the One Identity Manager database.
You can enter a preprocessor condition directly for certain objects.
To enter a preprocessor condition
-
In the Preprocessor condition property, enter the preprocessor expressions of the configuration parameters. You can link preprocessor expressions together with AND, OR, NOT, ().
Example:
The column Person.RiskIndexCalculated should only be shown in the interface if the risk function is set.
The following preprocessor conditions are entered in the column definition (DialogColumn table).
Table 131: Example for preprocessor conditions
Person |
RiskIndexCalculated |
COMPLIANCE |
If a preprocessor-relevant configuration parameter is enabled or disabled, tasks are created for the DBQueue Processor to calculate all preprocessor and calculation tasks for the affected objects. The Disabled by preprocessor option is updated for each object. If the re-interpretation of the preprocessor conditions leads to a change in the option, the preprocessor interpretation tasks that follow are generated for the dependent objects. User permissions can also be affected. After DBQueue Processor has processed the tasks, the database needs to be recompiled.
The interpretation of preprocessor conditions has the following effects:
-
If a table is disabled by a preprocessor condition then all the columns and object definitions that relate to the table and the user interface forms and the associated navigation are disabled.
-
If a primary key column is disabled, all foreign key columns that relate to it are disabled.
-
If a primary key member is disabled according to the preceding rule (for example, in the case of many-to-many tables), then this primary key’s table and all further columns belonging to this table are also disabled.
This method has the advantage that, for example, when a table such as ADSGroup is disabled then all assignments are automatically disabled, such as the table, DepartmentHasADSGroup.
NOTE: In the Designer, you can find an overview of existing preprocessor dependencies in the One Identity Manager Schema > Preprocessor dependencies category.
Related topics
Preprocessor conditions in VB.Net expressions
IMPORTANT: Every modification to preprocessor conditions in VB.Net expressions requires recompiling the One Identity Manager database.
Preprocessor conditions can be used in VB.Net expressions. Script code that is dependent on a preprocessor condition has to be passed in an #if...then...#else statement. To formulate the preprocessor condition, use the preprocessor expressions of the preprocessor-related configuration parameters. You can link preprocessor expressions together with AND, OR, NOT, ().
The interpretation of the preprocessor conditions is not carried out until the script is generated.
Syntax
#If <preprocessor_condition_1>
’ code, for this preprocessor condition
#ElseIf <preprocessor_condition_2> then
’ code, for this preprocessor condition
#Else
#Endif
Example:
The ITSHOP preprocessor condition is entered in the column definition (DialogColumn table) for the ADSGroup.IsForITShop column. The template in the ADSGroup.DisplayName column should reference the IsForITShop column. In order to remain compatible, the following construction has to be used for the template:
#If ITSHOP Then
If $IsForITShop:Bool$ And $UID_AccProduct$ <> "" Then
Value = $FK(UID_AccProduct).Ident_AccProduct$
Else
End If
#Else
#End If
Related topics
Evaluation of preprocessor conditions during compilation
In order to become effective on a systemwide basis, every modification to preprocessor relevant configuration parameters as well as modifications to preprocessor conditions on objects and VB.Net expressions requires the One Identity Manager database to be recompiled.
The following is true for compiling:
-
Internal program code in the form of an #if...then...#else statement is created for objects that have a preprocessor condition. Program code in sections whose preprocessor condition does not apply, do not exist for the compiler and are therefore not parsed. These objects are assumed not to exist.
-
VB.Net expressions that contain preprocessor conditions are compiled. The program code exists. The interpretation of the preprocessor conditions is not carried out until the script is generated.
These templates are valid for compiling:
-
Templates for columns that are disabled by preprocessor conditions are not compiled and the resulting relations are not saved in the DialogNotification table. These columns are therefore considered to be non-existent.
-
Templates that relate to disabled columns cause a compiler error message if the corresponding part of code is not linked in a preprocessor statement.