Aim:
The Quickr Domino to Connections 5.0 migration tool is released and this document is designed to bring a customer through the migration with as much ease as possible.
Table of Contents:
Prerequisites:
Configuration:
Qpconfig.xml
Notes.ini
java.policy
FileNet Security changes
Changing the FileNet Admin user to an LDAP user
Running a test migration:
Migrating a test Form
Basic Mapping files
Migrating a test Place
Migrating test documents
Mapping files
Mapping Person and Groups to UNID for Domino
Mapping Person to Person for different LDAPs Domino to TDS
Running the migration
Understanding the environment
Migrating a Custom Form
Migrating a Place
Update FileNet to limit the reporting of the migration in Activity Streams
Troubleshooting
Prerequisites:
1. The Fixpack 47 or above has been installed on the Quickr Domino Server.
2. Validate the Connections and Quickr Domino Servers are up and running and that the Quickr Domino Server can connect to the Connections server over the network using http and https..
3. Validate that the Migration User and standard users can create Communities and CCM libraries and folders and add files to documents.
4. Validate that the Migration User is from LDAP and can access both Connections and FileNet successfully. The user must also be a FileNet administrator. If this is not the case then see section Changing the FileNet Administrator user to an LDAP user on how to remedy this.
5. Fill out the following Questionnaire to give an overview of the migration.
Questionnaire -
Quickr Domino:
What Operating System is the Quickr Domino on?
What version of Domino is the Quickr Domino server 8.51 or 8.53? ( Should be at Domino 8.5.3FP1 or Domino 8.5.1FP5 )
What is the current version of the Quickr Domino server including Hotfix number? ( Should be at Quickr Domino Hot Fix 47 - For Domino 8.5.1 or Quickr Domino Hot Fix 47 - For Domino 8.5.3 )
What type of LDAP is used? and is it the same LDAP directory that Connections uses
Give an example of the customer's LDAP structure e.g. CN=test name,OU=Group,O=Country ?
Connections:
Is this a new installation of Connections? How long has Connections been installed?
What Operating System is the Connections Server on,
Is CCM installed on the same operating system?
What is the name of the FileNet Administrator and is it suitable for the users to receive emails from this user, view content in the Activity Stream from this user or see that Quickr Docs with no Owner will now have this person as the owner..
The FileNet administrator must be listed in LDAP and be a FileNet Administrator.
What type of LDAP is used? and is it the same LDAP directory that Quickr uses
Give an example of the customer's LDAP structure e.g. CN=test name,O=Country ?
Data:
What is the overall size of the Quickr data?
How many Places are to be migrated?
What is the type of content to be migrated, Libraries\Blogs\Wiki\Tasks
What is the type of documents to be migrated? Uploads\Pages\ Imported Files \ Microsoft Forms
Is there any Custom Forms?
Is there secure content in the Places? Folder ACL's \ Document ACL's \ Rooms with partial Member lists
Is there any Customisations, if there is then please describe them.
Misc:
What is the location of the servers. it is better to have them close to each other as there will be a lot of traffic between them?
Mapping files: who is going to create the mapping files?
Configuration:
Qpconfig.xml
Required settings:
person_ldap_dump_file
e.g.
<person_ldap_dump_file>C:\LDAPdump\collect_user.dns</person_ldap_dump_file>
This element is a required parameter indicating the location of the person LDAP dumping file, which contains text lines of the form A;B, where A is the user dn value of the user in Connections, B is the user uid required by CCM ACL Rest API, ";" is the separator.
For Example, the following snippet of the person LDAP dump file contains the user dn-->user uid mapping relation for Domino LDAP ( more on this in sections Mapping files with no TDI needed & Mapping Files ):
CN=Testing User1,OU=Users,O=901;C0A24B06-77F4-5E83-8025-7D250037C029
CN=Testing User1,OU=Users,O=901;4B8B3F89-9EC1-2092-8025-7D250037CBA4
group_ldap_dump_file
e.g.
<person_ldap_dump_file>C:\LDAPdump\collect_groups.dns</person_ldap_dump_file>
This element is a required parameter indicating the location of the group LDAP dumping file, which contains text lines of the form A;B, where A is the group dn value, B is the group uid required by CCM ACL Rest API, ";" is the separator.
For Example, the following snippet of the group ldap dump file contains the group dn-->group uid mapping relation for Domino LDAP( more on this in sections Mapping files with no TDI needed & Mapping Files )::
CN=Group1;742DCEB2-FC1E-FDC7-4825-78870035D0A3
CN=Group2;42D3E14B-CEF7-6F1C-4825-78870035D0AC
Note: The person ldap dumping file and group ldap dumping file need to be saved in "UTF-8" encoding.
expand_external_groups
e.g.
<expand_external_groups enabled="true" max_depth="3" number_limit="100"/>
It is advised to set this to True. This element specifies if a group with Owner access in a Quickr Domino Place then it should be expanded as individual person owners. If there exists a group with the owner role in QD place and this option is not enabled, then an exception will be throw, and this place will be skipped and not migrated.
"max_depth" attribute specifies how deep the nested groups should be extracted during the group expansion.
"number_limit" attribute specifies how many person member should be returned from the nested groups.
special_char_encoding_mode
e.g.
<special_char_encoding_mode>underline</special_char_encoding_mode>
This element specifies how to encode the special characters in folders and filenames. Only two encoding mechanism are supported, namely "urlencoding" and "underline", all other encoding mechanism will be ignored, and the file containing special chars in file name will not be migrated.
The special chars \ / : * ? " < > | [ ] will be substituted in accordance with the specified encoding mechanism. If "
urlencoding" is specified, the special chars are encoded using URL encoding, as follows:
If "
underline" is specified, the special chars will be substituted with "_".
ConnectionVersion
e.g. <ConnectionVersion enable="true" version="5.0CR2" defaultValue="$IC-T-I-a"/>
This is only needed for Connections 5.0CR2 and newer, it is related to the authenticated users role within CCM.
"version" attribute specifies the Connections Version
"defaultValue" attribute specifies the token used for the Authenticated User Role. Use "$IC-T-I-a" for 5.0CR2 and newer.
Optional settings:
replace_second_cn_to_ou enabled
e.g.
<replace_second_cn_to_ou enabled="true"/>
Default ==> replace_second_cn_to_ou enabled="false"
This is needed when migrating a Quickr Domino server that is using TDS for it's LDAP, TDS stores users with a CN and after the user logs in then Quickr translates the CN to OU. For users who do not log in this translation does not happen, so a mixed environment occurs, enabling this setting handles this situation.
activeXDocuments
e.g.
<activeXDocuments>true</activeXDocuments>
Default ==> activeXDocuments>false
If there are activeX document in the Quickr Domino Place, then this needs to be enabled to migrate them correctly.
debugRoomName
e.g.
<debugRoomName>PageLibrary8825798B00032868.nsf</debugRoomName>
This is for debugging the ACL of one room in a Place. Add the room name into this setting, and the ACL of this room database will be printed in the console.log
combination_document_name
e.g.
<combination_document_name enabled="true"/>
Default ==> combination_document_name enabled="false"
After a migration, the attachment name will be used as the title of the document in CCM. If you want to preserve the original document title in Quickr, you can enable this setting, it will combine the document title and attachment name in the CCM document title.
ccm_owner_role
e.g.
<ccm_owner_role>Editor</ccm_owner_role>
This element is an optional parameter used to specify how to set the role element for owner in the Rest API atom feed in the post request sent to CCM. Currently, only "Editor" is acceptable value for this parameter.
domino_native enabled
e.g.
<domino_native enabled="true"/>
Default ==>
domino_native enabled="false"
If the directory for Quickr Domino is Domino Native, please enable this setting.
hide_restricted_document_name enabled
e.g. <hide_restricted_document_name enabled="true"/>
Default ==>
hide_restricted_document_name enabled="false"
This parameter is only used when running the getrestrictedresourcelist command, if this parameter is enabled, the document name will not be displayed in the generated list to avoid leaking confidential information contained in the document name.
person_mapping_file
e.g.
<person_mapping_file>c:\LDAPdump\usermapping.txt</person_mapping_file>
This element is needed when Domino and Connections use different LDAPs.
It indicates the location of the person mapping file, which contains text lines of the form A;B, where A is the user dn value in QD LDAP server, B is the mapped user dn value in CCM LDAP server, ";" is the separator. This setting will cover the case that Quickr Domino connecting Domino LDAP/Native as directory, and the CCM connecting non Domino LDAP as directory.
For Example, the following snippet of the person mapping file contains the person mapping relationship from Quickr Domino LDAP to Connections AD LDAP:
CN=User 1,O=Acme;CN=User 1,OU=Users,DC=ibm,DC=com
CN=User 2,O=Acme;CN=User 2,OU=Users,DC=ibm,DC=com
Note2: Both person and group mapping files are needed together, do not add one on it's own.
group_mapping_file
e.g.
<group_mapping_file>c:\LDAPdump\groupmapping.txt</group_mapping_file>
This element is needed when Domino and Connections use different LDAPs.
It indicates the location of the group mapping file, which contains text lines of the form A;B, where A is the original group dn value in QD LDAP server, B is the mapped group dn value in CCM LDAP server, ";" is the separator. This setting will cover the case that Quickr Domino connecting Domino LDAP/Native as directory, and the CCM connecting non Domino LDAP as directory.
For Example, the following snippet of the group mapping file contains the group mapping relationship from Quickr Domino LDAP to Connections AD LDAP:
CN=Group1;CN=Group1,OU=Groups,DC=ibm,DC=com
CN=Group2;CN=Group2,OU=Groups,DC=ibm,DC=com
Note1: The person mapping file and group mapping file need to be saved in "UTF-8" encoding.
Note2: Both person and group mapping files are needed together, do not add one on it's own.
Notes.ini
JavaUserClassesExt
A change was made to the FixPack installer 8.5.*.44 that one entry gets added automatically and the rest of the lines get added but are commented out, So you need to uncomment these lines before we can run a migration,
So the original notes.ini looks like this:
JavaUserClassesExt=QPJC1,QPJC2,QPJC3,QPJC4,QPJC5,QPJC6,QPJC7,QPJC8,QPJC9,QPJC10,QPJC11,QPJC12,QPJC13,QPJC14,QPJC15,QPJC16,QPJC17,QPJC18,QPJC19
QPJC1=C:\dominoDir\quickplace.jar
QPJC2=C:\dominoDir\log4j-118compat.jar
QPJC3=C:\dominoDir\xsp\proxy\WEB-INF\lib\commons-httpclient-3.0.1.jar
QPJC4=C:\dominoDir\xsp\proxy\WEB-INF\lib\commons-codec-1.3-minus-mp.jar
QPJC5=C:\dominoDir\xsp\shared\lib\commons-logging.jar
QPJC6=C:\dominoDir\abdera-core-0.4.0-incubating.jar
QPJC7=C:\dominoDir\abdera-i18n-0.4.0-incubating.jar
QPJC8=C:\dominoDir\abdera-parser-0.4.0-incubating.jar
QPJC9=C:\dominoDir\axiom-impl-1.2.5.jar
QPJC10=C:\dominoDir\axiom-api-1.2.5.jar
QPJC11=C:\dominoDir\jaxen-1.1.1.jar
QPJC12=C:\dominoDir\poi-3.6.jar
QPJC13=C:\dominoDir\commons-io-1.4.jar
QPJC14=C:\dominoDir\commons-fileupload-1.2.jar
QPJC15=C:\dominoDir\odfdom.jar
QPJC16=C:\dominoDir\poi-ooxml-3.6-20091214.jar
QPJC17=C:\dominoDir\poi-ooxml-schemas-3.6-20091214.jar
QPJC18=C:\dominoDir\xmlbeans-2.3.0.jar
QPJC19=C:\dominoDir\dom4j-1.6.1.jar
After installing the FixPack 8.5.1.44 or later with the FixPack Installer, the notes.ini will be updated like so:
JavaUserClassesExt=QPJC1,QPJC3,QPJC4,QPJC5,QPJC6,QPJC7,QPJC8,QPJC9,QPJC10,QPJC11,QPJC12,QPJC13,QPJC14,QPJC15,QPJC16,QPJC17,QPJC18,QPJC19,QPJC20,QPJC21,QPJC22,QPJC23,QPJC24,QPJC25,QPJC26
QPJC1=C:\dominoDir\quickplace.jar
QPJC3=C:\dominoDir\xsp\proxy\WEB-INF\lib\commons-httpclient-3.0.1.jar
QPJC4=C:\dominoDir\xsp\proxy\WEB-INF\lib\commons-codec-1.3-minus-mp.jar
QPJC5=C:\dominoDir\xsp\shared\lib\commons-logging.jar
QPJC6=C:\dominoDir\abdera-core-0.4.0-incubating.jar
QPJC7=C:\dominoDir\abdera-i18n-0.4.0-incubating.jar
QPJC8=C:\dominoDir\abdera-parser-0.4.0-incubating.jar
QPJC9=C:\dominoDir\axiom-impl-1.2.5.jar
QPJC10=C:\dominoDir\axiom-api-1.2.5.jar
QPJC11=C:\dominoDir\jaxen-1.1.1.jar
QPJC12=C:\dominoDir\poi-3.6.jar
QPJC13=C:\dominoDir\commons-io-1.4.jar
QPJC14=C:\dominoDir\commons-fileupload-1.2.jar
QPJC15=C:\dominoDir\odfdom.jar
QPJC16=C:\dominoDir\poi-ooxml-3.6-20091214.jar
QPJC17=C:\dominoDir\poi-ooxml-schemas-3.6-20091214.jar
QPJC18=C:\dominoDir\xmlbeans-2.3.0.jar
QPJC19=C:\dominoDir\dom4j-1.6.1.jar
QPJC20=C:\dominoDir\log4j-1.2.14.jar
#QPJC21=C:\dominoDir\Jace.jar
#QPJC22=C:\dominoDir\stax-api.jar
#QPJC23=C:\dominoDir\xlxpScanner.jar
#QPJC24=C:\dominoDir\xlxpScannerUtils.jar
#QPJC25=C:\dominoDir\abdera-client-0.4.0-incubating.jar
#QPJC26=C:\dominoDir\jsoup-1.6.1.jar
Note: The QPJC2 line has been removed and QPJC2 is removed from JavaUserClassesExt.
The QPJC20 line has been added and QPJC20 has been added to JavaUserClassesExt.
QPJC21-26 have been added and are commented out, please remove the # character to load the .jar files.
ConnectionsServerURL
e.g. ConnectionsServerURL=https://connections.ibm.com
Note: that this uses https, The migration tool will use this url to connect to the Connections server to create the Community that the Place will be migrated into.
FilenetURL
e.g. FilenetURL=http://filenet.ibm.com
Note: that this uses http and not https, The migration tool will use this url to connect to the FileNet server to create the Libraries in the Connections Community.
ObjectStore
e.g. ObjectStore=ICObjectStore
This is added by the installer, please verify it.
The value of this can be found by using http://filenet.ibm.com\acce to look-up the name of the ObjectStore, It will be under ICDomain\Object Stores.
TopTargetFolderForMigration
e.g. TopTargetFolderForMigration=/ClbTeamspaces
This is added by the installer, please verify it.
Since Connections 5.0 the libraries are stored under the ClbTeamspaces folder and then Year\Month. The code will add the Year\Month, and generally the location will not change, so stick with the example above.
QuickPlaceJavaLogging (optional)
e.g. QuickPlaceJavaLogging=3
This is for debugging and the range is 1-3.. use the example above if debugging...
Java.policy
This file is located at \jvm\lib\security directory.
The following entries are appended to the end of the file by the fixpack installation. Verify that this has been done by the installer.
grant codeBase "
file:${notes.binary}/lib/Jace.jar" {
permission java.security.AllPermission;
};
grant codeBase "file:${notes.binary}/lib/quickplace.jar" {
permission java.security.AllPermission;
};
FileNet Security changes
Grant all permission access rights to the privileged user specified when running qptool migration command, in order to be able to modify the created time and owner property of the new created document using the privileged user.
Open ACCE (Administration Console for Content Platform Engine) web console
1, 2, Navigate to the Object Store you are working on and then open the "Security" tab.
3, 4, Select the privileged user and click "Edit" button to prompt the "Edit Permissions" dialog box.
5, 6, Choose "Custom" in the "Permission group" drop-down list, mark all listed permission, and then
7, click "OK" to grant all permission access rights to the privileged user.
8, Click the "Save" button to save the changes to object store setting.
Grant the authenticated users the permission to view the folder description after migration.
Open ACCE (Administration Console for Content Platform Engine) web console
1, 2, 3, 4, Navigate to the Object Store you are working on, and then click Data Design > Classes > Custom Objects > Quickr Folder Properties
5, Open the "Default Instance Security" tab.
6, 7, Select "#AUTHENTICATED-USERS" and then click "Edit" button to prompt the "Edit Permissions" dialog box.
9, Choose "View Properties" in the "Permission group" drop-down list, and then click "OK" to grant authenticated users group the permission to view this object.
10, Click the "Save" button to save the changes to object store setting.
Note: if the user "#AUTHENTICATED-USERS" does not exist in the Users and Groups list, you need to add it using the following steps:
1, Click the "Add" button to prompt the "Add Users and Groups" dialog box.
2, 3, Select "Display name" and "Starts with", and enter "#" as the search criterion, then click "Search" button to execute the search condition.
4, 5, 6, Select "#AUTHENTICATED-USERS" from the "Available Users and Groups", and click the right arrow to add it to "Selected Users and Groups".
7, Click "OK" button to add the user..
8, Click the "Save" button to save the changes to object store setting
Changing the FileNet Administrator user to an LDAP user – This section is only needed if you do not have an LDAP user as a FileNet Administrator. If you already have an LDAP user as a FileNet Administrator please skip this section.
See the Doc to find the information on how to Change the FileNet Administrator user to an LDAP user
Running a Test Migration.
Migrating a Test Form
Migrating a form is the most basic form of migration as migrating a form does not involve any interaction with creating a Community or any other form of interaction with Connections. It is Quickr Domino to FileNet actions. The action of migrating a test form verifies that you have the correct access and configuration to work with CCM\FileNet.
Create a Test Place called testplace in Quickr Domino.
Create 1 simple test form and add 1 text field to the form.
Open the Quickr Domino console and run the following command
“load qptool getcustomizedforms -p testplace -o testplace.xml”
-p testplace ==> is the name of your testplace
-o testplace.xml” ==> is the name of the output file in the Domino Program folder.
This extracts the details of the test form from the Place and adds it to a .xml file
Now, open the testplace.xml that has been generated and make some changes, the text should look as follows.
<?xml version="1.0"?>
<service>
<servers>
<server>
<hostname>testserver.acme.com</hostname>
<places>
<place>
<name>testplace</name>
<room migrate="false" name="testplace" nsf="Main.nsf">
<customizedForm description="" migrate="false" name="TestForm" unid="69DB62306126887E80257E7200710970">
<customizedField dataType="h_TextInput" descriptionText="" displayName="TextField" isRequired="false" name="c_TextField"/></customizedForm>
</room>
<action_status action="getCustomizedForms">
<code>0</code>
<start_time><![CDATA[20150628T215449,348+0100]]></start_time>
<end_time><![CDATA[20150628T215449,489+0100]]></end_time>
</action_status>
</place>
</places>
</server>
</servers>
</service>
Change the 2 entries that say “false” and change then to “true” as follows.
<?xml version="1.0"?>
<service>
<servers>
<server>
<hostname>testserver.acme.com</hostname>
<places>
<place>
<name>testplace</name>
<room migrate="true" name="testplace" nsf="Main.nsf">
<customizedForm description="" migrate="true" name="TestForm" unid="69DB62306126887E80257E7200710970">
<customizedField dataType="h_TextInput" descriptionText="" displayName="TextField" isRequired="false" name="c_TextField"/></customizedForm>
</room>
<action_status action="getCustomizedForms">
<code>0</code>
<start_time><![CDATA[20150628T215449,348+0100]]></start_time>
<end_time><![CDATA[20150628T215449,489+0100]]></end_time>
</action_status>
</place>
</places>
</server>
</servers>
</service>
Save the file.
In the Domino console, run the command
“load qptool migratecustomizedforms -i testplace.xml -u admin -pw password -o migration.xml”
-i testplace.xml ==> is the name of the input file that you have edited in the previous step.
-u admin ==> the name of the migration administrator
-pw password ==> the administrator's password
-o migration.xml” ==> the name of the output file that stores the result of the migration.
Open the migration.xml and verify that the migration has been successful, (0
is successful)
Use ACCE to verify that the form has been added to FileNet
Basic Mapping files with no TDI needed
Before migrating a Place we need to have entries in the mapping files. In this case we are assuming that we are using a different LDAP for Quickr Domino and Connections.
So add 2 test users to the Quickr Place that we have previously created. ( Testing User1 and Testing User2 )
Open the file collect_user.dns that you have named in the qpconfig.xml setting
The first line can be as follows but it is purely optional ==> ConnectionsDN;ConnectionsUUID
These can be found stored on the Connections server in the TDI folder in a file called collect.dns, pull out the 2 sample names from this file and add them into the collect_user.dns
The collect_user.dns should now look like this
ConnectionsDN;ConnectionsUUID
CN=Testing User1,OU=Users,O=901;
CN=Testing User2,OU=Users,O=901;
.
Note: If the Connections LDAP is Active Directory, then use the shortname instead of the full dn name as the ConnectionsDN, in this case your collect_user.dns should now look like this
ConnectionsDN;ConnectionsUUID
CN=TUser1;
CN=TUser2;
.
Now we need the ConnectionsUUID so open Connections and go to the Profiles\Directory so we can search for Profiles.
Next we hover over the user and do a copy image location if using FireFox
This gives us the url of the users Profile and also the UNID
http://acme.ibm.com/profiles/photo.do?r=true&small=false&userid=DA3BD999-8691-DDD6-8025-7D25004ED97A&etag=20150409.125116
Do this for both users and the collect_user.dns should now look like this
ConnectionsDN;ConnectionsUUID
CN=Testing User1,OU=Users,O=901,O=901;DA3BD999-8691-DDD6-8025-7D25004ED97A
CN=Testing User2,OU=Users,O=901,O=901;D77E5DF4-7F63-D33A-8025-7D25004EE326
.
For testing this is the collect_user.dns completed. If you have a second LDAP for Connection then do the following, if not go straight to Migrating a Test Place.
.
Open the file usermapping.txt that you have named in the qpconfig.xml setting
The first line can be as follows but it is purely optional ==> DNfromQD;DNfromConnections
The first part of the second line is the DN for the first User from Quickr. To locate this open the contacts1.nsf of the test Place using the Domino Administrator and go to the Default view, here you can see the name of the 2 users,
Check the document properties and the field h_Alias, if the Alias has comma separators then use this in the collect_user.dns.
So our usermapping.txt should look like this
DNfromQD;ConnectionsDN
CN=Testing User1,O=901
CN=Testing User2,O=901
Next we need the DN from Connections. The second part of the second line is the DN that we already used in the collect_user.dns, add these to the usermapping.txt and it should now look like this
DNfromQD;ConnectionsDN
CN=Testing User1,O=901;CN=Testing User1,OU=Users,O=901
CN=Testing User2,O=901;CN=Testing User1,OU=Users,O=901
Note: If the Connections LDAP is Active Directory, then use the shortname instead of the full dn name as the ConnectionsDN, in this case your usermapping.txt should now look like this
DNfromQD;ConnectionsDN
CN=Testing User1,O=901;CN=TUser1
CN=Testing User2,O=901;CN=TUser1
.
Now we have enough gathered in the mapping files to migrate the Test Place.
..
Migrating a Test Place
Next we will migrate the test Place,
Open the Quick Domino Console and run the following command
load qptool migration -p testplace -u admin -pw password
-p testplace ==> the name of the Place
-u admin ==> the name of the migration administrator
-pw password ==> the administrator's password
Open the qptool.migration.xmll and verify that the migration has been successful, (0
is successful)
Open the new Community in Connections called TestPlace and verify that the members have been carried over from Quickr Domino and that the Library has been added as an App.
Migrating Test documents and folders.
Login to the Quickr Domino test Place using the 2 test user accounts and add several Documents and Folders to the Quickr Domino Place, now migrate the test Place
Open the Quick Domino Console and run the following command
load qptool migration -p testplace -u admin -pw password
-p testplace ==> the name of the Place
-u admin ==> the name of the migration administrator
-pw password ==> the administrator's password
Open the qptool.migration.xmll and verify that the migration has been successful, (0
is successful)
Open the new Community in Connections called TestPlace and verify that the members have been carried over from Quickr Domino and that the Library has been added as an App.
Open the Library and check the newly created documents and folders.
Congratulations you have carried out a test migration from Quickr Domino to CCM.
Mapping files
Mapping Person and Groups to UNID for Domino
It is assumed that you have already completed the installation and configuration of Connections CCM. Essential to this would have been Installing the Tivoli Directory Integrator and running the population wizard. We are going to revisit TDI to generate the mapping file that we need for the Quickr Migration.
1. In your File Explorer navigate to the “C:\Install\Wizards“ folder.
The wizards folder contains 3 files that we are going to need, profiles_tdi.properties, profiles_tdi.xml and the collect_dns.bat
profiles_tdi.properties contains the LDAP url, username and password, basically all your config settings for the LDAP directory. So when we run the batch file later, it has the details it needs for the connection.
profiles_tdi.xml contains a lot more data, it is a use once type of file.. It contains all the Assembly lines, Connectors and reference data that are supplied by Connections to run the wizards and batch files for Connections... When you start a project you can import all this data which has already been created for you.
Collect_dns.bat This file is used to gather your info from Domino LDAP.. it points to the properties file and it also calls the assembly line that you create...
2. Copy all the contents of the Wizards folder into a new folder called “C:\CCMMigration\” Or copy the TDISOL directory into “C:\CCMMigration\”
3. Now we are going to launch TDI so we can build the Assembly lines that we will need so Launch the TDI Configuration Editor.
4. We need a location to work in so create a Workspace. We don't want to overwrite the current Connections property files so by creating a new workspace we are avoiding this. By doing this we can have a backup of the Connections files so that we can import them into this Workspace if needed.
Add a new workspace under the CCMMigration folder and press OK
5. We are going to reuse what Connections provides so click on the Import Configuration File link.
6. This is a new project so leave the first option as New Project...
We are going to use the profiles_tdi.xml so press the button “…” and locate it at
“C:\CCMMigration\TDIPopulation\win\TDI\profiles_tdi.xml“
Leave all the boxes ticked. It's easier to take them all in as it is to select only what is needed.
Press Finish to continue...
* If you only want to import what is needed then see in this image what should be selected.
7. Add the project name, so add “
DominoToCCM” as the project name and press the Finish button.
8. The Project should now look like this..
9. Expand the AssemblyLines and click on the
“collect_dns_flow” and
“collect_dns” assembly lines, now right-click and select Copy. Right click on another assembly line and paste the copied assembly lines.
a. you will be asked to add the new name for the
“collect_dns_flow” assembly line. Add
“collect_dns_flow_for_Domino”
b. you will be asked to add the new name for the
“collect_dns” assembly line. Add
“collect_dns_for_Domino”
c. after you press OK you will see the new assembly lines created.
10. We need to modify the two new assembly lines to suit our needs, the first one to change is collect_dns_for_Domino.
collect_dns_for_Domino:
a, click on the collect_dns_for_Domino assembly line and it will open up in the right hand pane.
b, click on the Call_collectFlow connector.
c, click on the Connection Tab.
d, we are going to call the other assembly line that we created, it's going to do most of the work. So change the AssemblyLine from collect_dns_flow to collect_dns_for_domino. That is the only change that we need to make on this assembly line.
To complete this assembly line we need to save it so press the save icon.
collect_dns_flow_for_Domino:
a, click on the collect_dns_flow_for_Domino assembly line and it will open up in the right hand pane.
b, click on the Feed.
c, click on the $dn field, you need to do this so you have access to the Add button..
d, press the Add button.
Add dominoUNID as a new attribute and press OK
You will then be able to see the new attribute (dominoUNID) that you have added..
Next, add objectclass as a new attribute and press OK
You will then be able to see the new attribute (objectclass) that you have added..
11, Add the Parser.
a, next we need to pick a Parser, so click on “
write_dn”
b, click on the
“Parser” tab.
c, press the
“Select Parser” button.
Select
“Script Parser” and then press the button
“Finish”
12, Press the button
“Edit Script...”
Add the following code to the Script..
//
// This is a simple parser that returns one line at a time from
// the input stream.
//
var counter = 0;
function function_map_from_dominoUNID(fieldname) {
var byteString = null;
var canonicalString = "";
var attr = entry.getAttribute("dominoUNID");
if(attr != null) {
byteString = attr.getValue(0);
var canonicalString = "SSSSS";
if(byteString != null) {
canonicalString = "HHHH";
canonicalString = com.ibm.connections.directory.services.util.ObjectGUIDConverter.convertByteStringToGUIDString(byteString);
}
else {var canonicalString = "VVV";}
}
else {var canonicalString = "DDD";}
return canonicalString;
}
function writeEntry ()
{
var type = entry.getString("objectclass");
if(type == "dominoPerson")
{
var person_dn = entry.getString("$dn");
var index = person_dn.indexOf(",");
if(index != -1)
{
person_dn = person_dn.replace(/,/g, "/");
}
out.write (person_dn);
out.write (";");
out.write (function_map_from_dominoUNID());
out.newLine();
}
if(type == "dominoGroup")
{
var group_dn = entry.getString("$dn");
var index = group_dn.indexOf("CN=");
if(index == 0)
{
group_dn = group_dn.substring(3);
}
out.write (group_dn);
out.write (";");
out.write (function_map_from_dominoUNID());
out.newLine();
}
if(type != "1")
{
out.write ("Q");
out.newLine();
}
}
function readEntry ()
{
var str = inp.readLine();
if (str == null) {
result.setStatus (0);
result.setMessage ("End of input");
return;
}
counter++;
entry.setAttribute ("line", str);
result.setStatus (1);
}
function querySchema ()
{
var e = new com.ibm.di.entry.Entry();
e.addAttributeValue("name","line");
e.addAttributeValue("syntax","String");
list.add(e);
result.setStatus (1);
}
13, Close the Script Parser after adding the code..
14, To complete this assembly line we need to save it so press the save icon.
15, We are finished with the TDI Editor, we now need to call the new assembly lines from the batch file. So switch back to the Windows Explorer.
From the newly created CCMMigration folder, step down a few subfolders to
“C:\CCMMigration\TDIPopulation\win\TDI”
16, Copy the “
collect_dns.bat” file and create a copy of it... Name this file “collect_dns_migration.bat”
17, Edit the new file and replace
“collect_dns” with
“collect_dns_for_Domino”
18, Save and close the file then run the new batch file (collect_dns_migration.bat)
19, Open the newly created file “collect.dns” and check that it looks like the following..
CN=Admin/O=acme;E2FBE4E0-7E37-75B5-8025-7C1F00447F32
CN=LDAP Bind/O=acme;D193255A-EE4C-DC2F-8025-7D1F0050831E
Once you are happy with the file, rename it to users.dns
20, Now we need to point to the groups so open the profiles_tdi.properties and go to the setting source_ldap_search_filter We need to point this to the groups and not the person document so change this to source_ldap_search_filter=(objectclass=dominoGroup)
Save the file.
Run the (collect_dns_migration.bat) once more and it will have created the groups file with the previous name that was used for the person documents it will be called collect.dns.
Open this and check it, it should look like this.
GroupCR1;1E82895D-A942-398D-8025-7D1A004A72B9
GroupCa1;459CFDF0-4474-90F6-8025-7D1A00539698
Once you are happy with the file, rename it to groups.dns
Mapping Person to Person for different LDAPs Domino to TDS
Return to the TDI Configuration Editor. Right click on AssemblyLines and choose New AssemblyLine.
Enter CreateUserDNMapping for the new AssemblyLine name and click Finish.
Click Add Component.
Enter ldap in the search box and select LDAP Connector from the Components list. Change the name to ConnectionsLDAP and set the mode to Iterator. Click Next.
Since this TDISOL installation is already configured to connect to the LDAP servers, those same references from the properties file can be used here. Properties are used by clicking on the labels, as shown below. By using the properties we can more easily change these parameters in a single properties file rather than having to modify the connectors manually.
Select the Use Property option. Select the source_ldap_url property from the list. Click OK.
Repeat the process for the following labels.
Login username.
Login password
Search base.
Search filter.
The values from the properties file are populated to the connector configuration. The values are now managed in the properties file rather than the connector configuration. Click Finish.
Select the Input Map tab and click Connect.
Click Next several times to iterate through the list of LDAP entries. The LDAP schema is automatically populated by the attributes retrieved from each entry. Click Close to close the session.
Drag the $dn and mail attributes from the Schema list to the Work Attribute column.
Click Add component.
Create another LDAP Connector called DominoLDAP and click Next. Click on the LDAP URL label.
Select Use Property. New properties are created since the TDISOL environment is not configured to access the Quickr Domino LDAP server. Click Add property.
Select profiles.tdiproperties for the Store Name. Enter quickr_domino_ldap_url for the property name and ldap://quickr01.itso.ibm.com:389 for the value.
Verify the information previously entered and click OK.
Repeat the process for the LDAP user login.
User login password.
Clear the Search Base and set the Search Filter to mail=*. This returns only person entries that contain an email address.
Click Connect to verify that we can access the directory. Click Next several times to populate the Schema attribute list. Click Close to close the connection.
Drag the $dn attribute to the Work Attribute column of the Input Map. Rename the $dn entry in the Work
Attribute column to QuickrDN.
Click the Link Criteria tab. Click Add. Select mail on the left side (Quickr Domino) and $mail (Connections LDAP) on the right. If there is a different set of attributes that are used to link the Domino and Active Directory users, use those attributes here. Be sure to add the new attribute to the Input Map of the Iterator.
Because we added a new property that contains a password, we can encrypt the password to remove the clear text password from the property file. Open the profiles property file (reload if prompted). Locate the new password property and change the value in the Protected column to true. Click Send the properties to Server and save the changes.
The password hash can be viewed by clicking on the value.
Select the DominoLDAP connector. Select the Hooks tab and check the On No Match checkbox under DataFlow - Lookup. Enter the following in the text box. Execution flows to this hook in the event that there is no match found in the Quickr Domino LDAP. The mail address of the entry that can not be located is printed in the log and execution continues with the next LDAP entry in the Iterator.
An exception is generated and the processing stops if you do not trap for the possibility of returning multiple entries for a particular mail address. These lines in the On Multiple Entries hook print the error to the log file and continue execution with the next entry in the Iterator. In a perfect world this hook should never execute as the email address in the Domino Directory should be unique. However, it is prudent to trap for it.
Click Add Component. Enter file in the search box and select the File System Connector from the Components list. Name it WriteDNMapping and select AddOnly as the mode and click Next.
Set the file name to person_mapping.csv. The file name is relative to the TDI solutions directory, which is /root/QuickrMig/TDI. Click Next.
Select CSV Parser.
The Field Separator should be ';' by default. Expand the Advanced section.
Enter QuickrDN followed by $dn in the Field Names box. The order must be as shown. Uncheck Enable Quoting and Write header. Add UTF-8 to the Character Encoding field. Click Finish.
Double click the "[Empty map.." text in the Output Map.
Select $dn and QuickrDN and click OK.
The output map should be as follows.
Click Add Component. Enter "if" in the search box and select the IF component. Set the name to IfNoMail and click Next.
Click Add. Select mail from the Attribute list, check Not, and set the operator to "has value(s)". Click Finish. This sets the conditional to true if the mail attribute is missing, empty, or null.
Click Yes to add a new branch. This new branch executes if the previous IF connector conditional return true.
Check the Scripts radio button and select the Empty Script component. Set the name to SkipEntry and click Finish.
Enter system.skipEntry(); in the text box. This causes the execution to continue to the next entry in the ConnectionsLDAP iterator.
Drag the newly created IF component directly in front of the DominoLDAP connector.
Select the WriteDNMapping component and select the Hooks tab. Check the Before Execute hook and enter the following line. Since Quickr is using native Domino authentication, we need to convert the LDAP DN format to the Notes name format. This is done by replacing the "," with "/". If Domino LDAP is used for Quickr authentication, then this line can be removed.
Save the AssemblyLine and click Run in console.
Examine the contents of the person_mapping.csv file in the /root/QuickrMig/TDI directory. The contents should be similar to the following.
CN=Matt Ayer/O=itso;CN=Matt Ayer,OU=ITSO,DC=ad,DC=ITSO,DC=net
CN=Amy Blanks/O=itso;CN=Amy Blanks,OU=ITSO,DC=ad,DC=ITSO,DC=net
CN=Peter Brown/O=itso;CN=Peter Brown,OU=ITSO,DC=ad,DC=ITSO,DC=net
Running the Migration
Understanding the environment
Before migrating the production Quickr Domino Places to a Connections server it is good practice to analyse the Places to see how what data will be migrated and how it will be migrated.
What's covered by the migration tool.
A Place will be migrated as a community in Connections.
Place membership will be migrated to community.
Room will be migrated to CCM as folder, hierarchy will be preserved.
Folder will be migrated to CCM as folder, hierarchy will be preserved.
Rooms, Folders, Homes pages
Documents created from uploads, imports, pages, simple custom forms, and Microsoft office forms will be migrated to CCM.
The metadata information of creator, last editor, created timestamp, last updated timestamp will all be migrated with the documents and folders. Versions and comments will be migrated together with the documents. Simple custom forms will be migrated to CCM as document classes.
What's NOT covered by the migration tool.
- Wiki and Blog places.
- Task, Calendar, forum, list, link, or Templates.
- Html forms and the documents based on the html forms
- Draft. All drafts need to be completed before migration.
- Workflows. All workflows need to be completed before migration.
- Content in the Trash will not be migrated
- Local members.
- Restricted Access: Docs\Folders\Rooms
To check what elements have restricted access in Quickr. Run the following command
load qptool getrestrictedresourcelist -p nameofplace
The result is a xml file that will list all restricted elements in a Place.
Sample Domino Agents to analyse the Quickr Domino environment.
Follow this link to find out more information about sample agents that will analyse the Quickr Domino server and report on the type of documents stored in the Quickr Places.
Access Models – Users
The mapping of the access roles from Quickr Domino to Connections can be seen in the following 3 tables.
Quickr Domino Place level => Connections Library Access
User roles in Quickr Domino. | Mapped User Roles in Connections |
Owner - Place creator, Owner has access to all rooms, folders, and pages in the place. | Owner - Move files to a different location.
Remove files from the source location when moving them to another location.
Delete any library file or folder.
Change share settings.
Empty the trash. |
Manager - Can create and edit content, manage membership, and customise the place |
Editor - Can create content, and edit other people’s content | Member - Add files to folders to which you have access
Edit files using personal drafts
Edit folder names and descriptions
Download, replace, copy, move, and use social features for files to which you have access
Delete and use social features for folders to which you have access |
Author - Can create content, and edit his own content. |
Reader - Can read content |
Rooms & Folders => Folders
User roles in Quickr Domino. | Mapped User Roles in Connections |
Owner - Room creator gets this role
Owner has access to all folders, and pages in the room+ Manager capabilities | Owner - Change how members access files and folders
Configure the display of folders and files
Change default document type for all files uploaded to the library
Enable members to change the document type when uploading files
Enable draft review and modify related options |
Manager - Can create and edit content, manage membership, customise rooms | Editor - Edit and upload new versions of any library file.
Note: Editors can edit the content, the document properties, and the description of any file.
Edit folders that they added. |
Editor - Can create content, and edit other people’s content |
Author - Can create content, and edit his own content. | Contributor – Reader tasks plus..... Upload new files.
Create folders. |
Reader - Can read content | Reader - Access and read files. Like, follow, and comment files. |
Documents ==> Documents
User roles in Quickr Domino. | Mapped User Roles in Connections |
Owner - Can edit all documents | Owner - Can edit all documents |
Author - Can edit the document | Author – Can edit the document |
Reader - Can read the document | Reader - Can read the document |
Groups
Quickr Domino Place => Connections Library Access
- If a group is an owner or manager in a Place, it is expanded to individual members and migrated to a community as person owners.
Note: Groups cannot be owners in Connections Communities
- If a group is reader, author, or editor in a place, it is migrated as a group as a community member.
Group roles in Quickr Domino. | Mapped Group Roles in Connections |
Owner | Owner – ***Expanded to users
|
Manager |
Editor | Member |
Author |
Reader |
Migrating custom forms
There is a limit to the amount of custom forms that can be migrated, this is realised when running the qptool migratecustomized forms command, if you notice a runtime exception reporting, “The row length limitation of the underlying database has been exceeded, incapable of creating document class any further,” it means you are not able to migrate customized forms any further.
The cause of this is the underlying database which stores the field info has a row length limitation of 32K, It is recommended that customized forms be migrated by prioritizing from most significant to least significant,
See this link for more details on migrating the custom forms and this related issue: http://www-10.lotus.com/ldd/lcwiki.nsf/xpDocViewer.xsp?lookupName=Early+Release+-+Quickr+for+Domino+Migration+Guide#action=openDocument&res_title=Installing_and_configuring&content=pdcontent
See the earlier section on the steps to migrate Custom Forms.
getcustomizedforms: Gets a customized forms list from the specified place.
Usage:
qptool getcustomized forms [–?] (–a | –p | –i ) [–o ]
Where:
–? Prints out this usage message.
–a Gets customized forms from all places on the server.
–p Space-separated list of places to get customized forms from.
–i Input file specifying places to get customized forms from.
–o Specifies the output file. (Default: qptool.getcustomizedforms.xml)
migratecustomizedforms: Migrate a customized forms list from the specified place input list.
Usage:
qptool migratecustomizedforms [–?] -u -pw -i [-o ]
Where:
–? Prints out this usage message.
–u Specifies the user name of the privileged account to run the migration.
–pw password Specifies the password of the privileged account to run the migration.
–i Input file specifying places to be migrated.
–o Specifies the output file. (Default: qptool.migration.xml)
Migrating a Place
See the earlier section on the steps to migrate a Place.
Usage:
load qptool migration [-p (place list)] [-a] [-i input.xml] -u username -pw password
Where:
–p Specifies a single place or a list of places to migrate.
–a Migrates all places.
–i input.xml Specifies the places list in the xml file.
–u Specifies the administrator account used for migration.
–pw Specifies the administrator account password.
Update FileNet to limit the reporting of the migration in Activity Streams
See this Doc for more information on how to do this...
Troubleshooting
Cover troubleshooting .ser files ...
# | Error Number | ERROR Message | ERROR Message example | Solution for this kind of ERROR |
1 | | java.lang.NoClassDefFoundError | 07/02/2014 04:30:28 PM com.lotus.quickplace.qom.QPException: 0xffffffff : 0xffffffff : java.lang.NoClassDefFoundError: org.apache.abdera.protocol.client.AbderaClient | This error "com.lotus.quickplace.qom.QPException: 0xffffffff : 0xffffffff : java.lang.NoClassDefFoundError: org.apache.abdera.protocol.client.AbderaClient" means the class Abderaclient can not be found in class path, so pls make sure the "QPJC3=C:\LOTUS\DOMINO\xsp\proxy\WEB-INF\lib\commons-httpclient-3.0.1.jar" in notes.in. and then try to run migration command again. |
2 | | | Required credentials not available for BASIC @filenet.gbm.net:80 | The Migration Administrator must be a FileNet administrator and also be a Connections Administrator |
3 | E001 | E001:The mapping file: " + mapFilePathName + " does not exist or is not a regular file"); | E00001:The mapping file: usermapping.txt does not exist or is not a regular file" | Check that the mapping file defined in the qpconfig.xml exists in the location specified. |
4 | E002 | E002:The content format is not valid for line: " + line + " of file: " + mapFilePath); | | The correct format is "CN=xxxx;CN=xxxx". A semicolon ";" is needed as the separator character between the 2 LDAP versions of a user's name. |
5 | E003 | "E003:Failed to load mapping file: " + mapFilePath + " due to: " + e.getMessage()); | | Loading the mapping file failed, so please check that the location of the mapping file is the same as what is set in the qpconfig.xml file. |
6 | E004 | "E004:Failed to open database: " + mainDBPath + " for getting place type"); | | It is not possible to open the listed database. Pleases check that the database exists and that the database in not locked. Running the qptool unlock command will unlock it. Use the command "load qptool unlock -p placename" to unlock the place database. |
7 | E005 | "E005:Failed to get member ACL for database: " + mainDBPath + ", due to Exception: " + e.getMessage()); | | Can not load the member ACL of the database because of an exception. Please use a Notes Client to open the database and check the ACL |
8 | E006 | "E006:Failed to open database: " + mainDBPath + " for getting notes internal member dn role"); | | Can not open the database. Please use a Notes Client to open the database. |
9 | E007 | "E007:There is no member ACL retrieved for place: " + placeName | | Can not find the member ACL of the database because of an exception. Please use a Notes Client to open the database and check the ACL
|
10 | E008 | E008:There is group member for place: " + placeName + ", but group expand option is not enabled in qpconfig.xml" | | If there is an owner group in the place, but the group expand option is not enabled, then we simply return with an error. |
11 | E009 | E009:Failed to open Contacts DB for place: " + placeName); | | Can not open the contacts1.nsf database in this place. |
12 | E010 | E010:Failed to get role for place: " + placeName + ", due to Exception: " + e.getMessage()); | | #can not get the role from db for some exception.
|
13 | E011 | E011:There is no member ACL retrieved for place: allMemberDNRoles is empty. " | | There is not any member in this Place. It's incorrect because there most be members in a Place. Please use a Notes Client to open the database and check the ACL |
14 | E012 | E012:The required URL for communicating with Connection is not set specified completely in the notes.ini config file" | | The setting "ConnectionsServerURL" is not set in notes.ini. |
15 | E013 | E013:Failed to retrieve service document" | | #Can not get service document and parse it to get the url for "My Communities" feed, it means can not connect to connection server successfully, pls check connection settings.
|
16 | E014 | E014:Failed to retrieve service document due to: " + httpResponseCode.get(response.getStatus()) | E014:Failed to retrieve service document due to: Internal server error | #show the error status code from http response. |
17 | E015 | E015:Failed to get the URL for \"My Communities\" feed" | | #can not get the url of "my commnunities" feed. pls check the connection works or not.
|
18 | E016 | E016:Failed to associate credential with abdera client due to: " + e.getMessage()); | | #connect to connection failure for "URISyntaxException" exception
|
19 | E017 | E017:Failed to get the required URL for communicating with Connection due to: " + e.getMessage() | | #connect to connection failure for "NotesException" exception
|
20 | E018 | E018:Failed to post request for creating community | | #can not create one community. pls check the migration user can create the community directly in connection.
|
21 | E019 | E019:The response status text for creating community: " + response.getStatusText()); | E019:The response status text for creating community: Unauthorized | #show the detail status text for error response. |
22 | E020 | E020:Failed to create community: " + communityName + ", due to: " + httpResponseCode.get(response.getStatus())); | E020:Failed to create community: testplace, due to: Unauthorized | #failure create community on connection server for the status. |
23 | E021 | E021:Failed to get the UNID for the new created community " + communityName + " is: " + _currentCommunityUnid); | | Can not get unid of the Community we just created |
24 | E022 | "E022:Failed to retrieve community entry"); | | #Failed to retrieve community entry |
25 | E023 | E023:Failed to retrieve community entry due to: " + httpResponseCode.get(response.getStatus() | | #Failed to retrieve community entry for the detail status code. |
26 | E024 | E024:Failed to retrieve community entry due to: " + e.getMessage() | | #get can get the community for one exception. |
27 | E025 | E025:CurrentCommunityUnid is empty. There is no available community for adding library widget | | #CurrentCommunityUnid is empty. There is no available community for adding library widget |
28 | E026 | E026:Failed to post request for adding library widget | | #Failed to post request for adding library widget |
29 | E027 | E027:Failed to parser the community libary id from response. | | #Failed to parser the community libary id from response. |
30 | E028 | E028:Failed to add library widget for community: " + _currentCommunityUnid + ", due to: " + httpResponseCode.get(response.getStatus())); | E028:Failed to add library widget for community: b76ca69b-5b7d-4895-9268-2ab651f0f543, due to: Forbidden | #Failed to add library widget for community. (Sometimes the FileNet server is down for everyday for one waltz bug, once filenet is down, then admin user can not create ccm any more, then you can see this error) |
31 | E029 | E029:_currentCommunityUnid is empty.The is no available community for adding community members. | | #_current CommunityUnid is empty. There is no available community for adding community members. |
32 | E030 | E030:Failed to post request for adding community member | | #Failed to post request for adding community member |
33 | E031 | E031:Failed to add community member, due to: " + httpResponseCode.get(response.getStatus() | | #Failed to add community member, due to status code. |
34 | E032 | E032:return code is:SC_INTERNAL_SERVER_ERROR ");
E032:Please check if the following members are contained in Connections Profile DB for error_internal_server_error:");
"E032"+jsonString);
| | #when return code is SC_INTERNAL_SERVER_ERROR, then print all members information for debug. |
35 | E033 | E033:Failed to add one member for exception. | | #when add all members together failure, tool will add one member one time, this error means add one member also failure. |
36 | E034 | E034:There are "+ (failureStrArray.length-1) +" members can not be migrated to CCM. They are NOT contained in Connections Profile DB:" | E034:There are 1 members can not be migrated to CCM. They are NOT contained in Connections Profile DB: : "EDFBE4E0-7E32-75B5-8025-7C1A00447E32" | #list all members that failure to add to connection. |
37 | E035 | E035:failure response body: | | #list the response for the failure to add member to connection |
38 | E036 | E036:Failed to associate credential with abdera client due to: " + e.getMessage() | | #E036:Failed to associate credential with abdera client due to URISyntaxException excpetion |
39 | E037 | E037: _currentCommunityUnid is empty. The is no available community for adding community single members" | | #currentCommunityUnid is empty. The is no available community for adding community single members"); |
40 | E038 | E038:UnsupportedEncodingException from ByteArrayInputStream. | | #UnsupportedEncodingException from ByteArrayInputStream. |
41 | E039 | E039:Failed to post request for adding community single member. | | #Failed to post request for adding community single member. |
42 | E040 | E040:IOException from BufferedReader | | #E040:IOException from BufferedReader |
43 | E041 | E041: addSingleMember Failed to associate credential with abdera client due to: " + e.getMessage()); | | addSingleMember Failed to associate credential with abdera client due to exception. |
44 | E042 | E042:Failed to open database: " + roomNSFPath + " for getting QD room roles" | E042:Failed to open database: LotusQuickr/testplace/PageLibrary88257B4700707583.nsf for getting QD room roles | #can not open the room database. |
45 | E043 | E043:Failed to get role for room : " + roomNSFName + " in place: " + placeName + ", due to Exception: " + e.getMessage()); | | #Failed to get role for room of place due to NotesException |
46 | E044 | E044:Failed to traverse Contacts1.nsf for place: " + placeName + ", due to Exception: " + e.getMessage()); | | #E044:Failed to traverse Contacts1.nsf for place due to NotesException |
47 | E045 | E045:The folder ACL Type: " + folderACLType + " is invalid"); | | #E045: folder acl type is invalid. |
48 | E046 | E046:Failed to get Folder Roles due to Exception: " + e.getMessage()); | | #E046:Failed to get Folder Roles due to Notes Exception |
49 | E047 | E047:Failed to get Document Roles due to Exception: " + e.getMessage()); | | #E047:Failed to get Document Roles due to NotesException |
50 | E048 | E048:FileNetUtility: getFolder, [Failed to get folder by: " + libraryId + ", due to" + e.getMessage() + "]") | E048:FileNetUtility: getFolder, [Failed to get folder for: /ClbTeamspaces/2015/04/2015/52/testplace_1427961133485, due to: The requested item was not found. Folder /ClbTeamspaces/2015/04/2015/52/testplace_1427961133485 not found.] | #E048:FileNetUtility: getFolder, [Failed to get folder by: " + libraryId + ", due to EngineRuntimeException |
51 | E049 | E049:FileNetUtility: connectFileNetServer [Failed to create session]"); | | #E049:FileNetUtility: connectFileNetServer [Failed to create session]"); |
52 | E050 | E050:FileNetUtility: connectFileNetServer, [The necessary parameters are not provided]"); | | #E050:FileNetUtility: connectFileNetServer, The necessary parameters "_filnetURL" or "_objectStoreName" in notes.ini are not provided. |
53 | E051 | E051:FileNetUtility: connectFileNetServer, [The specified Object Store: " + _objectStoreName
+ " is not found]");
| | #E051:FileNetUtility: connectFileNetServer, [The specified Object Store: " + _objectStoreName that defined in notes.ini is not found. |
54 | E052 | E052:FileNetUtility: connectFileNetServer, [Failed to connect with filenet server: " + e.getMessage() + "]"); | | #E052:FileNetUtility: connectFileNetServer, [Failed to connect with filenet server: for EngineRuntimeException |
55 | E053 | E053:FileNetUtility: connectFileNetServer, [Failed to retrieve nonce token from filenet server: " + _filnetURL + "]"); | | #E053:FileNetUtility: connectFileNetServer, [Failed to retrieve nonce token from filenet server: " + _filnetURL + "]"); |
56 | E054 | E054:FileNetUtility: connectFileNetServer, [Failed to connect with filenet server: " + e.getMessage() + "]"); | | #E054:FileNetUtility: connectFileNetServer, [Failed to connect with filenet server for EngineRuntimeException |
57 | E055 | E055:FileNetUtility: getClassDefinition, [Failed to get class definition for: " + clsSymbolicName + ", due to" + e.getMessage() + "]"); | | #E055:FileNetUtility: getClassDefinition, [Failed to get class definition for: " + clsSymbolicName + ", due to EngineRuntimeException |
58 | E056 | E056:FileNetUtility: getAvailableDocumentClassName, [The specified Object Store: " + _objectStoreName
+ "is not connected]");
| | |
59 | E057 | E057:FileNetUtility: getAvailableDocumentClassName, [Failed to find the specified super class definition: " + superClsSymbolicName + " ]"); | | #E057:FileNetUtility: getAvailableDocumentClassName, [Failed to find the specified super class definition: " + superClsSymbolicName + " ]"); |
60 | E058 | E058:FileNetUtility: getAvailableFolderName, [The specified Object Store: " + _objectStoreName
+ "is not connected]");
| | E058:FileNetUtility: getAvailableFolderName, [The specified Object Store: " + _objectStoreName
+ "is not connected]");
|
61 | E059 | E059:FileNetUtility: getAvailableFolderName, [Can not find the parent folder: " + parentFolderLocation
+ "]");
| | Can not find this folder's parent folder. |
62 | E060 | E060:FileNetUtility: getAvailableFolderName, [Failed to get available folder name for: " + folderName
+ ", due to: " + e.getExceptionCode() + "]");
| | FileNetUtility: getAvailableFolderName, [Failed to get available folder name for the exception EngineRuntimeException |
63 | E061 | E061:The ACL Role of member : " + member+ " "+ aclRole + " is invalid. | E061:The ACL Role of member : #AUTHENTICATED-USERS null is invalid. | |
64 | E062 | E062:There is no matched uid for DN: " + member | E062:There is no matched uid for DN: cn=Mary Joyce,o=Quickr | |
65 | E063 | E063: This user has not profile in connection, so can not add to acl for document or folder:"+errorUUID | E063: This user has not profile in connection, so can not add to acl for document or folder:D1BA24D2-A038-08C8-8025-7DED005C131A | |
66 | E064 | _logger.error("E064: There are [" + noFoundUserUUIDUUIDMap.size()+"] users who are not profile in the connection.Pls check them in the connection profile.");
E064: user[Uid:"+notFoundEntry.getKey()+" Name:"+notFoundEntry.getValue()+"]"
| [0A40:0002-052C] 01/04/2015 07:45:21 58563 ERROR [main] com.lotus.quickplace.migration.FileNetUtility - E064: There are [2] users not profile in the connection.Pls check them in the connection profile.
[0A40:0002-052C] 01/04/2015 07:45:21 58563 ERROR [main] com.lotus.quickplace.migration.FileNetUtility - E064: user[7CFC1313-6C14-B0F7-8025-7E14202F8A18 CN=Drew Wylie,O=Quickr]
[0A40:0002-052C] 01/04/2015 07:45:21 58563 ERROR [main] com.lotus.quickplace.migration.FileNetUtility - E064: user[7CFC1313-6C14-B0F7-8025-7E14022F8A18 CN=Ryan Wylie,O=Quickr]
| 2 users are in Quickr, and in the mapping files but they do not have a profile in Connections. Please check the Synch_all logs to see if they were populated into Connections. |
67 | E065 | _logger.error("E065:FileNetUtility: createFolder, [The specified Object Store: "
+ _objectStoreName + "is not connected]");
| | |
68 | E066 | _logger.error("E066:FileNetUtility: createFolder, [Can not find the parent folder: "
+ parentFolderLocation + "]");
| E066:FileNetUtility: createFolder, [Can not find the parent folder: /ClbTeamspaces/2015/04/2015/52/refactor_1427961133485] | |
69 | E067 | _logger.error("E077:FileNetUtility: createFolder, [Failed to retrieve folder after setting ACL: "
+ folderLocation + "]");
| | |
70 | E068 | _logger.error("E068:FileNetUtility: createFolder, [Failed to create filenet folder: "
+ folderLocation
+ ", due to: A folder with identical name has already existed, and failed to obtain an available alternative name ]");
| | |
71 | E069 | _logger.error("E069:FileNetUtility: createFolder, [Failed to create filenet folder: "
+ folderLocation
+ ", due to: "
+ e.getExceptionCode() + "]");
| E069:FileNetUtility: createFolder, [Failed to create filenet folder: /ClbTeamspaces/2015/04/Research Operations/ Briefs/Comparatives: ELearning to OnCampus, due to: com.filenet.api.exception.ExceptionCode@71d771d7] | |
| E070 | _logger.error("E070:FileNetUtility: saveFileNetDocument, [The specified Object Store: "
+ _objectStoreName + "is not connected]");
| | |
| E071 | _logger.error("E071:FileNetUtility: saveFileNetDocument, [ Failed to add image attachment: " + attachmentNames[i]
+ " to minor version for document :"
+ docContent
.getDocumentContainmentName()
+ "]");
| | |
| E072 | _logger.error("E072:FileNetUtility: saveFileNetDocument, [Failed to decode no editable rich text for property: "
+ propertyName
+ " of document: "
+ docContent.getDocumentContainmentName()
+ " due to exception: "
+ e.getMessage()
+ "]");
| | |
| E073 | _logger.error("E073:FileNetUtility: saveFileNetDocument, [Failed to decode richText to document: "
+ docContent.getDocumentContainmentName()
+ " due to exception: " + e.getMessage() + "]");
| | |
| E074 | _logger.error("E074:FileNetUtility: saveFileNetDocument, [ Failed to add attachment: "
+ attachmentNames[i]
+ " to document :"
+ docContent.getDocumentContainmentName()
+ "] for " + e.getMessage());
| | |
| E075 | _logger.error("E075:FileNetUtility: saveFileNetDocument, [Failed to retrieve or parse the comment content for document: "
+ docContent.getDocumentContainmentName() + "]");
| | |
| E076 | _logger.error("E076:FileNetUtility: saveFileNetDocument, [Failed to save document: "
+ docContent.getDocumentContainmentName()
+ " to filenet destination folder: "
+ docContent.getContainerFolder() + "]");
| E076:FileNetUtility: saveFileNetDocument, [Failed to save document: Master.pdf to filenet destination folder: /ClbTeamspaces/2015/04/Research] | |
| E077 | _logger.error("E077:FileNetUtility: putCustomizedPropertyToFileNetDocument, [The property: "
+ propertyName
+ " of type String
+ fieldDataType
+ "> will be truncated ,due to exceeding the allowed length: "
+ allowedLength);
| | |
| E078 | _logger.error("E078:FileNetUtility: putCustomizedPropertyToFileNetDocument, [Unsupported property type "
+ propertyDataType
+ " for property: "
+ propertyName
+ " ");
| | |
| E079 | _logger.error("E079:FileNetUtility: putCustomizedPropertyToFileNetDocument, [Failed to put customized property: "
+ propertyName
+ " of type: "
+ propertyDataType
+ " ]");
| | |
| E080 | _logger.error("E080:FileNetUtility: createDocumentClassContainer, [The specified Object Store: "
+ _objectStoreName + "is not connected]");
| | |
| E081 | _logger.error("E081:FileNetUtility: createFileNetDocumentClass, [Failed to find the specified super class definition: "
+ superClsSymbolicName + " ]");
| | |
| E082 | _logger.error("E082:FileNetUtility: createFileNetDocumentClass, [Failed to create property definition for property name: "
+ propertySymbolicName + "]");
| | |
| E083 | _logger.error("E083:FileNetUtility: createFileNetDocumentClass, [Failed to create filenet document class for: "
+ docClsDes.getClassSymbolicName()
+ ", due to: A docuemnt class with identical symbolic name has already existed, and failed to obtain an available alternative name ]");
| | |
| E084 | _logger.error("E084:FileNetUtility: createFileNetDocumentClass, [Failed to create filenet document class for: "
+ docClsDes.getClassSymbolicName()
+ ", due to: The summation of column lengths exceeds the capacity of the underlying database.]");
| | |
| E085 | _logger.error("E085:FileNetUtility: createFileNetDocumentClass, [Failed to create filenet document class for: "
+ docClsDes.getClassSymbolicName() + " ]");
| | |
| E086 | _logger.error("E086:FileNetUtility: createPropertyTemplate, [ Failed to create choice list for propery template: "
+ propertySymbolicName + "]");
| | |
| E087 | _logger.error("E087:FileNetUtility: createPropertyTemplate, [Unsupported property data type: "
+ propertyDataType + "]");
| | |
| E088 | _logger.error("E088:FileNetUtility: createPropertyTemplate, [Failed to create filenet property template for: "
+ propertySymbolicName + " ]");
| | |
| E089 | _logger.error("E089:FileNetUtility: createStringTypeChoiceList, [The specified Object Store: "
+ _objectStoreName + "is not connected]");
| | |
| E090 | _logger.error("E090:FileNetUtility: createStringTypeChoiceList, [Failed to create choice list for: "
+ propertyDisplayName + " ]");
| | |
| E091 | _logger.error("E091:FileNetUtility: createPropertyDefinition, [Failed to fetch property template for UNID: "
+ propertyTemplateUNID + " ]");
| | |
| E092 | _logger.error("E092:FileNetUtility: createPropertyDefinition, [Failed to create property definition: "
+ propertyDisplayName + " ]");
| | |
| E093 | _logger.error("E093:FileNetUtility: createPropertyDefinition, [Failed to create property template for: " | | |
| E094 | _logger.error("E094:FileNetUtility: createPropertyDefinition, [Failed to create property definition: "
+ propertyDisplayName + " ]");
| | |
| E095 | _logger.error( "E095:The type: " + type + " is not supported for setting ACL"); | | |
| E096 | _logger.error("E096:Failed to post request for adding community member"); | | |
| E097 | _logger.error("E097:Failed to post request for adding one member."); | | |
| E098 | _logger.error("E098:Failed to get nonce token from filenet server: " | | |
| E099 | _logger.error("E099:Failed to get nonce token, due to: "
+ httpResponseCode.get(response.getStatus()));
| | |
| E100 | _logger.error("E100:Failed to associate credential with abdera client due to: "
+ e.getMessage());
| | |
| E101 | _logger.error("E101:Failed to get attachments for document: "
+ documentID);
| | |
| E102 | _logger.error("Failed to get attachments for document: "
+ documentID + ", due to: "
+ httpResponseCode.get(response.getStatus()));
| | |
| E103 | _logger.error(("E103:Failed to convert to html document for comment rich text: " + commentRichText)); | | |
| E104 | _logger.error(("E104:Failed to get attachments URL, use original rich text instead !")); | | |
| E105 | _logger.error(("E105:Failed to convert RichText to xml document!")); | | |