Attribute Configuration File Format

An attribute configuration file defines the attributes that are present in a particular connected directory and supplies formatting information that the meta controller (metacp) is to use when processing data files associated with the connected directory. The attribute configuration file contains one record for each attribute in the connected directory. An attribute configuration file must exist for each DirX Identity agent that is present in DirX Identity. Additional attribute configuration files may exist to process export and import data files with formats that are different from the formats that the DirX Identity agents handle.

This section describes the format of an attribute configuration file. An attribute configuration file consists of the following fields:

  • Attribute definition fields

  • Global information fields for parsing connected directory data files

Attribute Definition Fields

Each attribute defined in an attribute configuration file has a set of attribute definition fields associated with it.The Identity controller uses the information in these fields to:

  • Parse the data files provided by the DirX Identity agents, when importing data into the Identity store (a connected directory of type LDAP)

  • Generate LDAP-style attribute type-and-value syntax when importing data files into the Identity store (a connected directory of type LDAP)

  • Generate the data files for the DirX Identity agents, when exporting data from Identity store (a connected directory of type LDAP)

This section describes the attribute definition fields that can be specified for an attribute.Except the Attribute Length field, all of these fields must be specified for each attribute.

Abbreviation

The abbreviation field specifies the attribute type abbreviation to be used for the attribute. The meta controller uses the specified abbreviation in its attribute mapping operations. The field syntax is:

Abbr:abbreviation

For example:

Abbr:SN

For attribute configuration files that are to be used with LDAP connections to the Identity store, abbreviation must be a valid LDAP attribute name. For example,

Abbr:objectClass

See the String Representation for LDAP Binds chapter for more details about valid LDAP attribute names.

Name

The name field specifies a descriptive name for the attribute. The field syntax is:

Name:name

For example:

Name:Surname

The purpose of this field is to make the attribute configuration file records easier to read; the meta controller does not use this field in its operations.

Prefix

The prefix field specifies the start tag, if any, that is used in the connected directory data file to identify the start of the attribute’s definition. Prefix tags are generally used in directory data files that use a tagged format. The field syntax is:

Prefix: '[prefix]'

where prefix is one or more characters enclosed in single quotation marks.

For attribute configuration files that are to be used with LDAP connections to the Identity store, prefix is the attribute abbreviation followed by an equal sign: abbreviation*=*. For example,

Prefix:'surname='

If the value of prefix is a non-printing character, supply the octal representation that corresponds to the character. For example, to represent a line feed, define the field as:

Prefix:'\012'

If a prefix is undefined for the attribute (because the associated data file is untagged), specify only the single quotation marks ('') in prefix. For example:

Prefix:''

The following example defines attributes for a connected directory that uses LDAP prefixes:

Abbr:givenName     Name:Given-Name    Prefix:'givenName='
                   Suffix:''          Rec-Sep:';'
                   MRule:CIM
Abbr:initials      Name:Initials      Prefix:'initials='
                   Suffix:''          Rec-Sep:';'
                   MRule:CIM
Abbr:postalCode    Name:Postal-Code   Prefix:'postalCode='
                   Suffix:''          Rec-Sep:';'
                   MRule:CIM

Suffix

The suffix field specifies the end tag, if any, that is used in the connected directory data file to identify the end of the attribute’s definition. Suffix tags are generally used in directory data files that use a tagged or an untagged format. For a CSV data file the suffix fields define the separator (e. g. comma or pipe character) and they must be identical for all attributes. The field syntax is:

Suffix: '[suffix]'

where suffix is one or more characters enclosed in single quotation marks.

If the attribute configuration file is to be used with LDAP connections to the Identity store, specify an empty value for suffix ('').

If the value of suffix is a non-printing character, supply the octal representation that corresponds to the character. For example, to represent a line feed, define the field as:

Suffix:'\012'

The following example defines attributes in a connected directory data file that uses a CSV format:

Abbr:EXCN   Name:Common-Name          Prefix:''
            Suffix:','                Rec-Sep:''
            Mrule:-
Abbr:EXDSNM Name:Display-Name         Prefix:''
            Suffix:','                Rec-Sep:''
            Mrule:-
Abbr:EXADR  Name:Internet-Address     Prefix:''
            Suffix:','                Rec-Sep:''
            Mrule:-

Attribute Length

The attribute length field is an optional field used to process connected directory data files that are formatted as fixed-width tables. The field syntax is:

Attrlen:max_data_length

where max_data_length is the maximum number of columns occupied by the attribute definition in the table. For example:

Attrlen:15

The following example defines attributes in a data file with a fixed-width table format that uses no delimiters between attribute records:

Abbr:SN   Name:Surname                Prefix:''
          Suffix:''                   Attrlen:15
          Rec-Sep:''                  Mrule:-
Abbr:GN   Name:Given Name             Prefix:''
          Suffix:''                   Attrlen:10
          Rec-Sep:''                  Mrule:-
Abbr:TN   Name:Telephone Number       Prefix:''
          Suffix:''                   Attrlen:8
          Rec-Sep:''                  Mrule:-

Multi-Valued Attribute Separator

The multivalued attribute separator specifies the string, if any, that is used in the connected directory data file to separate multiple attribute values for the attribute. The field syntax is:

Rec-Sep:'[separator]'

where separator is one or more characters enclosed in single quotation marks (' ').

If the value of separator is a non-printing character, supply the octal representation that corresponds to the character. For example, to represent a line feed, define the field as:

Rec-Sep:'\012'

If a multivalued attribute separator is undefined for the attribute, specify only the single quotation marks (' ') in separator. For example:

Rec-Sep:''

The semicolon (;) is used as multivalued attribute value separator in an LDAP attribute configuration file.

Matching Rule

The matching rule field defines the matching rule that the metacp program is to apply when attempting to detect modifications to the attribute. The field syntax is:

Mrule:rule-keyword

Supply one of the following keywords in rule-keyword:

  • CIM - Use Case-Ignore-String matching. With this matching rule, differences in case between source and target attribute values are ignored, for example, GATES is the same as Gates.

  • CEM - Use Case-Exact-String matching. With this matching rule, differences in case between source and target attribute values are significant. For example, GATES is different than Gates.

  • DN - Use Distinguished Name matching. With this matching rule, differences in case between source and target attribute values in distinguished names are ignored.

  • OCTET - Use Octet String matching. With this matching rule, the byte sequences of the source and target attribute values must match.

  • B64 - Use base64 matching. With this matching rule, enclosing apostrophes and padding characters are ignored. For example, 'BAV0aHJlZQ==' is the same as BAV0aHJlZQ.

  • The dash character (-) - Use to specify that no matching rule is defined.

The metacp program uses the matching rule field to determine how to identify differences between the attribute in the connected directory and the attribute in the Identity store. If no matching rule is defined for the attribute, the meta modifyentry operation compares the two attributes using CIM. If it detects differences, it sends an obj modify operation that specifies -removeattr attribute_type, -addattr attribute_values to the Identity store because the server has no matching rule for the attribute. If a matching rule exists, meta modifyentry compares the two attributes, and sends an obj modify operation that specifies -removeattr old_value -addattr new_value to the Identity store if it detects differences.

The matching rule field is only relevant to attribute configuration files that define LDAP attributes.

The following example illustrates the use of the matching rule field for a set of attributes:

Abbr:postalCode    Name:Postal-Code   Prefix:'postalCode='
                   Suffix:''          Rec-Sep:';'
                   MRule:CIM
Abbr:owner         Name:Owner         Prefix:'owner='
                   Suffix:''          Rec-Sep:';'
                   MRule:DN
Abbr:title         Name:Title         Prefix:'title='
                   Suffix:''          Rec-Sep:';'
                   MRule:CIM
Abbr:telexNumber   Name:Telex-Number  Prefix:'telexNumber='
                   Suffix:''          Rec-Sep:';'
                   MRule:-

Encryption

The encryption field is optional and used to define whether an attribute value needs to be decrypted before the value is sent to the LDAP server. That field is only used in the attribute configuration file describing the attributes of the LDAP directory, e.g. “ldapattr.cfg”.

If set to Y, then the attribute value will be decrypted; if set to N, the attribute value will be taken as it is.

The following example illustrates the use of the encryption field for a set of attributes:

Abbr:postalCode Name:Postal-Code Prefix:'postalCode=' Suffix:'' Rec-Sep:';' MRule:CIM Encryption:N
Abbr:title Name:Title Prefix:'title=' Suffix:'' Rec-Sep:';' MRule:CIM Encryption:Y

Note: This feature is only available, if the meta controller is invoked by the Server (IDS-C) and the Server (IDS-C) provided the environment for performing decryption tasks.

Global Information Fields

Global information fields for parsing connected directory data files include:

  • Record separators

  • Field separators

  • Continuation line and comment indicators

  • Entry and attribute operation code names for LDIF-formatted data files

All global information fields are optional.Specify global information fields at the top of the attribute configuration file, before the attribute definitions.The next sections describe these fields.

Note: Note: LDIF files can contain the string version:1 at the beginning. DirX Identity determines LDIF files when all these fields are set to these values:

  • Op-Code-ADD:add
    Op-Code-DEL:delete
    Op-Code-MOD:modify
    Op-Code-MODDN:moddn
    Op-Code-MODRDN:modrdn

When all fields are set correctly, the string version:1 is generated as first line into the LDIF file.

Record Separator

The record separator field defines information that the meta controller is to use to distinguish between entries in a connected directory data file. The field syntax is:

Record-Sep:'separator'

where separator is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (' ')

The record separator provides the meta controller with a global indicator that it can use to detect the start of the next entry in a data file. The purpose of the indicator is to permit the meta controller to go to the next entry if it is unable to process the current one. If the record separator field is not specified in the attribute configuration file, the meta controller uses '\n' to distinguish between entries.

The following example defines the line feed as the record separator for a data file:

Record-Sep:'\012'

For XML file format, the record separator must be set to the value entry.

Field Separator

The field separator field defines information that the meta controller is to use to distinguish between attribute values in entries within a connected directory data file that uses a tagged format. The field syntax is:

Field-Sep:'separator'

where separator is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (' ').

The field separator is used only in tagged data files to skip attributes in the data file that have not been defined in the attribute configuration file. The field separator permits the meta controller to go to the next attribute if it is unable to process the current one. The field separator is not used as an attribute value separator in an untagged (CSV) data file.

The following example defines the comma as the field separator for a data file:

Field-Sep:','

For XML file format, the field separator must be set to the value newline (\012).

Prefix (Base-64)

The prefix Base 64 field defines information that the meta controller is to use to identify a base64-encoded LDIF attribute using the attribute’s private prefix followed by this global prefix information. The field syntax is:

Prefix (Base-64):'separator'

where separator is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (' '). If this field is not set, the meta controller uses only each attribute’s private prefix when it parses the data file.

The following example defines the colon (:) as the character sequence that is combined with an attribute’s private prefix:

Prefix (Base-64):':'

Comment

The comment field defines information that the meta controller is to use to identify comment lines in an LDIF-formatted connected directory data file or any other connected directory data file. The field syntax is:

Comment:'marker'

where marker is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (' '). The following example defines the # character as a comment marker:

Comment:'#'

Continuation Line

The continuation line field defines information that the Identity controller is to use to identify continued lines in an LDIF-formatted connected directory data file or any other data file with continuation lines. The field syntax is:

Continuation-Line:'marker'

where marker is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (' '). The continuation line marker is only recognized at the beginning of a line. Consequently, the marker is the indication in a line that this line is a continuation of the preceding line. The following example defines the space as a continuation line marker:

Continuation-Line:' '

Enclosing Sequence

The enclosing sequence field defines a marker that the meta controller is to use identify the start and end of an entry in a connected directory data file. The field syntax is:

Enclosing-Sequence:'marker'

where marker is one or more characters (or the octal representation of one or more characters) enclosed in single quotation marks (''). When the meta controller encounters the enclosing sequence marker during its parsing of the data file, it searches for the next occurrence of the enclosing sequence marker and treats everything between the two markers as one entry. The definition of an enclosing sequence marker is useful for parsing untagged data files, especially CSV-formatted files such as Microsoft Exchange data files, where the comma (,) is used as an entry separator but can also be part of an attribute value in an entry.

The following example defines the double-quote (") as an entry boundary marker:

Enclosing-Sequence:'"'

When it encounters two subsequent occurrences of the enclosing sequence marker, the meta controller treats the marker as part of the attribute value. For example, the meta controller parses "data""data" as the value data"data

Operation Code Field

The operation code field specifies the attribute within an LDIF change file that holds the LDIF change file operation code for an entry in the change file. The field syntax is:

Op-Code Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute LCHNGTYPE is defined as the LDIF change file operation code attribute:

Op-Code Field:LCHNGTYPE
          .
          .
          .
Abbr:LCHNGTYPE     Name:ChangeType    Prefix:'changetype:'
                   Suffix:'\012'      Rec-Sep:''
                   Mrule:-

Add Modification Field

The add modification field specifies the attribute in an LDIF change file that represents the "add" attribute modification operation of an LDIF "modify object" change operation. The field syntax is:

ADD-Modification Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute LADD_OP is defined as the LDIF "modify object, add attribute value" attribute:

ADD-Modification Field:LADD_OP
          .
          .
          .
Abbr:LADD_OP       Name:ADD-modification        Prefix:'add:'
                   Suffix:'\012'                Rec-Sep:''
                   Mrule:-

Skip Lines

The skip lines field defines information that the meta controller is to use if a data file contains a certain number of lines at the beginning of the file that it should not process; for example, the header line with the attribute names generated by the Microsoft Exchange admin program. The number of lines as indicated in Skip Lines is ignored while processing an import data file. The field syntax is:

Skip Lines:integer

where integer is a value that is greater than or equal to 0 and specifies the number of lines from the beginning of the file that the meta controller is to ignore when processing an import file. For example:

Skip Lines:1

directs the meta controller to ignore the first line of the import data file.

Replace Modification Field

The replace modification field specifies the attribute in an LDIF change file that represents the "replace" attribute modification operation of an LDIF "modify object" change operation. The field syntax is:

REPLACE-Modification Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute LMOD_OP is defined as the LDIF "modify object, replace attribute value" attribute:

REPLACE-Modification Field:LMOD_OP
         .
         .
         .
Abbr:LMOD_OP  Name:REPLACE-modification   Prefix:'replace:'
              Suffix:'\012'               Rec-Sep:''
              Mrule:-

Delete Modification Field

The delete modification field specifies the attribute within an LDIF change file that represents the "delete" attribute modification operation of an "LDIF "modify object" change operation. The field syntax is:

DELETE-Modification Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute LDEL_OP is defined as the LDIF "modify object, delete attribute or attribute value" attribute:

DELETE-Modification Field:LDEL_OP
          .
          .
          .
Abbr:LDEL_OP  Name:DELETE-modification   Prefix:'delete:'
              Suffix:'\012'              Rec-Sep:''
              Mrule:-

New RDN Field

The new RDN field specifies the attribute within an LDIF change file that represents the "new RDN" parameter in an LDIF "modify DN" change operation. The field syntax is:

New-RDN Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute NEW_RDN is defined as the attribute that holds the new RDN in an LDIF "modify DN" change operation:

New-RDN Field:NEW_RDN
          .
          .
          .
Abbr:NEW_RDN       Name:New-RDN       Prefix:'newrdn:'
                   Suffix:'\012'      Rec-Sep:''
                   Mrule:-

Delete Old RDN Field

The delete old RDN field specifies the attribute within an LDIF change file that represents the "delete old RDN" parameter in an LDIF "modify DN" change operation. The field syntax is:

Delete Old-RDN Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute DEL_OLD_RDN is defined as the attribute in an LDIF "modify DN" change entry that holds the boolean value that specifies whether to delete the old RDN:

Delete Old-RDN Field:DEL_OLD_RDN
          .
          .
          .
Abbr:DEL_OLD_RDN  Name:Delete-Old-RDN  Prefix:'deleteoldrdn:'
                  Suffix:'\012'        Rec-Sep:''
                  Mrule:-

New Superior Field

The new superior field specifies the attribute within an LDIF change file that represents the "new superior" parameter in an LDIF "modify DN" change operation. The field syntax is:

New Superior Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute NEW_SUP is defined as the attribute that holds a new superior in an LDIF "modify DN" change operation.

New Superior Field:NEW_SUP
          .
          .
          .
Abbr:NEW_SUP   Name:New-Superior     Prefix:'newsuperior:'
               Suffix:'\012'         Rec-Sep:''
               Mrule:DN

Modification Separator

The modification separator field specifies the attribute in an LDIF change file that identifies the end of an attribute modification in an LDIF "modify object" change operation. The field syntax is:

Modification-Sep Field:abbreviation

where abbreviation is the attribute type abbreviation for the attribute.

In the following example, the attribute EOA is defined as the attribute that holds the "end-of-attribute-modification" marker in an LDIF "modify object" change operation.

Modification-Sep Field:EOA
          .
          .
          .
Abbr:EOA   Name:End-of-Attribute     Prefix:'-'
           Suffix:'\012'             Rec-Sep:''
           Mrule:-

Add Op Code

The add op code field specifies the keyword in an LDIF change file that represents an "add object" LDIF change operation. The field syntax is:

Op-Code-ADD:keyword

where keyword is a string. For example:

Op-Code-ADD:add

The keyword supplied in the attribute configuration files corresponds to the keyword that is applied as a value to the LDIF Operation Code attribute in the LDIF change file to indicate an "add object" operation. The definition of this keyword in the attribute configuration file permits the meta controller to recognize an LDIF "add object" operation in an LDIF change file.

Delete Op Code

The delete op code field specifies the keyword in an LDIF change file that represents the LDIF "delete object" operation code. The field syntax is:

Op-Code-DEL:keyword

where keyword is a string. For example:

Op-Code-DEL:delete

The keyword supplied in the attribute configuration files corresponds to the keyword that is applied as a value to the LDIF Operation Code attribute in the LDIF change file to indicate a "delete object" operation. The definition of this keyword in the attribute configuration file permits the meta controller to recognize an LDIF "delete object" operation in an LDIF change file.

Modify Op Code

The modify op code field specifies the keyword in an LDIF change file that represents the LDIF "modify object" operation code. The field syntax is:

Op-Code-MOD:keyword

where keyword is a string. For example:

Op-Code-MOD:modify

The keyword supplied in the attribute configuration files corresponds to the keyword that is applied as a value to the LDIF Operation Code attribute in the LDIF change file to indicate an LDIF "modify object" operation. The definition of this keyword in the attribute configuration file permits the meta controller to recognize an LDIF "modify object" operation in an LDIF change file.

Modify DN Op Code

The modify DN op code field specifies the keyword in an LDIF change file that represents the LDIF "modify DN" operation. The field syntax is:

Op-Code-MODDN:keyword

where keyword is a string. For example:

Op-Code-MODDN:moddn

The keyword supplied in the attribute configuration files corresponds to the keyword that is applied as a value to the LDIF Operation Code attribute in the LDIF change file to indicate a "modify DN" operation. The definition of this keyword in the attribute configuration file permits the meta controller to recognize an LDIF "modify DN" operation in an LDIF change file.

Modify RDN Op Code

The modify RDN op code field specifies the keyword in an LDIF change file that represents the LDIF "modify RDN" operation. The field syntax is:

Op-Code-MODRDN:keyword

where keyword is a string. For example:

Op-Code-MODRDN:modrdn

The keyword supplied in the attribute configuration files corresponds to the keyword that is applied as a value to the LDIF Operation Code attribute in the LDIF change file to indicate a "modify RDN" operation. The definition of this keyword in the attribute configuration file permits the meta controller to recognize an LDIF "modify RDN" operation in an LDIF change file.

Ignore Empty Value

The ignore empty value field controls whether the meta controller returns empty attributes (attributes with no value) in the results of an obj search operation on a connected directory. The field syntax is:

IgnEmptyVal:n

where n is Y to ignore empty attribute values and N to return empty attributes.

Set the IgnEmptyVal field to N when exporting the contents of the Identity store to a connected directory that is a data file with a position-driven (untagged) file format, such as table format or CSV. In this type of data file, the absence of attributes needs to be handled. For example, suppose you are exporting the attributes surname, given-name, and telephone-number to a CSV-formatted data file. Surname and telephone-number have the values Schmid and 41496, and given-name is empty. When IgnEmptyVal is set to N, the meta controller generates the following data on export:

Schmid,,41496

When exporting to a connected directory that is a data file with a tagged format, you can choose to list the empty attributes with the prefix and no attribute value (IgnEmptyVal:N), or to drop empty attributes entirely (IgnEmptyVal:Y). For example, if IgnEmptyVal is set to N, the result is:

SN:Schmid
GN:
TN:41496

If IgnEmptyVal is set to Y, the result is:

SN:Schmid
TN:41496

If you want the meta controller to write only special attributes as empty to the datafile and not all attributes you can do it the following way:

Setting for example the attribute mail to empty (in dependence of whatever, mostly in case of it is empty after mapping) write in your post join mapping:

set tgt(mail) [llist ""]
instead of
set tgt(mail) ""