HomeMap fields manually
Overview
To populate the Profiles database, map fields in the Profiles database to fields in the LDAP.
When you run the Profiles population wizard in interactive mode, it generates two property files...
Wizards/TDIPopulation/tdisetting.properties
Wizards/TDIPopulation/mappings.propertiesIf the -mappingFile command parameter is not specified when mapping fields manually, the population wizard uses mappings.properties to create LDAP values.
The Profiles population wizard also creates...
Wizards/TDIPopulation/TDI/map_dbrepos_from_source.properties
..and updates this file with data from mappings.properties when you run the Profiles population wizard in silent mood.
Both map_dbrepos_from_source.properties and mapping.properties have similar content. Only use map_dbrepos_from_source.properties as the value of the -mappingFile command parameter if you cannot use the mappings.properties file.
To map fields between the Profiles database and the LDAP
- map_dbrepos_from_source.properties
- map_dbrepos_to_source.properties
Edit profiles_functions.js to see the options for the different mapping functions. You can add your own functions if necessary.
Consider using LDAP viewer software such as Apache Directory Server to help you map the fields.
Define mappings used when populating the Profiles database from the LDAP
- Edit...
TDI_HOME/map_dbrepos_from_source.properties
- Add or modify the field values.
Any values you omit or set to null will not be populated in the database.
You can modify the values in one of the following ways:
1:1 mapping If one field in the Profiles database matches one field in the enterprise directory, type the name of the field in the Profiles database and set it equal to the associated source database LDAP property. For example: bldgId=buildingname
Complex mapping If there is a more complex relationship between the fields in the Profiles database and enterprise directory, such as, for example, the content of the property in the LDAP must be split into multiple fields in the Profiles database, use a Javascript function to define the relationship. Define the function in profiles_functions.js and wrap the name of the Javascript function in curly brackets {}. Begin function names with "func_" so you can more easily identify them. For example: bldgId={func_map_to_db_bldgId}
To define mappings from the Profiles database to the enterprise directory:
- Edit...
TDI/map_dbrepos_to_source.properties
- Add or modify the field values in one of the following ways:
1:1 mapping If one field in the Profiles database matches one field in the LDAP, type the name of the source LDAP property and set it equal to the field in the Profiles database. For example: buildingname=PROF_BUILDING_IDENTIFIER
Complex mapping If there is a more complex relationship between the fields in the Profiles database and the enterprise directory, such as, for example, the content of the property must be split into multiple fields in the Profiles database, use a Javascript function to define the relationship. Define the function in profiles_functions.js and wrap the name of the Javascript function in curly brackets {}. Begin function names with "func_" so you can more easily identify them. For example:
buildingname={func_map_from_db_PROF_BUILDING_IDENTIFIER}
- Add a line at the bottom of the file and type the name of the LDAP file that you want to map to the extension field. For example:
PROF_VALUE.property1=carLicense
- After the Tivoli Directory Integrator Solution files are extracted, edit...
TDI/conf/LotusConnections-config/tdi-profile-config.xml...
- Modify the file to indicate the property to extend, the property's name, data type, and key. Use the following parameters:
Parameter Description extensionId The ID of the extension attribute. Required.
sourceKey The name of the LDAP attribute that maps to the extension attribute. Required.
userLabel An administrator-defined label for the extension attribute that is populated into the database. This string does not display in the user interface or API. Optional
userTypeString An administrator-defined string defining the data type of the extension attribute. This string does not display in the user interface or API. Optional
For example, to add a simple attribute called spokenLangs, the configuration would look similar to the configuration in the profiles-config.xml file:
<simpleAttribute extensionId="spokenLangs" length="64" userLabel="Spoken Languages" userTypeString="String" sourceKey="spokenLang"/>The formatting is compatible between tdi-profile-config.xml and profiles-config.xml, allowing you to copy and paste configuration information between the files.
- Save your changes to tdi-profile-config.xml and then close the file.
The properties in map_dbrepos_from_source.properties have the default values defined in the table below. Many of them are null. You must determine which LDAP properties to map to your database fields and edit this file to specify values that apply to your configuration. Any values you omit or set to null will not be populated in the database.
TCI property Default LDAP Attribute Mapping alternateLastname null blogUrl null bldgId null calendarUrl null courtesyTitle null deptNumber null description null displayName cn employeeNumber employeenumber employeeTypeCode employeetype experience null faxNumber facsimiletelephonenumber freeBusyUrl null floor null givenName givenName groupwareEmail null guid See Note. ipTelephoneNumber null countryCode c isManager null jobResp null loginId See Note. managerUid $manager_uid This property represents a lookup of the UID of the manager using the Distinguished Name in the manager field.
mobileNumber mobile nativeFirstName null nativeLastName null orgId ou pagerNumber null pagerId null pagerServiceProvider null pagerType null officeName physicaldeliveryofficename preferredFirstName null preferredLanguage preferredlanguage preferredLastName null secretaryUid null shift null distinguishedName $dn surname sn You must provide this field because the Search feature relies on it being present in the Profiles database.
telephoneNumber telephonenumber timezone null title null uid See Note. workLocationCode postallocation surnames sn givenNames gn logins null
The guid property identifies the global unique ID of a user. This property's value is created by the LDAP and is unique, complex, and never changes. It is essential in that it maps each user's Lotus Connections data to their User ID when using the Profiles database as the user repository. The mapping of the guid property must be handled differently depending on the type ofLDAP that you are using:
- Active Directory...
guid={function_map_from_objectGUID}
Use a Javascript function to define the value for Active Directory because objectGUID is stored in Active Directory as a binary value, but is mapped to guid, which is stored as a string in the Profiles database.
Also, keep in mind that the samAccountName property used by Active Directory has a 20-character limit, as opposed to the 256-character limit of the other IDs used by Lotus Connections.
- Active Directory Application Mode (ADAM)...
guid={function_map_from_objectSID}
- Domino...
guid={function_map_from_dominoUNID}
- IBM Directory Server...
guid=ibm-entryUuid
- Sun Java System Directory Server...
guid=nsUniqueID
- Novell eDirectory...
guid={function_map_from_GUID}
If you edited wimconfig.xml to use a custom global unique ID, be sure to specify that custom ID here. The uid property, not to be confused with the guid property, defines the unique ID of a user. The uid is a critical field in the Profiles database. The value in it is used to link together entries for a given person across multiple tables. The value you map to uid must meet the following requirements:
- It must be present in every entry which is to be added to the database.
- It must be unique.
- It must be 256 characters or fewer in length.
In Microsoft Active Directory, although there often is a UID field available, this is not always the best choice for mapping to uid because it is not guaranteed to be present for all entries. A better choice is sAMAccountName because it usually does exist for all entries. Other values are acceptable also, as long as they meet the requirements.
Notes
- If you are mapping the uid from an LDAP field, specify the name of the field. However, if you need to parse it from the distinguished name and it is in the DN in the form of uid=value, use the following mapping function:
{func_map_to_db_UID}
- Use the isManager and managerUid properties to set up the organizational structure of the organization. The isManager field determines whether the current person is a manager or not. You must assign a Y (Yes) or N (No) value to this property for each entry. Y identifies the person as a manager. The managerUid identifies the UID of the current person's manager. By default, managerUid is mapped to $manager_uid, which represents a lookup of the UID of the manager (using the Distinguished Name contained in the LDAP manager field). If a user's manager information is not contained in the $manager_uid field, you should adjust the mapping accordingly. These two properties work together to identify manager/employee relationships and create a report-to chain out of individual user entries.
- If users intend to log into Profiles using a user name other than the value specified in the uid or email properties, map that user name value to the loginId property. To do so...
- Set the loginId property in map_dbrepos_from_source.propeties equal to the LDAP property to use as the login ID. For example, if you are using Active Directory and want to use the samAccountName property as the login property, edit the property value as follows:
loginId=samAccountName
Related tasks
Manually populate the Profiles database
Synchronize user data between Profiles and the LDAP directory
Specify a custom ID attribute for users or groups
Update Profiles when changing LDAP directory
Tivoli Directory Integrator properties
Supplemental user data for Profiles
Report-to chains for Profiles
Profiles attributes
Attribute mapping for Profiles
Population functions for populating ID into PROF_GUID