Manual Migration

Perform all the steps described in this chapter that are relevant to adapting your environment to DirX Identity.

General Aspects

The following manual migration steps are relevant for all DirX Identity versions.

Restoring Preserved Files

Restore the specific information from the files you backed up as described in the section “Preserving Files” in the chapter “Preparing the Migration” by merging the information in the backup files into the files in the relevant locations.

You only need to update the file dxi_java_home/lib/security/cacerts with the information from the relevant backup.

Migrating Passwords for JMS-based Auditing

Performing this task is only necessary if you use JMS-based auditing; that is, if the JMS-based Auditing flag is checked in the Status and Auditing tab of your IdS-J Server (Java-based Server) configuration object in the Connectivity database. (Connectivity view → DirX Identity Servers → your-ids-j-server → Status and Auditing tab → Auditing – General section).

In older DirX Identity versions, the password and user were taken from an attribute at the ids-j object where the password was stored in clear text. Beginning with V8.7, the user and password are now taken from a specified bind profile. If you use JMS-based auditing, you need to migrate the configured user and password as follows:

  1. Create a bind profile that holds the user and password. We recommend adding the bind profile to your Identity Store connected directory. Only the User and Password bind parameters are required. Enter the text JMS in Anchor.

  2. In the IdS-J Server’s Status and Auditing tab, enter the newly created bind profile into Bind Profile.

  3. Restart the Ids-J Server.

  4. Repeat steps 2 and 3 for every IdS-J Server configuration object that uses JMS-based auditing using the bind profile you created in step 1.

Migrating Passwords for Mail and SMS Gateway Configuration

In the Provisioning view, the SMTP configuration object for sending e-mail notifications and the SMS Gateway configuration object for sending SMS notifications are located in WorkflowsConfigurationServices.

If the Authenticate flag is checked for these configuration objects, the password information for these objects needs to be migrated.

For each configuration object, enter the password in the relevant field and then save the object. Now the passwords are stored encrypted according to the type of encryption mode specified in the Connectivity database’s central configuration object (in Encryption Mode in the Server tab).

Migrating Passwords for Sending Notifications in Tcl-based Workflows

You can define notifications in the Connectivity view at the metacp job in the Operation tab. If you have used these notifications with a user and password, you need to migrate the referenced service object, which is usually the Mail Service (ConfigurationServicesSystemMail Service).

Open the notification object (it’s usually located below the metacp job object (Connectivity view → Jobsyour_metacp_jobyour_notification_object)) and then click the Service link in the Service Definition area to open the service object. Enter the password and save the object. Now the password is stored encrypted according to the encryption mode defined in the Connectivity central configuration object (Encryption Mode in the Servers tab).

Using SAP JCo version 3.1.4 or Higher for SAP ECC UM Connector/Agent

We recommend upgrading to the latest version.

Migrating SPML Provisioning Web Services

After installing and configuring DirX Identity, configure the services according to the section "Runtime Operation" in the chapter "SPML Provisioning Web Services" in the DirX Identity Integration Framework Guide.

After customizing the Provisioning Web Services, merge the relevant configuration information from your backup into the relevant files of the folder install_path/*provisioningWebServices/provisioningServlet-*technical_domain_name.

For selected migration paths, the files ProvisioningWebServicesChanges.txt* in the subfolder Documentation/DirXIdentity/ProvisioningWebServices of the installation media list all files and folders to be merged.

When upgrading from a version lower than V8.5, the folder install_path/provisioningServlet is obsolete. Keep a related backup outside the DirX Identity installation and then remove this folder. When you are sure that the backup is no longer needed, remove the backup, too.

Migrating SPML Provisioning Web Services Clients

Migrating the SPML Provisioning Web Services clients consists of the following steps:

  • Stop using the obsolete, unsupported sample client and remove the following related files: agentconf.xml, conf.xml, cpappend.bat, fireSOAP-Request.bat, fireSOAP-Request.sh, log4j.properties, request.xml in the folder install_path/provisioningServices/lib. These files represent an obsolete sample client that uses a proprietary format in sent requests and received responses. Using this client is no longer supported. Stop using this client or related customizations and then remove these files.

  • Update the runtime environment of your Web Services clients with the jar files shipped with DirX Identity. The set of jar files to be used is located in the folder install_path/provisioningServices/lib.

  • Ensure that the classpath in your runtime environment of your Web Services clients is computed so that the appropriate set of jar files is on the classpath. You’ll find samples of the correct classpath computation in the file install_path/provisioningServices/spmlv2/fireSpmlv2-Request.bat (Windows platforms) or fireSpmlv2-Request.sh (UNIX platforms).

  • The file install_path/provisioningServices/spmlv2/conf.xml is overwritten at installation time. Therefore, you must adapt this file according to the section "Getting Started with the Test Client" in the chapter "SPML Provisioning Web Services" in the DirX Identity Integration Framework Guide. You can do this either from scratch or by merging the relevant information from a related backup.

Migrating a Customized Web Center

If you have a customized Web Center, you must merge the changes from your backed-up customized version into the new version of Web Center which now contains the domain name:

install_path/web/webCenter-technical_domainname

The files WebCenterChanges*.txt in the subfolder Documentation/DirXIdentity/WebCenter of the installation media list all files and folders to be merged.

Note that the new URL is now

http://host:8080/webCenter-technical_domainname

You can rename the URL by renaming the related file webCenter-technical_domainname.xml in the folder tomcat_path/conf/Catalina/localhost. If you rename the URL, you must update the related URL in the Provisioning Store accordingly. (DirX Identity Manager → Provisioning → Workflows → Configuration → Services → Approval, Property Location (URL, server)).

Migrating a Customized Web Center for SAP NetWeaver

If you have a customized Web Center for SAP NetWeaver, you must merge the changes from your backed-up customized version into the new version of Web Center which now contains the domain name:

install_path/web/webManagerForSAP-technical_domainname

The files WebCenterChanges*.txt in the subfolder Documentation/DirXIdentity/WebCenter of the installation media list all files and folders to be merged.

Migrating a Customized Web Center for Password Management

If you have a customized Web Center for Password Management, you must merge the changes from your backed-up customized version into the new version of Web Center which now contains the domain name:

install_path/web/pwdManagement-technical_domainname

The files WebCenterChanges.txt* in the subfolder Documentation/DirXIdentity/WebCenter of the installation media list all files and folders to be merged.

Migrating a Customized Business User Interface

See the Business User Interface Configuration Guide for more detail information about migrating.

Migrating the ActiveMQ Messaging Server

In some cases, the migration of the repository (file-based database kahadb) from a former ActiveMQ version to the version that comes with DirX Identity V8.10 does not work.

For this reason, we strongly recommend that you verify that all message queues in ActiveMQ are empty before upgrading (enqueuer and dequeuer counters are equal in Web Console). In rare cases, ActiveMQ doesn’t start correctly after migration because of kahadb issues (the repository). In this case, the only choice is to delete the kahadb completely.

Adapting Size Limits for LDAP Searches (using DirX Directory)

The size limit applied to an LDAP search operation limits the number of returned entries in single searches and paged searches.

The source is:

  1. LDAP search operations option size limit (user defined)

  2. LDAP server‘s configuration property “Ldap-Search-Svc-Ctl” (LSES) (defined by the administrator for each LDAP server)

  3. DSA‘s User Policy (defined by the administrator, user specific)

The value in force is 3 or a smaller limit from 2 or 1 (if there is no specific limit for that user; for example, there is no DSA User Policy for that user).

Older directory versions (before release “DirX Directory V8.2B”) had a problem interpreting the size limit in search operations: they applied the size limit to every single search operation in a series of paged searches. Therefore, the size limit could easily be circumvented by specifying a page size smaller than the size limit in force.

Starting with DirX Directory 8.2B, the size limit is applied to the entire search operation regardless of whether or not it uses simple paging control.

Caution: Applications may see a changed behavior:

  • Retrieving the nth page of a paged search operation may return with a “size limit reached” return code and an empty cookie.

  • The size limit in force must be big enough for all entries in all pages returned in one search operation.

  • For anonymous users, the size limit is defaulted to 2048.

  • Use the UserPolicy (USP attribute of the root DSE) to set the required limits.

Please note that DirX Identity has defined user policies with a size limit of 32,768 for non-paged searches and a paged result size limit of 100,000 (for the Connectivity branch and for each domain in the Provisioning branch).

Example (including the sample domain):

dirxadm> show / -attr USP -p
1) /
     User-Policy
         User-Subtree-Name       : /DXMC=DirXmetahub/DXMC=Groups/CN=Read
         Size-Limit              : 32768
         Paged-Search-Size-Limit : 100000
     User-Policy
         User-Subtree-Name       : /CN=DirXmetaRole-SystemDomain/CN=SystemAdmin
         Size-Limit              : 32768
         Paged-Search-Size-Limit 100000
     User-Policy
         User-Subtree-Name       : /CN=My-Company/CN=TargetSystems/CN=DirXmetaRole/CN=Groups/CN=DomainAdmins
         Size-Limit              : 32768
         Paged-Search-Size-Limit : 100000

Normally you should not have any size limit problems; if you do, you must increase either the size limit of 32,768 or the paged result size limit of 100,000 to some higher value.

When configuring a new customer domain, the default values for the two size limits are as described in this section.

Extending the DirX Identity Schema for Customer Domains

If you upgrade to a new DirX Identity version, be aware that the schema for certain target system objects may have been extended for the purpose of provisioning new connected system attributes. The schema for the My-Company domain is updated during the Initial Configuration if the domain step with the My-Company domain is selected. If you configure your own customer domain, you must update the schema for that domain by running the appropriate agent schema scripts provided in the install_path*/schema/tools* folder. For a detailed description of this procedure, see the section “Extending the Schema for the Target System Workflows” in the DirX Identity Application Development Guide.

The following sections provide an overview of the schema changes provided for all the supported connected systems. Except for RACF, no migration needs to be done manually.

Agent Schema Changes in V8.10

There are no agent schema changes in V8.10.

Agent Schema Changes in V8.9

The following systems are no longer supported:

  • UNIX-PAM

  • SoarianClinical

Agent Schema Changes in V8.7

There are no agent schema changes in V8.7.

Agent Schema Changes in V8.6

RACF

The following attributes had an erroneous substring matching rule (caseExactSubstringMatching instead of caseIgnoreSubstringMatching)

  • krbPrincipalName

  • racfLdapBindDN

  • racfLdapBindPw

  • racfNdsUserName

  • racfLNotesShortName

An automatic migration of these attributes is available and is executed while running the DirX Identity Configuration tool. You can also start this migration step by hand at any time. It is located in:

install_path/tools/migration/86/database

As the Provisioning part is migrated, all arguments refer to the Provisioning configuration database.

Usage:

MigrateRACFschema.bat host port user password ssl domain-DN logfile

Example:

MigrateRACFschema.bat localhost 389 "cn=DomainAdmin,cn=My-Company" dirx 0 "cn=My-Company" log.txt

Manual schema update:

After the user data has been migrated, you must drop the erroneous attributes manually from the schema. The erroneous attributes have been renamed in the schema by appending the suffix OLD. Adapt the relevant object classes as listed in the following files:

install_path/tools/migration/86/database/postSchemaUpdate/dirx.racf.ldif (for DirX Directory)

For DirX Directory, the relevant changes are:

# "racfLNotesShortNameOLD" has been dropped
dn: cn=schema
changetype: modify
add: objectclasses
objectclasses: ( 1.3.12.2.1107.1.3.102.6.16.16 NAME 'racfLNotesSegment'
    DESC 'This is a proprietary DirXmetahub objectclass.'
    AUXILIARY
    MAY ( racfLNotesShortName ) )
-
# "racfNdsUserNameOLD" has been dropped
dn: cn=schema
changetype: modify
add: objectclasses
objectclasses: ( 1.3.12.2.1107.1.3.102.6.16.17 NAME 'racfNdsSegment'
    DESC 'This is a proprietary DirXmetahub objectclass.'
    AUXILIARY
    MAY ( racfNdsUserName ) )
-
# "racfLdapBindDNOLD" has been dropped
# "racfLdapBindPwOLD" has been dropped
dn: cn=schema
changetype: modify
add: objectclasses
objectclasses: ( 1.3.12.2.1107.1.3.102.6.16.18 NAME 'racfProxySegment'
    DESC 'This is a proprietary DirXmetahub objectclass.'
    AUXILIARY
    MAY ( racfLdapBindDN $ racfLdapBindPw $ racfLdapHost ) )
-
# "krbPrincipalNameOLD" has been dropped
dn: cn=schema
changetype: modify
add: objectclasses
objectclasses: ( 1.3.12.2.1107.1.3.102.6.16.19 NAME 'racfKerberosInfo'
    DESC 'This is a proprietary DirXmetahub objectclass.'
    AUXILIARY
    MAY ( racfCurkeyVersion $ racfEncryptType $ krbPrincipalName $
    krbPrincipalNameOLD $ maxticketage ) )
-
Salesforce

The following new attributes are provided:

  • dxmSLSFcontactId

  • dxmSLSFcontactName

  • dxmSLSFdefaultPermissionSet

  • dxmSLSFdefaultPermissionSet-DN

  • dxmSLSFpermissionSet

  • dxmSLSFpermissionSet-DN

  • dxmSLSFprofileId

  • dxmSLSFprofileName

  • dxmSLSFprofile-DN

  • dxmSLSFuserLicenseName

The following new object class is provided:

dxmSLSFpermissionSet

Please note that currently only the schema for Salesforce has been extended. These attributes and object classes are currently not supported by the Salesforce Connector and the Salesforce realtime workflow.

Agent Schema Changes in V8.5

ADS

The following new attributes are provided:

  • dxmLyncInternetAccessEnabled

  • dxmLyncOptionFlags

  • dxmLyncPrimaryHomeServer

  • dxmLyncUserPolicies

  • dxmLyncUserRoutingGroupId

  • dxmLyncUserEnabled

  • dxmLyncFederationEnabled

  • dxmLyncDeploymentLocator

  • dxmLyncPrimaryUserAddress

The following new object class is provided:

dxmLyncUser

Agent Schema Changes in V8.4

DSWin is no longer supported.

NDS is no longer supported.

Salesforce is new.

LDAP Lock Mechanism for User Objects

A lock mechanism (preventing parallel updates for a user) has been implemented in DirX Identity V8.6 and was revised in DirX Identity V8.6-SP1 and again in DirX Identity V8.10. More details are available in the use case document DXI Java Programming.

Migrating Realtime Workflows to Support Client-side SSL Authentication

Client-side SSL authentication is supported in realtime workflows when using one of the following connectors: ADSConnector, LDAPConnector, and RACFConnector.

The XML workflow definition needs to be adapted to support additional connection parameters.

Migration is done automatically during the first Configurator run. All workflows in the Connectivity database (using any of the connectors listed above) are processed.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/89/rtworkflows

As the Connectivity part is migrated, all arguments refer to the Connectivity configuration database.

Usage:

MigratePortForClientSSL.bat host port user password ssl logfile

or

MigratePortForClientSSL.sh host port user password ssl logfile

Example:

MigratePortForClientSSL.bat localhost 389 "cn=admin,dxmC=DirXmetahub" dirx 0 trace.txt

Aspects Relevant to Using DirX Directory V8.6 or Higher

Rebuilding Attribute Indexes to Handle Improved Search Operations

DirX Directory V8.6 provides improved search operation processing, especially for AND filter combinations that begin with filter items (for example, uid=b*), “greater than or equal to” filter items (for example, time>=20170716) and/or “less than or equal to” filter items (for example, time⇐20170716) - apply.

For best performance, we recommend re-building the indexes for the attributes where these search filters apply on a regular basis; for example, on a bimonthly schedule.To perform this task, for example, use the following dirxadm db attrconfig command:

dirxadm> db attrconfig uid time -index BUILD

Note that the DSA runs in the POSTINDEXING operation mode while the db attrconfig command is in progress and update operations will be rejected.

DirX Identity attributes that need to be handled this way include:

dxmStatusExpirationTime

dxrCertificationDate

dxrDeleteDate

dxrDisableEndDate

dxrDisableStartDate

dxrEndDate

dxrExpirationDate

dxrPwdExpiryNotified

dxrStartDate

Migration of New LDAP Controls LDAP_CTRL_NO_MODTIME_UPD (1.3.12.2.1107.1.3.2.12.9) and LDAP Conditioned Operation Control (1.3.12.2.1107.1.3.2.12.10)

Starting with DirX Identity V8.10, the Entry Lock Manager has been improved and makes use of two new LDAP controls. These LDAP controls are available with DirX Directory Server V8.9 (9.4.454 or higher) if you installed DirX from scratch. A DirX upgrade will not set the LDAP controls at the LDAP root.

The DirX Identity Configurator sets these LDAP controls.But please note that a manual migration is necessary if you decide to upgrade the DirX installation after you have already configured DirX Identity.

In this scenario, the migration procedure is as follows:

  • Set the password of the DirX administrator (Tcl variable DIR_PW) in the file install_path*/basic.input.tcl*.

  • Open an MS-DOS command prompt or a UNIX shell in the directory install_path*/schema/role-dirxee/SystemDomain*.

  • Run the following command: dirxadm init.v810.adm.

  • Check the content of the tracefile setup-trace.txt in the current directory.The tracefile should show that dirxadm terminated with exit code 0.

  • Set the TCL variable DIR_PW in basic.input.tcl to “”.

Aspects Relevant to DirX Identity V8.10

Reports based on TIBCO Jaspersoft

Starting with V8.10, images, styles, and nationalized texts (i18n) for Jaspersoft-based reports are stored in LDAP.Therefore, the configuration for the reports must be extended.This can be done manually, report per report, or automatically with a migration script.

For details, see the chapter "Upgrading" in the use case document DXI Jaspersoft Reports.

Support of Java 11 and Tomcat 9

This version runs with Java 11 (JRE or JDK) and Apache Tomcat 9 only.

Aspects Relevant to DirX Identity V8.9

Support of Java SE 11

This version runs with Java SE 11 only.Note that the Identity installation no longer offers the use of an embedded Java JRE runtime.The Java environment must be externally provided.

For customer-specific code that is written in Java, the customer should verify if the code is running with Java SE 11 without rebuilding it.Note that Java SE 11 no longer contains some web service APIs that were included in Java JRE 8. A rebuild with Java 11 and some additional third-party jar files may therefore be necessary.

See also the section about Class Loading in IdS-J server in this guide.

Support of Apache Tomcat 9

This version supports Apache Tomcat 9 only. Additionally, for the DirX Identity Web services that are deployed in Tomcat, the Tomcat server must run with Java SE 11.

In typical datacenter scenarios, DirX Identity’s Web Center or Business User Interface is used behind a reverse proxy; for example, a firewall or load balancer. To configure the Tomcat container as a reverse proxy target, see the Tomcat documentation under https://tomcat.apache.org/tomcat-9.0-doc/proxy-howto.html.

JMX Access

In this version, the JMX access of the IdS-J server and the Apache ActiveMQ server have been pre-configured so that user credentials are always needed.

See the relevant sections “JMX Access to the Java-based Server” and “JMX Access to the Message Broker” in the DirX Identity Connectivity Administration Guide.

Class Loading in IdS-J Server (for Customer-specific Request Workflow Job Implementations)

The Java class loading in the IdS-J server has been simplified. In previous releases, when deploying a customer-specific request workflow job implementation (in the folder “install_path/ids-j-/confdb/jobs/…​”) you had to supply the jar file of your job implementation and several other jar files, such as dxrOrder.jar, dxrPolicies.jar, dxrServices.jar, and so on.

This approach could cause runtime problems (class loading problems) as these additional jar files existed at different locations in the installation, too. Very often there were conflicts with the Jar files loaded from install_path*/ids-/extensions/com.siemens.idm.domcfg/lib*).

Therefore the whole environment was simplified:

  • Jar files such as dxrOrder.jar, dxrPolicies.jar, dxrServices.jar etc. exist only once in install_path*/ids-/confdb/common/lib*.

  • Jar files such as dxrOrder.jar, dxrPolicies.jar, dxrServices.jar have been dropped from install_path/ids-j-*/confdb/jobs/…​ and install_path*/ids-j-/extensions/com.siemens.idm.domcfg/lib*.

  • Some jar files have been copied from install_path*/ids-/lib* to install_path*/ids-/confdb/common/lib*.

Now the request workflow job implementation folders (install_path/ids-j-*/confdb/jobs/…​) must only contain the jar file of the job implementation (and optionally some other jar files that only that job requires; for example, third-party jar files).

The job folders provided with the installation now look as follows:

  • install_path/ids-j-/confdb/jobs/builtin/lib

    • builtinImpl.jar

  • install_path/ids-j-/confdb/jobs/CertificationCampaign/lib

    • dxrCampaignController.jar

  • install_path/ids-j-/confdb/jobs/consistencyCheck/lib

    • dxrConsistencyCheck.jar

  • install_path/ids-j-/confdb/jobs/eventBasedRules/lib

    • dxrEventBasedRules.jar

  • install_path/ids-j-/confdb/jobs/framework/lib

    • various implementations of framework jobs (used by realtime workflows)

  • install_path/ids-j-/confdb/jobs/LdifChange/lib

    • LdifChangeImpl.jar

  • install_path/ids-j-/confdb/jobs/metahubworkflow/lib

    • metahubworkflowImpl.jar

  • install_path/ids-j-/confdb/jobs/order/lib

    • orderImpl.jar

  • install_path/ids-j-/confdb/jobs/RiskGovernance/lib

    • dxrRiskGvnController.jar

  • install_path/ids-j-/confdb/jobs/setpassword/lib

    • setpasswordImpl.jar

  • install_path/ids-j-/confdb/jobs/siemensgid/lib

    • siemensgidImpl.jar

  • install_path/ids-j-/confdb/jobs/ticketControl/lib

    • dxrTicketControl.jar

Your tasks are to:

  • Provide the lightweight job folders as shown above for your customer-specific jobs and drop all the jar files that are already available in install_path*/ids-/confdb/common/lib*.

  • Move your customer-specific implementations of user hooks or any other interfaces to install_path*/ids-/confdb/common/lib*.

Handling of Escaping in Provisioning Rule Filters (RJYNS3)

In former versions, sometimes you ran into trouble if you wanted to create a filter with special characters in the condition; for example, description=a(b)c,. Therefore, the internal handling of this filter was changed. Provisioning rule filters are now stored escaped in LDAP except for the time constructs. Asterisks * in conditions are stored as . This means they are used as wildcards. If you want to check for an asterisk, use *\2a (insert \2a in the LDAP tab of the filter editor).

Automatic migration does not take place because it’s not always clear what the filter should represent. DirX Identity provides a standalone tool that searches for rules that might cause trouble in the new version. Run the tool and then check the output and look at the rules that are reported. Change the rule using DirX Identity Manager if necessary. But in every case, do a save for this rule to be sure the rule is stored correctly. The example given here is stored in the following way: (description=a\28b\29c).

On Windows, call:

install_path\GUI\tools\provrulechecker\CheckProvisioningRules.bat

First specify the bind credentials and the root for the Provisioning rules to be checked in CheckProvisioningRulesConfig.xml.

For details, see README.txt in the aforementioned directory.

Old and New Delegations

As of version 8.9, DirX Identity supports a new type of delegations which are easier to understand and to use than the old delegations. You can either continue to use the old delegations or switch to the new ones, but you cannot use them both in parallel. This section gives an overview of the differences between the old and new delegations and describes what to pay attention to when switching from the old to the new delegations (or vice versa).

Old Delegations

The old delegations support all operation types (create, grant, approve, delete, etc.) They can be restricted to specific subsets of resources, like grant all roles, or approve group A and group B.

You can view the delegations in the DirX Identity Manager:

  • Select view Policies.

  • Open folder Delegations.

The old delegations have no operation (dxrOperationImp) but have one or more access right links.

The old delegations can be managed in DirX Identity Web Center. They are not supported by the DirX Identity REST Services and cannot be managed in the DirX Identity Business User Interface.

New Delegations

The new delegations support only operation types grant and approve. They cannot be restricted to specific subsets of resources.

You can view the delegations in the DirX Identity Manager:

  • Select view Policies.

  • Open folder Delegations.

The new delegations have operations (dxrOperationImp) grant or approve but no access right links.

The new delegations are supported by the DirX Identity REST Services and can be managed in the DirX Identity Business User Interface but not in DirX Identity Web Center.

Switching Between Old and New Delegations

A global flag defines which type of delegation is enabled. You can view and set the flag in DirX Identity Manager:

  • Select view Domain Configuration.

  • Open the domain object.

  • Select tab Policies.

If the flag Delegation Assignment stores Operation is checked, the new delegations are enabled. If it is not checked, the old delegations are enabled.

After installation and configuration of V8.9, the flag is not checked, so the old delegations are still enabled.

When activating the new delegations, the old delegation assignments and access right entries are not deleted but they will be ignored. The Business User Interface will not display them. The Identity REST Services will also ignore them.

Switching back from the new to the old delegations is not recommended. If you do it anyway, note that the delegators will still see their (now deactivated) new delegations in Web Center but Web Center will not handle the delegations correctly. Therefore, the delegators will have to delete them in Web Center, or you delete all new delegations via the DirX Identity Manager.

Access Policy Evaluation

Access policy evaluation always takes delegations into account according to the global flag. If the new delegations are enabled, the old ones are ignored. If the old delegations are enabled, the new ones are ignored.

Migrating to DirX Identity 8.9

  • If you don’t want to use delegations at all:

  • Nothing to do.

  • If you want to use the old delegations:

  • Nothing to do.

  • If you want to use the new delegations:

  • Check the global flag.

  • If you’ve used the old delegations before:

  • Tell your users that any previous delegation is no longer valid.

  • Delete the old delegations or tell your users to delete them.

  • Tell your users how to manage new delegations via the Business User Interface.

Aspects Relevant for Upgrade from V8.6

This section describes all aspects relevant to upgrading to the current version from DirX Identity V8.6.

Replacement of REST Approval Service with REST Service

The REST Approval Service has been replaced with the new DirX Identity REST service which includes more functionality.Web applications must be adapted.You’ll find the new service in the installation under install_path*/restServices.*

Replacement of HTML5-based Approval App with Business User Interface App

The HTML5-based Approval App has been replaced with the new DirX Identity Business User Interface which includes more functionality.As before, the new interface is configured with the Configuration Wizard.

Migrating Identity Server SSL Configurations

In V8.6, the setup and handling of SSL connections have changed slightly and includes the distribution of key material. This section describes the necessary steps to migrate existing SSL key material when upgrading from V8.3 and newer. Note that if you migrate from a version older than V8.3 and want to reuse existing key material, you must upgrade to V8.3 first and then perform the manual steps described in the section “Migrating Identity SSL Configurations” in the section “Aspects Relevant for Upgrade from V8.2”.

Note that we recommend setting up new key material as it is described in the chapter “Securing Identity Server Connections with SSL” in the DirX Identity Connectivity Administration Guide.

Preparing Existing Key Material

The existing key material storage must be renamed. Go to the folder install_path*/ssl* and rename following files:

  • server-keystore to identity-keystore (private key of the server)

  • client-truststore to identity-truststore (certificate of the server and CA)

Make sure that the CA certificate stored as install_path*/ssl/ca.crt* is imported to jre_root/*jre/lib/security/cacerts*. Note that jre_root is the path to the JRE used by DirX Identity components.

To import the ca.crt file, use the DirX Identity Manager. In the Tools menu, choose Options. On the next page, the Manager’s truststore is selected by default (“This application’s installation folder” is already selected and the file install_path/GUI/cacerts is shown). Choose Java Runtime Environment. Choose Import and then select the server certificate you want to import. When prompted for the keystore password, enter the default value changeit. Click OK and the certificate will be imported.

Generating New Client Key Material

DirX Identity V8.6 now requires the use of SSL client authentication for all ActiveMQ Message Broker clients when securing server connections with SSL globally. This means you need to provide key material for the SSL client authentication.

First, adapt the configuration for the generation scripts. Follow the instructions in the chapter “Configuring the Certificate Generation Scripts” in the DirX Identity Connectivity Administration Guide. The parameter values for dname, validity and pwd must be configured in the same way as they were before the upgrade.

Next, execute the generation scripts for the client key creation. Follow the instructions in the following sections of the Connectivity Administration Guide in this order:

  • Setting up the Client Key

  • Signing the Client Certificate Request

  • Importing the Client Certificate into the Shared Key Store

  • Converting the Client Key to PEM

As a result, you must now have at least the following files in the install_path/ssl folder:

  • ca.crt

  • ca-crt.pem

  • client.crt

  • client-key.pem

  • server.crt

  • server-key.pem

  • identity-keystore

  • identity-truststore

  • password.properties

Distributing Shared Key Material

The install_path must be available as the environment variable DIRXIDENTITY_INST_PATH when securing server connections with SSL globally. Make sure that the variable DIRXIDENTITY_INST_PATH exists. It can be missing on some hosts in distributed environments with a DirX Identity client component deployed into a native Tomcat. If the variable does not exist, define the environment variable DIRXIDENTITY_INST_PATH using an existing folder as a value.

If you have a distributed environment, you must copy and adapt (if necessary) the files from the source install_path/ssl folder into the install_path/ssl folder on the target machine.

If you installed a server (Java-based Server, C++-based Server, or ActiveMQ Message Broker), adapt the parameter value for dname in the configuration script install_path/ssl/set_Environment.bat and then perform the steps described in the following chapters of the DirX Identity Connectivity Administration Guide in this order:

  • Setting up the Host Server Key

  • Signing the Server Certificate Request

  • Importing the Certificate into the Server Key Store

  • Converting the Server Key Store to PEM

If you installed a client component (Windows Password Listener, Web Center, Identity Manager, and so on), copy the files

  • identity-keystore

  • identity-truststore

  • ca-crt.pem

  • client-key.pem

  • password.properties

from a machine where a server is located into the local install_path/ssl folder.

Migrating Windows Password Listeners Connecting with SSL to ActiveMQ to Connect with Client-side SSL

With DirX Identity V8.6, ActiveMQ clients like Java-based and C++-based Servers, Web clients or Password Listener use client-side SSL when connecting to the ActiveMQ Message Broker if system-wide SSL is selected in the Configuration Wizard. Before this configuration is selected, the certificate-generating scripts must be executed as described in the chapter “Setting up the X.509 Certificates” in the Connectivity Administration Guide.

If you upgrade from a DirX Identity V8.3, V8.4 or V8.5 version and you have Windows Password Listeners running using SSL to the Message Broker, you can migrate them one after another to use client-side SSL while the ones that haven’t been migrated yet are still running and connecting with server-side SSL by performing the following actions in the given order:

  • Set to inactive the ConfigurationHandler adaptors of all Java-based Servers configured for domains related to those Password Listeners which are not yet to be upgraded. You must perform this task in the Data View because, with “Manage IdS-J Configuration”, you must leave one ConfigurationHandler adaptor for a given domain in the active state because they are selectable by radio buttons. You must deactivate these Configuration Handlers; otherwise, they will send the current Message Broker configuration to the Password Listeners as soon as the broker service is restarted after upgrading, but the old Password Listeners must talk to the “old” Message Broker configuration identified by the old port.

  • Copy the activemq.xml file under install_path/messagebroker/conf to a separate location of your file system in order to save the old “transportConnector” section.

  • Upgrade DirX Identity - including the Message Broker and the Java-based Server - to V8.6 and configure the system with SSL (because this is the use case for which a migration is needed). In the Message Broker step of the Configuration Wizard, specify a different port from the one the old Password Listeners are using.

  • Stop the Message Broker service and then change the activemq.xml file by copying the saved “transportConnector” section under the “transportConnectors” section alongside the new “transportConnector”.

  • Re-start the Message Broker. With the two transport connectors specified, it now listens on both ports: the old one configured with SSL and the new one configured with client-side SSL.

  • Now you can upgrade each Password Listener step by step and configure it with the new port and with SSL as described in the chapter “Securing the Windows Password Listener with SSL” of the Connectivity Administration Guide. The V8.7 Windows Password Listener always uses client-side SSL if SSL is specified by “UseSSL=1” in the options.ini or msgServers.ini file even if the property “UseClientAuth” is set to 0.

you only need to perform these migration steps if your Password Listeners were configured with SSL. If not, you don’t have to do any migration regarding Password Listeners. You can just upgrade each one - after upgrading DirX Identity - while others with older versions (at least V8.3) can run in parallel.

Migrating Passwords for Web Admin and Active MQ Web Console

In V8.6, the passwords for the pre-defined admin account are stored hashed in files. If you then upgrade the relevant files, install_path/ids-j-domain-Sn/tomcat/conf/tomcat-users.xml and install_path/messagebroker/conf/jetty-realm.properties are not overwritten. So you need to hash the passwords yourself.

Web Admin Password

Go to install_path/ids-j-domain-Sn/bin and open a Windows command shell or a UNIX shell:

Usage:

dxidigest.bat/sh password

Example:

dxidigest.bat mypassword
Digesting a password using the specified algorithm (default: sha-512)
mypassword:ebe81bc72d9b04b143b6795882d12b3848f930bd4a39e2f4726ae1efb4a6b971$1$373e057af2ea30e4ed000282b6af79ef2ba64e247c46c3c155fa40949952f41947de75d2f38c3a377cac16c7b5d31ed6aec64d745698de5788417e575285959d

Copy the part after the colon and then insert it into the tomcat-users.xml file as the value for password.

<tomcat-users>
  <user name="admin" password="xxx" roles="admin,manager" />…

ActiveMQ Web Console Password

Go to install_path/messagebroker/bin and open a Windows command shell or a UNIX shell:

Usage:

dximqdigest.bat mypassword
2016-09-22 16:02:42.780:INFO::main: Logging initialized @114ms
mypassword
OBF:1uh41zly1x8g1vu11ym71ym71vv91x8e1zlk1ugm
MD5:34819d7beeabb9260a5c854bc85b3e44
Press any key to continue . . .

Copy the line with MD5 and insert it into the jetty-realm.properties file as

aadmin: MD5:34819d7beeabb9260a5c854bc85b3e44, admin

Aspects Relevant for Upgrade from V8.5

None.

Aspects Relevant for Upgrade from V8.4

None.

Aspects Relevant for Upgrade from V8.3

This section describes all aspects relevant to upgrading to the current version from DirX Identity V8.3.

Migrating External Messaging Client Tools

Existing instances of the External Workflow Starter and the Eventing tool from releases older than than this release are obsolete.Instances of these tools from service packs or hot fixes related to releases older than this one are obsolete, too.To continue using these tools, use the tools from this release by extracting and configuring the tools shipped with this release by hand.

Updating the JMS Audit Handler Deployment

If you have enabled the sending of audit records of DirX Identity Java-based Servers via JMS, you need to replace the deployment folder of the JMS Audit Handler with the new jar file(s).

The handler must be deployed into each IdS-J server into the following folder: install_path/ids-j-domain-S*n/extensions/com.siemens.idm.audit.jms*.

Replace the sub-folder lib with the one that is provided in the folder Additions/jmsAuditHandler/com.siemens.idm.audit.jms.zip/lib of the installation medium. The only required jar file is: com.siemens.idm.audit.jms.JmsAuditLogHandler.jar.

Displaying Inherited Privileges

Privileges can be assigned (direct, by rule or BO inheritance), inherited from other privileges by privilege resolution, or both. As a new feature, privileges that are inherited are stored in the user’s dxrResolvedPrivilegesLink. In the Identity Manager’s “Assigned by” column (and in WebCenter’s “Mode” column), this is shown by the mode inherited. Note that this mode can be mixed with other modes that indicate the different types of sources for this privilege.

To populate the dxrResolvedPrivilegesLink once for all users, you need to run the privilege pesolution process for all users. To perform this task, change the subject filter to ‘(objectClass=dxrUser)’ before the run.

Filtering Assigned Privileges

The Identity API contains a method listObjects in the Objects interface.

If assigned objects are requested (assignedRoles, assignedPermissions, assignedGroups, or assignedAccounts), the filter and base parameters are now considered. The intent of this step is to speed up the display of assignments to selected privileges in situations where users possess many privileges.

The following hints must be considered:

  1. Set filter = null or base = null to get all assigned privileges.

  2. If you want to read a certain assigned privilege, use the filter=”(objectClass=)” and the privilege’s DN as the base. The filter “(objectClass=)” is evaluated with best performance (always match). It is preferable to “(objectClass=dxrRole)” and so on.

  3. Be aware that the assignments returned by the search may only be used for read/display. If you want to select an assignment and then update it later on, you need to search the assignments for the given type using filter = null or base = null and identify the assignments to be modified on this basis. The reason for this is that during save, all new assignments are compared to all old assignments. Assignments being read by a filter are ignored for update.

  4. If you have already developed some code with Identity API, check the listObjects calls for assigned privileges. Set filter = null and base = null if you do not intend filtering here or if you want to update the assignments afterwards.

Migrating Role Parameter Access and Data

If a display attribute is defined for a role parameter (for example, cn), the value and the display value are stored and are also present in a request workflow.

The new role parameter format stores the value within the value tag. Thus, the extension is backward compatible to the old solution. If a special display value exists, it is stored in the key attribute of the value element, for example:

<roleparamvalues name="Project" uid="uid-7f001-cee271-fed935aa6d--7eb4" type="DN">
    <value key="OptimizeIT">cn=OptimizeIT,cn=Projects,cn=BusinessObjects,cn=My-Company</value>
</roleparamvalues>

Migrating Java Code for Accessing Role Parameter Values

If you have programmed a Java algorithm to access role parameter values, you should read this section. Otherwise, you can ignore it.

Access to key and value is performed by the new KeyValue interface of the assignment package:

public interface KeyValue {
       public void setKey(String key);
       public String getKey();
       public void setValue(String value);
       public String getValue();
}

If no display attribute is defined, the key remains empty and the data are provided by the value.

The RoleParameter interface has been adapted accordingly. The following four methods are affected by the change:

public interface RoleParameter {
       …
       public KeyValue[] getValue();
       public void setValue(KeyValue[] values);
       public String[] getStringValue();
       public void setValue(String[] values);
}

getValue() returns an array of KeyValue beans.

setValue() can be called with an array of KeyValue beans or with a String array. In the latter case, the strings are stored as values.

getStringValue() returns the keys if they exist, otherwise the values.

Access to role parameter handling in a request workflow job is described in the sample SampleJobForRoleParameterHandling.

In the following, migration to the new RoleParameter interface is described for this sample.

The following code must be changed:

1) In line 85: String[] values = roleParam.getValue();

The statement must be changed to
String[] values = roleParam.getStringValue();

2) In line 165: DsmlModification[] modifications = rpMod.getValue();

Note that DsmlModifcation must be replaced by KeyValueModification here (and in line 169).

3) In line 170: String[] values = modification.getValue();

This line must be replaced by the following two lines:

KeyValue[] kvs = modification.getValue();
String[] values = ParameterUtil.valuesFromKVs(kvs);

The first statement returns an array of KeyValue beans. The second converts it to an array of String, containing the keys if they exists, otherwise the values.

4) In line 203: values = rpv.getValue();

must be replaced by values = rpv.getStringValue();

Migrating Role Parameter Data in Assignments

If you have existing assignments with role parameters with display values, no migration is required for the data. The reason for this is that the display values are re-calculated automatically when the role parameter data are read in. This action is performed independent of whether a key attribute exists for the value. Thus, the displayed values are always up-to-date.

Saving the user will not change the format of the role parameter values unless a value has changed.

Migrating Role Parameter Data in Running Request Workflows

If you have running request workflows, no migration of the role parameter format is required, since the format is backward compatible.

Migrating Tcl-based Workflows to Handle Changes in the Object Search Operation

The init.metacp file includes the new Tcl variable _md_req_attr_limit, which was introduced to avoid passing huge attribute lists to the LDAP server. If more attributes than the given limit are defined, metacp internally requests all of the attributes from the LDAP server using the -allattributes switch in the obj search command. The default value for this variable is 64.

The following problems may occur if the LDAP server requests all attributes:

  • If the LDAP server recognizes alternate LDAP attribute names, it may return an attribute with a different LDAP attribute name than expected.

  • Operational attributes are no longer returned.

Be aware of this behavior when you are running Tcl-based workflows and you find that some of the attributes are no longer synchronized. To solve the problem, you need to set the value of the Tcl variable md_req_attr_limit to -1. For more information, see the _DirX Identity Troubleshooting Guide and the DirX Identity Meta Controller Reference.

Migrating LDAP Realtime Workflows for Group Renaming

The Join section of the Group channel of the default LDAP realtime workflow has been changed and now looks as follows:

<joins xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core" xmlns:spml="urn:oasis:names:tc:SPML:1:0">
	<join>
		<searchBase type="urn:oasis:names:tc:SPML:1:0#DN">
			<spml:id>${source.dxrPrimaryKeyOld}</spml:id>
		</searchBase>
	</join>
	<join>
		<searchBase type="urn:oasis:names:tc:SPML:1:0#DN">
			<spml:id>${source.dxrPrimaryKey}</spml:id>
		</searchBase>
	</join>
	<join>
		<filterExtension>
			<dsml:equalityMatch name="cn">
				<dsml:value>${source.cn}</dsml:value>
			</dsml:equalityMatch>
		</filterExtension>
	</join>
</joins>
The first join item using “${source.dxrPrimaryKeyOld}” is new. The change is necessary if a group has been renamed. In this case, the group is first searched with its old name. If it is found, it is updated and renamed in the connected system. Without this item, a new group is created in the connected system.
The LDAP object class groupOfNames doesn’t hold any attribute that never changes (for example, employeeNumber for LDAP object class person) and which therefore could be used when joining the entry. As a result, first joining with the old group name, then with current group name and finally with cn is performed.

So, if you copied the default workflow with older versions of DirX Identity, the new join item using “${source.dxrPrimaryKeyOld}” is missing in your LDAP realtime workflow. Thus, if you want group renaming to work in your environment, you should extend your LDAP workflow manually in the same way as the default LDAP realtime workflow. If you are sure that groups are never renamed in your environment, there is no need to extend the join criteria.

Migrating Tcl-based and Realtime Workflows for New Object Classes dxrPersona, dxrFunctionalUser and dxrUserFacet

The DirX Identity installation provides a few (default) Tcl and realtime workflows that synchronize user objects. Up to now, these objects have been synchronized by either selecting the LDAP object class dxrUser or by using any other attribute (for example, employeeNumber) supposing that with such a filter a user object will match.

With DirX Identity V8.3A, you can use the new LDAP object classes dxrPersona (if you are interested in alternative representations for a user) and/or dxrFunctionalUser (if you are interested in resources that are assigned to a user). With DirX Identity V8.5, the new LDAP object class dxrUserFacet is available.

These new LDAP object classes are auxiliary object classes and are used in combination with the LDAP object class dxrUser. Therefore, when searching for dxrUser, you will also find objects with the LDAP object class dxrUser and dxrPersona, dxrUser and dxrFunctionalUser or dxrUser and dxrUserFacet (as long as the other filter attributes also match; but for the object class dxrPersona, the same set of attributes applies).

An update of the Tcl and realtime workflows is thus required, because when the join criteria results in a multiple match, none of the objects are synchronized. For export workflows, objects other than users would be exported, too.

Adapting Tcl (Import) Workflows

You must change the join expression of the output channel when running in MERGE mode. The following example shows how to exclude dxrPersona, dxrUserFacet and dxrFunctionalUser objects (pure LDAP filters must be used and note that the NOT filters can only be defined if you are using the “expert” filter; if you used the “table” format, you need to switch from “table” format to “expert” format):

Old join expression:

(&(employeeNumber=[lindex $rh_ldap(employeeNumber) 0])
       (objectClass=dxrUser))

New join expression:

(&(employeeNumber=[lindex $rh_ldap(employeeNumber) 0])
        (objectClass=dxrUser)
        (!(objectClass=dxrPersona))
        (!(objectClass=dxrUserFacet))
        (!(objectclass=dxrFunctionalUser)))

For details, see the channel Connectivity Configuration → Connected Directories → Default → Identity Store → Identity Store → Channels → LDIFFile2Ident.

Adapting Tcl (Export) Workflows

You must change the search filter in the input channel. The following example shows how to exclude dxrPersona, dxrUserFacet and dxrFunctionalUser objects (a GUI LDAP filter representation is shown):

Old search filter:

(l=”munich” and objectClass=”dxrUser”)

New search filter:

(l=”munich” and objectClass=”dxrUser”
 and not (objectClass=”dxrPersona”)
 and not (objectClass=”dxrUserFacet”)
 and not (objectClass=”dxrFunctionalUser”))

For details, see the channel Connectivity Configuration → Connected Directories → Default → Identity Store → Identity Store → Channels → Ident2LDIFFile.

Adapting Realtime Workflows

You must change the export search filter when reading from the LDAP directory (IdentityStore). You can use the same technique as described in “Adapting Tcl (Export) Workflows” to exclude “dxrPersona”, “dxrUserFacet" and “dxrFunctionalUser” objects in the realtime workflows. For details, see the channel Connectivity Configuration → Connected Directories → Default → Identity Store → Identity Store → Channels → LDIFFile → users.

You also need to change the Join expression when importing to the LDAP directory (IdentityStore). The following example shows how to exclude dxrPersona, dxrUserFacet and dxrFunctionalUser objects:

Old join expression:

<join>
     <filterExtension>
          <dsml:equalityMatch name="employeeNumber">
                    <dsml:value>${target.employeeNumber}</dsml:value>
          </dsml:equalityMatch>
      </filterExtension>
</join>

New join expression:

<join>
    <filterExtension>
        <dsml:and>
            <dsml:equalityMatch name="employeeNumber">
                 <dsml:value>${target.employeeNumber}</dsml:value>
            </dsml:equalityMatch>
            <dsml:equalityMatch name="objectClass">
                 <dsml:value>dxrUser</dsml:value>
            </dsml:equalityMatch>
            <dsml:not>
                 <dsml:equalityMatch name="objectClass">
                       <dsml:value>dxrPersona</dsml:value>
                 </dsml:equalityMatch>
            </dsml:not>
            <dsml:not>
                 <dsml:equalityMatch name="objectClass">
                       <dsml:value>dxrUserFacet</dsml:value>
                 </dsml:equalityMatch>
            </dsml:not>
            <dsml:not>
                 <dsml:equalityMatch name="objectClass">
                       <dsml:value>dxrFunctionalUser</dsml:value>
                 </dsml:equalityMatch>
            </dsml:not>
        </dsml:and>
    </filterExtension>
</join>

The changes listed above refer to “User Import” or “User Export” workflows. You also should keep in mind that other realtime workflows (synchronizing accounts to a connected system) might also be affected. The creation of new persona objects might result in the creation of new accounts for the relevant target systems (eventually with same set of attributes). Therefore, when the realtime workflows synchronize these accounts/personas to the connected system, you need to use a unique attribute in the Join operation (for example, uid).

Otherwise, the realtime workflow first synchronizes the account to the connected system. Later on, the persona object is synchronized, which results in a Rename operation in the connected system (for example, if the common attribute employeeNumber of the account and the persona object is used for joining).

Migrating the JMS Audit Configuration

The migration process extracts JMS Audit configuration values (user, password, url, queue name and logpath) that were hard-coded in XML server configuration (the old way up to V8.3) and stores them in specific attributes (the new way since V8.4).

Migration is done automatically during the first Configurator run. All workflows in the Connectivity database are processed.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/83

As the Connectivity part is migrated, all arguments refer to the Connectivity configuration database.

Usage:

MigrateJMSauditConf.bat host port user password ssl logfile

Example:

MigrateJMSauditConf.bat localhost 389 "cn=admin,dxmC=DirXmetahub" dirx 0 trace.txt

Aspects Relevant for Upgrade from V8.2

This section describes all migration issues relevant to upgrading to the current version from DirX Identity V8.2.

Migrating Identity Server SSL Configurations

In V8.3, the setup and handling of SSL connections changed, including the distribution and location of key material.This section describes the necessary steps to migrate existing SSL key material.

Note that we strongly recommend setting up new key material, as the process has been enhanced to use a CA certificate, which makes distribution of key material much easier.It also has been decided to support only server-side SSL.Finally, you can only secure all Identity server connections at once, not separately.

If you want to use your previously created SSL key material, you need to decide if you’ll use the key material from the former Java-based Server, from the secured SOAP port or from the messaging service from the C++-based Server.

Using the Java-based Server Key Material

If you previously used SSL connections to the Java-based Server, you are using the following files in the folder:

  • install_path/ids-j-domain-Sn/private/server.crt (certificate of the server)

  • install_path/ids-j-domain-Sn/private/server-keystore (private-key/certificate of the server)

  • install_path/ids-j-domain-Sn/private/server-truststore

Perform the following steps:

  • Copy the files to the new location install_path*/ssl*. Adjust the keystore and truststore passwords in the file install_path/ssl/password.properties accordingly.

  • Import the server.crt into the JRE’s certificate truststore. The default truststore is the JRE’s cacerts file jre_root/jre/lib/security/cacerts. To import the server.crt file, use the DirX Identity Manager. In the Tools menu, choose Options. On the next page, the Manager’s truststore is selected by default (“This application’s installation folder” is already selected and the file install_path/GUI/cacerts is shown). Choose Java Runtime Environment. Choose Import and then select the server certificate you want to import. When prompted for the keystore password, enter the default value changeit. Click OK and the certificate will be imported.

  • Convert server-keystore from JKS format to PKCS#12 format and then to PEM format. To perform this task, see the script install_path*/ssl/convert_ServerKeystoreToPem.bat*. The best approach is to copy the file and then adjust the variables. Note that you must use your server.crt instead of an input file ca.crt.

You should now have the following files:

  • server.crt

  • server-keystore

  • client-truststore

  • server-key.pem

  • ca-crt.pem (Containing your server.crt certificate)

If you have additional Java-based Servers on the same or other machines, you must add each server.crt to other client-truststore and ca-crt.pem files. Consult the documentation from Oracle for the keytool tool and from openSSL for the openssl tool.

Using the Messaging Service Key Material

If you previously used SSL connections to the messaging service in the C++-based Server, you are using the following files in the folder:

  • install_path/security/certificates/qm.crt.p12 (private key/certificate of the server)

  • install_path/security/certificates/qm.crt (certificate of the server)

  • install_path/security/java/truststore (truststore with certificate)

Perform the following steps:

  • Copy the files to the new location install_path*/ssl*. Rename qm.crt to server.crt and truststore to client-truststore. Adjust the keystore and truststore passwords in the file install_path*/ssl/password.properties* accordingly.

  • Import the server.crt into the JRE’s certificate truststore. The default truststore is the JRE’s cacerts file jre_root/jre/lib/security/cacerts. To import the server.crt file, use the DirX Identity Manager. In the Tools menu, choose Options. On the next page, the Manager’s truststore is selected by default (“This application’s installation folder” is already selected and the file install_path/GUI/cacerts is shown). Choose Java Runtime Environment. Choose Import and then select the server certificate you want to import. When prompted for the keystore password, enter the default value changeit. Click OK and the certificate will be imported.

  • Convert the PKCS#12 format to JKS format. Use the keytool utility (PASSWORD_P12 is the old password, NEW_PASSWORD the new one):

keytool -importkeystore -srckeystore qm.crt.p12 -srcstoretype pkcs12 -srcstorepass PASSWORD_P12 -srcalias messageserver -destkeystore server-keystore -deststoretype jks -deststorepass NEW___PASSWORD -destalias identity-server

  • Convert the PKCS#12 format to the PEM format:

openssl pkcs12 -in qm.crt.p12 -out server-key.pem -passin pass:_PASSWORD_P12_ -passout pass:_PASSWORD_NEW_

openssl x509 -inform DES -in qm.crt –outform PEM -out ca-crt.pem

You should now have the following files:

  • server.crt

  • server-keystore

  • client-truststore

  • server-key.pem

  • ca-crt.pem (Containing your server.crt certificate)

Using the Key Material from the C++-based Server SOAP Port

If you previously used SSL connections to the SOAP service in the C++-based Server, you are using the following files in the folder:

  • svr.pem (private key/certificate of the server)

  • cacert.pem (certificate of the server)

Perform the following steps:

  • Copy the files to the new location install_path*/ssl*. Rename cacert.pem to ca-crt.pem and svr.pem to server-key.pem. Adjust the keystore and truststore passwords in the file install_path*/ssl/password.properties* accordingly.

  • Convert PEM format to crt (DER) format:

openssl x509 -outform der -in ca-crt.pem –out server.crt

keytool -import -v -alias <your alias> -file <your file>.pem -keystore <your key store>.jks -storepass <your storepass>

  • Import server.crt into the JRE’s certificate truststore. The default truststore is the JRE’s cacerts file jre_root/*jre/lib/security/cacerts.* To import the server.crt file, use the DirX Identity Manager. In the Tools menu, choose Options. On the next page, the Manager’s truststore is selected by default (“This application’s installation folder” is already selected and the file install_path*/GUI/cacerts* is shown). Choose Java Runtime Environment. Choose Import and then select the server certificate you want to import. When prompted for the keystore password, enter the default value changeit. Click OK and the certificate will be imported.

  • Convert the PKCS#12 format to JKS format. Use the keytool utility (PASSWORD_P12 is the old password, NEW_PASSWORD the new one):

keytool -importkeystore -srckeystore qm.crt.p12 -srcstoretype pkcs12 -srcstorepass PASSWORD_P12 -srcalias messageserver -destkeystore server-keystore -deststoretype jks -deststorepass NEW___PASSWORD -destalias identity-server

  • Convert the PKCS#12 format to PEM format:

openssl pkcs12 -in qm.crt.p12 -out server-key.pem -passin pass:_PASSWORD_P12_ -passout pass:_PASSWORD_NEW_

openssl x509 -inform DES -in server.crt –outform PEM -out ca-crt.pem

  • Insert the certificate into the client truststore:

keytool -import -alias identity-server -keystore clientstore -file server.crt

You should now have the following files:

  • server.crt

  • server-keystore

  • client-truststore

  • server-key.pem

  • ca-crt.pem (Containing your server.crt certificate)

Cleanup regarding Worker Containers

DirX Identity Java-based worker containers have been supported since DirX Identity V8.2, but they are no longer supported with this version.

If your installation is an upgrade installation of one of these DirX Identity versions, you need to perform the manual cleanup steps regarding worker containers described in this section. These steps are platform-dependent and include:

  • Service configuration cleanup

  • File system cleanup

Windows Platforms

No steps are required regarding service configuration cleanup.

No steps are required regarding install_path/configuration.ini. Just be aware that these properties are no longer relevant for this version:

  • ConfiguredComponents.IdS-J-Worker

  • InstalledComponents.IdS-J-Worker

  • All properties starting with IdS-J.w.

  • option.idsj_worker

To clean up the file system, perform this step:

  • For each subfolder idsj where the name is either ids-j or starting with ids-j-, remove the folder install_path/idsj/worker recursively.

Linux Platforms

No steps are required regarding service configuration cleanup. As for Windows platforms, no steps are required regarding install_path*/configuration.ini*.

To clean up the file system, perform these steps:

  • For each subfolder idsj where the name is either ids-j or starts with ids-j-, remove the folder install_path/idsj/worker recursively.

  • Remove the files S99dmsvrwo-* in the folder install_path/etc.

Cleanup regarding JAXB-API and JAXWS-API in Tomcat

During Web Center deployment, Web Center for Password Management, Web Center for SAP NetWeaver, Provisioning Web Services of DirX Identity V8.2, the following files are created in tomcat_install_path*/endorsed*:

  • jaxb-api.jar

  • jaxws-api.jar

These files are obsolete because the implementation of these standards is now part of Java Runtime >= 1.8. Remove these files if you can ensure that they are related to one of the deployments listed above and if you can exclude negative side effects for any other application you deployed into that Tomcat.

Adapting Custom Scripts

If you do not have any custom scripts that use java or keytool and which originate from DirX Identity V8.2, you can skip this section. Otherwise, you need to adapt these scripts as described in this section.

DirX Identity scripts that use java or keytool have been modified so that they are correct regarding the following issues:

  1. Using the correct JRE location. As described in the DirX Identity Installation Guide, the location dxi_java_home of the JRE for DirX Identity is defined during installation. When selecting a customer-supplied JRE as the JRE for DirX Identity, the JRE in install_path*/lib/jre* no longer exists. In this case, scripts using java or keytool from the location install_path*/lib/jre* will no longer work. For this reason, DirX Identity scripts which use java and keytool use the environment variable DXI_JAVA_HOME for referencing the correct JRE location.

Adapting Java Calls in Windows Batch Files

To adapt the java calls in Windows batch files:

  • Insert the call "%DIRXIDENTITY_INST_PATH%/setdxienv.bat" prior to calling java.

  • Adapt the java call: "%DXI_JAVA_HOME%/bin/java" (or alternatively: set PATH=%DXI_JAVA_HOME%/bin;%PATH% followed by simply calling java).

  • Test your adaptation.

Adapting keytool Calls in Windows Batch Files

To adapt the keytool calls in Windows batch files:

  • Add the call "%DIRXIDENTITY_INST_PATH%/setdxienv.bat" prior to calling the program.

  • Adapt the keytool call: "%DXI_JAVA_HOME%/bin/keytool" (or alternatively: set PATH=%DXI_JAVA_HOME%/bin;%PATH% followed by simply calling keytool).

  • Test your adaptation.

Adapting Java Calls in UNIX Shell Scripts

To adapt the java calls in UNIX shell scripts:

  • Adapt the java call: "$DXI_JAVA_HOME/bin/java" (or alternatively: PATH=$DXI_JAVA_HOME/bin:$PATH followed by simply calling java).

  • Test your adaptation.

Adapting keytool Calls in UNIX Shell Scripts

To adapt the keytool calls in UNIX shell scripts:

  • Adapt the keytool call: "$DXI_JAVA_HOME/bin/keytool" (or alternatively: PATH=$DXI_JAVA_HOME/bin:$PATH followed by simply calling keytool).

  • Test your adaptation.

Adapting Java Calls in Tcl scripts

After installation and configuration, the suitable Java location is stored in install_path/*basic.input.tcl*.Perform these adaptations:

  • Modify the definition of the Java path and suitable computation.

  • Test your adaptation.

Aspects Relevant for Upgrade from V8.2C

This section describes all migration issues relevant to upgrading to the current version from DirX Identity V8.2C.

Deleting the jms.jar File

The jms.jar file is no longer provided with the installation.JMS messaging is now provided by geronimo-jms_1.1_spec.jar (which is packaged with ActiveMQ and integrated into the DirX Identity installation).

As a result, if you made an upgrade installation, you must delete jms.jar in your installation directory manually.The following file needs to be deleted:

install_path/web/webCenter-domain/webCenter/WEB-INF/lib/jms.jar

Migrating Realtime Channels to Support Realtime Delta Workflows

The channel’s XML definition (LDAP attribute dxmContent) needs to be updated to support the realtime delta workflow feature.

The Configurator performs this migration automatically when it is run for the first time and processes all workflows in the Connectivity database.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/82C/rtworkflows

As the Connectivity part is migrated, all arguments refer to the Connectivity configuration database.

Usage:

MigrateDeltaWorkflow.bat host port user password ssl logfile

Example:

MigrateDeltaWorkflow.bat localhost 389 "cn=admin,dxmc=dirxmetahub" dirx 0 log.txt

Updating the Realtime Event Port

The XML definition of the event port in realtime workflows (LDAP attribute dxmContent) contains a “Connection” section that uses invalid references to non-existing LDAP objects. As this section is not evaluated by the realtime workflows, a migration procedure will remove it.

The Configurator performs this migration step automatically when it is run for the first time and processes all workflows in the Connectivity database.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/82C/rtworkflows

As the Connectivity part is migrated, all arguments refer to the Connectivity configuration database.

Usage:

MigratePubConnector.bat host port user password ssl logfile

Example:

MigratePubConnector.bat localhost 389 "cn=admin,dxmc=dirxmetahub" dirx 0 log.txt

Handling Minimum Source Entries in Tcl-based Workflows

No migration for this parameter is required. This section is just to inform you about some minor changes:

The “Minimum Source Entries” parameter is now also evaluated if paging mode is turned on. The parameter is evaluated both for export and import synchronization. In addition, new entries were added and existing ones were modified in any case in old releases (without paging). The minimum number of entries was checked only when entries needed to be deleted, and deletions were not made if the minimum number of source entries was too small. With the new release, the minimum number of source entries is checked first, and synchronization starts only if the minimum number is OK.

Creating the dxrUid Attribute in the Provisioning Tree

For audit purposes, almost all objects in the Provisioning tree are required to hold the attribute dxrUid. Consequently, a migration tool checks the Provisioning tree and creates the attribute dxrUid where missing.

The migration tool creates the dxrUid attribute (if missing) under the following conditions:

  • One of the object class values begins with the prefix dxr

  • One of the object classes is dxmComponentDescription

  • One of the object classes is dxmIDMWorkflowDefinition

  • One of the object classes is dxmIDMActivityDefinition

  • One of the object classes is dxmIDMNestedActivityDefinition

  • One of the object classes is dxmEscalationDefinition

Objects that have different object classes than the ones listed above are not updated (because the dxrUid attribute is not defined for these object classes).

The Configurator performs this migration step automatically during its first run.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/82C/database

As the Provisioning part is migrated, all arguments refer to the Provisioning configuration database.

Usage:

MigrateUid.bat host port user password ssl domain-DN logfile

Example:

MigrateUid.bat localhost 389 "cn=DomainAdmin,cn=My-Company" dirx 0 "cn=My-Company" log.txt

Note: due to the new paging features in DirX V8.2, a sizelimit error may occur and the tool might not be able to read all requested entries. In this case, simply start the tool again until only those entries remain whose object class does not allow setting a dxrUid (for example, dxmObjectCollection).

Migrating the e-Mail Body in Reject e-Mails of Request Workflows

If the feature Reduce Runtime Activities is set in Approval activities, there are many approvers assigned to one activity.

Consequently, when using the token ${activity.participantEntries} in the e-mail body, all approvers are shown as the ones that rejected. Thus, a new token must be used that shows only the one(s) that really rejected.

Note that there is no automatic migration of the e-mail body. Therefore the following change needs to be made manually; for example, in the “Notification If Rejected” part of the 4-Eye Approval workflow of My-Company domain:

Here is the old e-mail body:

The assignment of privilege ${workflow.resources[0].dxrassignto@cn} to user ${workflow.subject.cn} was rejected.
For questions about this decision, please contact the persons that rejected the request:
<? for activity in ${workflow.activities} ?>
    <? if ${activity.approvalResult} == "REJECTED" ?>
        <? for participant in ${activity.participantEntries} ?>
           - Activity step: '${activity.name}': User ${participant.cn} with reason: ${activity.reason}
        <? endfor ?>
    <? endif ?>
<? endfor ?>
…

Here is the new e-mail body:

The assignment of privilege ${workflow.resources[0].dxrassignto@cn} to user ${workflow.subject.cn} was rejected.
For questions about this decision, please contact the persons that rejected the request:
<? for activity in ${workflow.activities} ?>
    <? if ${activity.approvalResult} == "REJECTED" ?>
        <? for participant in ${activity.approvers} ?>
             - Activity step: '${activity.name}': User ${participant.cn} with reason: ${activity.reason}
        <? endfor ?>
    <? endif ?>
<? endfor ?>

Migrating the URL of the Source Ticketing Sample Web Service

The URL of the Source Ticketing sample Web Service shipped with the new product release has changed. Therefore, applications which use the Web Service of the new product release must be changed so that they use a URL of the form http://host:port/sourceTicketing/sourceTicketingService (instead of http://host:port/spmlsoapservice/services/SpmlSoapService). For details about this topic, see the subsection "Preparing the Web Service Environment" in the section "Working with Source Tickets" of the chapter "Follow-up Tutorials" in the DirX Identity Tutorial.

Migrating SPML Filters that Use Wildcards

The conversion of an SPML filter expression containing a wildcard (*) character to an LDAP filter expression by the LDAP connector has changed with product versions newer than V8.2C.

This kind of filter is now converted according to the standard OASIS SPML filter specification. This change means that a wildcard contained in a value of an SPML filter expression, like

        <spml:filter>
             <dsml:equalityMatch name="sn">
                 <dsml:value>a*</dsml:value>
             </dsml:equalityMatch>
        </spml:filter>

is now interpreted as part of the value and not as a wildcard. As a result, it is escaped in the converted LDAP filter (“sn=a/”) passed to the LDAP server with the consequence that users with a surname equal to *a* are searched for, not the users with a surname beginning with a.

If wildcard searches are intended, the SPML filter element substring together with the elements initial, any or final must be used. The following snippet defines the SPML filter to handle the example of searching for all users with surname beginning with a:

        <spml:filter>
             <dsml:substrings name="sn">
                 <dsml:initial>a</dsml:initial>
             </dsml:substrings>
        </spml:filter>

If customers, for example, use their own workflow definitions with wildcards specified in, for example, channel search filters, they must adapt their definitions accordingly.

Aspects Relevant for Upgrade from V8.2B

This section describes all migration issues relevant to upgrading to the current version from DirX Identity V8.2B.

Updating Manager Profiles for the Data View

In V8.2B, the display of Data View search result entries was wrong (like the Provisioning View and not the Data View) when you used server=”DirXmetaRole” for the quick search panel.The workaround was to delete/rename the server attribute from the ldapquicksearchpanel definition.If you want to use the server=”DirXmetaRole” (you don’t have to select a server during Data View search):

  • Activate in install_path/GUI/profiles/dxrdataView.xml:

    <ldapquicksearchpanel displayName="Search" showAdvancedButton="true" useProfiles="true" server="DirXmetaRole" />

  • Add filterServer="raw" in install_path/GUI/profiles/dxdViewGroup.xml:

    <viewgroup name="dataview" filterServer="raw" displayName="Data View">

Migrating JMS Subscriptions

Subscriptions for C++-based Server were migrated automatically during upgrade installation and configuration. After you complete the upgrade, check that only subscriptions in the new format exist. This format is described in the section “Issues Relevant for Upgrade from 8.2B” → “Migration of JMS Subscriptions” in the “Introduction” chapter. If you find subscriptions in the old format, delete them.

Hint: On the host of the C++-based Server, you’ll find migration.ini or migration.tmp.ini in install_path/ats/msgstore. In this file, you’ll find the old subscriptions (on the right side and the new subscriptions on the left side of the equals sign).

Migrating the Source Ticketing Sample Web Service

See the subsection "Migrating the URL of the Source Ticketing Sample Web Service" in the section "Aspects Relevant for Upgrade from 8.2C".

Migrating Request Workflow Parameters to be Stored as dxmSpecificAttributes

Many request workflow parameters were stored in the attribute “dxmContent” (in XML format). For better performance and to be able to search for these parameters, these parameters are now stored in the attribute “dxmSpecifiAttriibutes”. For example:

dxmSpecificAttributes=escalationLevel 1

The Configurator performs this migration step automatically when it runs for the first time and processes all workflows in the Provisioning database.

You can start this migration step by hand at any time. It is located in:

install_path/tools/migration/82B/reqworkflows

As the Provisioning part is migrated, all arguments refer to the Provisioning configuration database.

Usage:

MigrateReqWFldapAttrs.bat host port user password ssl logfile

Example:

MigrateReqWFldapAttrs.bat localhost 389

"cn=DomainAdmin,cn=My-Company" dirx 0 "cn=My-Company" trace.txt

Aspects Relevant for Upgrade from V8.2A

This section describes all migration issues relevant to upgrading to the current version from DirX Identity V8.2A.

Adapting Object Descriptions

The behavior of properties of type “siemens.dxm.util.GeneralizedTime” without an explicit editor definition has changed.In earlier versions, only the date part of these properties was displayed.Now both the date and time part are shown.If only the date should be displayed, you need to insert an explicit editor definition.The relevant value is:

“siemens.DirXjdiscover.api.ldap.beans.JnbLdapGeneralizedDate”

Updating the SSL Flag for Messaging

The SSL flag for messaging is no longer located at the Configuration → Messaging Services → Message Server object. It has been shifted to the corresponding service object.

If you used SSL for messaging, perform the following steps:

  • Start the DirX Identity Manager.

  • Log in into Connectivity view group.

  • Click the Design Mode button (Tool bar).

  • Open ConfigurationServicesSystemMessage Service object.

  • Click Edit and set the SSL flag at this object.

  • Set the secure port with the correct information. Enable this field with the first flag.

  • Click Save.

  • Disable Design Mode.

  • Check that both the SSL flag and the Secure Port are visible and set correctly.

Solving Class Loading Problems in IdS-J Server

In previous releases of DirX Identity, the default location for customer-specific jar files concerning

  • Own Java mappings, user hooks, connector filters for realtime workflows

  • Custom connectors used in realtime workflows

was

install_path/ids-j-domain-Sn/confdb/jobs/framework/lib

This location has changed and now the jar files are located in the following folder:

install_path/ids-j-domain-Sn/confdb/common/lib

Make sure that the jar files are removed from the old location.

Adjusting SAP R/3 UM Workflows

SAP R3 UM agent/connector: A new flag directlyAssignedRolesOnly (set to true) allows export of only directly assigned roles. The default value is false. If you want to adjust your existing workflows perform the following steps:

  1. Tcl-based Workflows: Job SAPR3UM2Ident_XXXAccount_UMAgent file Configuration.xml:

     <connector
            role="connector"
            className="siemens.dxm.connector.sapUM.sapUMuser"
            …>
            <connection type="SAP_R3_UM" ...>
                 ...
                <property name="directlyAssigndRolesOnly" value="true"/>
            </connection>
  2. Realtime workflows: ts = Target System Port content tab of join activity:

    <port connector="SapR3UMConnector" ...
            <connector className="siemens.dxm.connector.sapUM.sapUM" mode="inout" ...>
                    <connection password=...
                        ...
                        <property name="directlyAssigndRolesOnly" value="true"/>
                    </connection>

Fixing the ClearOnMasterRemoval Typo

In UserCommon.xml, this flag was not correctly written.

For each domain, navigate to Provisioning view group → Domain ConfigurationCustomer ExtensionsObject DescriptionsUserCommon.xml

Replace each occurrence of the string ClearOnMasterRemova=" with ClearOnMasterRemoval=".

Using the New Identity API

The Identity API has changed. For details, see the DirX Identity API documentation delivered with Web Center.

Adapting Policies

The object description name for a Provisioning rule had to be changed from ProvisionRule to dxrProvisionRule and the object description name for password policies had to be changed from dxrPwdPolicyCheck to dxrPwdPolicy.

If attribute polices, event policies or delete policies for these types exist in your environment, adapt these policies accordingly, or they will no longer work.

Migrating the Source Ticketing Sample Web Service

See the subsection "Migrating the URL of the Source Ticketing Sample Web Service" in the section "Aspects Relevant for Upgrade from 8.2C".