ShowTable of Contents
Introduction
One of the most common issues that Lotus Quickr customers face is how to move places between different Quickr environments. Most customers have a development, staging, and production environment. This article explains how to move single places or an entire collection of places from one server to another.
Here we use the backup/restore function within Lotus Quickr services for WebSphere® Portal to move individual places. Backup, archive, and restore of a Quickr place allows WebSphere Portal administrators and application managers to make a backup copy of a place, archive the place and, when needed, restore the archived place.
A place status that is monitored and detected by policies helps you determine the maintenance action that you need to perform. Also, we use the DB2 backup and restore commands to move data between environments.
Prerequisites
Our assumptions and minimum requirements are as follows:
- The environments must use the same LDAP and have the same code level (this includes any iFixes).
- Ensure that all portlets that are deployed to a place you want to move are installed on the target server.
- It is recommended to be at the latest BAR fix level, which can be found on FixCentral.
Enable backup in Quickr environments
Single Quickr environment
You can enable backup of a place on a single environment by following these steps:
- Log in to Lotus Quickr and go to the place for which you want to create a backup.
- Select Customize > Properties > Edit Properties > Edit. For the “Application Backup for Archiving and Restore” property, select Enable backup, and click OK (see figure 1).
- Repeat this sequence for all the places that require backup.
Figure 1. Edit Application Properties window
Clustered Quickr environment
To enable backup, archive, and restore functionalities in a cluster, follow these steps:
1. Log in to the WebSphere Application Server administrative console.
2. Select Resource > Resource environment providers > New.
3. Enter WP ApplicationInfrastructureXMLService in the Name field (see figure 2) and save the changes.
Figure 2. Resource properties window
4. Select WP ApplicationInfrastructureXMLService > Custom Properties > New.
5. Enter backup.root in the Name field, and enter E:\Backup in the Value field, where E:\Backup is a shared drive and is the share for all nodes.
6. Save changes and restart.
Figure 3. Custom properties window
Save the backups
Now that we have Backup/Restore available for a place, we need to determine where to store the backup. Out of the box, Lotus Quickr writes the backup of places to C:\IBM\Quickr\PortalServer\backup. However, we can change this to write either to a shared drive or directly to the target server to which we will be moving the data.
A. If you choose to just let the backups be created in the default location, then the Backup directory must be moved to the target server. To move the backup from one server to another server:
1. After the backup is created on server1, notice that
\backup is created (see figure 4).
2. Copy this backup from server1 to \backup on server2.
Figure 4. Creating backup to default location

B. Change the location of the backup directory to a shared drive or to the target server. This will prevent having to move files manually. To do this, you must first map a drive to the target machine or shared drive. If you choose to point the backup location to the target server, then the backups will automatically appear as an archived place on the target server.
Follow these steps to change the location of backups:
1. On WebSphere Application Server Administration Console, select Resources > Resource Environment Providers.
2. Search at the node level, unless you are in a clustered environment. You will see the results list.
3. Determine whether the resource ,WP ApplicationInfrastructureXMLService, exists. If it does exist, proceed to Step 4. If it does not, create it as follows:
a. Click the New button
b. Enter “WP ApplicationInfrastructureXMLService” into the Name field (see figure 5).
c. Select Custom properties and then click the Apply button.
Figure 5. Resource environment providers window

4. On the Custom properties window, enter the following (see figure 6):
a. In the Name field, enter 'backup.root'.
b. In the Value field, enter the drive and folder name that maps to the target server where you have created the backup folder, for example, Z:\Backup.
Figure 6. Custom properties window

5. Select Apply, then Save. Then, with Synchronize changes with Nodes set to On, select Save again.
Back up and restore a place to another Quickr environment
If any custom applications are deployed on the source server, they must be applied to the target server. For example, if you have a customized portlet deployed on the place the backup was created, you must ensure that same portlet is installed on the target server. You will receive errors during the restore process, if the portlet is missing.
A. To back up an individual place:
1. Go to Manage Places and choose Composite Applications.
2. Select Archived Applications from the drop-down list.
3. Press Go to display the list available for backup.
4. Notice the backup icon beside each place that has backup enabled (see figure 7).
Figure 7. Backup icon in list

5. Select the place you would like to back up and click the Backup icon. The next screen lets you create the backup and shows you any prior backups that exist (see figure 8). Backups are listed by the date on which they were taken.
Figure 8. Create Backup Application window

6. Click the Create Backup button; the place will be locked while the backup is running. The length of the process time depends on how large the place is; normally, it doesn’t taken longer than a few minutes. Once it completes, you will see a restore Icon on the Manage Places screen.
B. Assuming that you have copied the backup to the target server, or configured the backup location to point to the backup directory on the target server, we can now restore. To restore the place on the target server:
1. Go to Manage Places and, under the Show drop-down list, select Archived Applications (see figure 9).
2. Click the Restore button for the place you wish to restore.
Figure 9. Manage Places window

3. The next screen shows you the time and date of the backup. Click the Restore Application button to restore the place (see figure 10).
Figure 10. Restore Application window

4. Once the restore is complete, you can access the place and ensure that everything is there.
Troubleshooting
Let's discuss some of the common pitfalls that occur during the backup/restore procedures.
1. When a backed-up place is restored, any problems that occur are logged to SystemOut.log.
The most common errors are due to not having portlets or applications deployed to the target server. When the Quickr server tries to restore the place, it looks for the applications and portlets deployed to the place. If they do not exist on the target server, errors are thrown, and the restore fails.
Here is an example of that type of exception:
[9/9/09 10:37:25:203 EDT] 00000604 ConcreteCdoSe E com.ibm.wkplc.cdo.service.ejb.ConcreteCdoServiceInternalBean error_internal_error_1 Other
com.ibm.workplace.cdo.exception.CdoException
at com.ibm.wkplc.cdo.resource.jdbc.CdoDao.findByAlias(CdoDao.java:393)
at com.ibm.wkplc.cdo.service.impl.CdoImpl.open(CdoImpl.java:406)
at com.ibm.wkplc.cdo.service.impl.CdoImpl.open(CdoImpl.java:378)
com.ibm.wkplc.cdo.service.ejb.ConcreteCdoServiceInternalBean.getAttributes(ConcreteCdoServiceInternalBean.java:624)
com.ibm.wkplc.cdo.service.ejb.CdoServiceInternalBean.getAttributes(CdoServiceInternalBean.java:112)
com.ibm.workplace.cdo.service.ejb.EJSLocalStatelessCdoServiceInternal_fe3ddb69.getAttributes(Unknown Source)
com.ibm.wps.ai.xml.impl.service.backup.helper.AttributeFlagHelper.setFlag(AttributeFlagHelper.java:116)
com.ibm.wps.ai.xml.impl.service.backup.helper.AttributeFlagHelper.lockApp(AttributeFlagHelper.java:60)
com.ibm.wps.ai.xml.impl.service.backup.ApplicationBackupServiceImpl.completedRestore(ApplicationBackupServiceImpl.java:750)
com.ibm.wps.ai.xml.impl.service.backup.ApplicationBackupServiceImpl.completed(App
……(Cont)……
com.ibm.workplace.util.lightpersist.NoSuchKeyException: CLYAF0024E: Could not find key 11_4AGOQA9008GPF0I0FNK7L40000 for CDO_CDO
at com.ibm.wkplc.cdo.resource.jdbc.CdoDao.findByAliasInternal(CdoDao.java:708)
at com.ibm.wkplc.cdo.resource.jdbc.CdoDao.findByAlias(CdoDao.java:387)
at com.ibm.wkplc.cdo.service.impl.CdoImpl.open(CdoImpl.java:406)
at com.ibm.wkplc.cdo.service.impl.CdoImpl.open(CdoImpl.java:378)
com.ibm.wkplc.cdo.service.ejb.ConcreteCdoServiceInternalBean.getAttributes(ConcreteCdoServiceInternalBean.java:624)
com.ibm.wkplc.cdo.service.ejb.CdoServiceInternalBean.getAttributes(CdoServiceInternalBean.java:112)
com.ibm.workplace.cdo.service.ejb.EJSLocalStatelessCdoServiceInternal_fe3ddb69.getAttributes(Unknown Source)
com.ibm.wps.ai.xml.impl.service.backup.helper.AttributeFlagHelper.setFlag(AttributeFlagHelper.java:116)
……..(cont)….
2. If the Quickr environments do not have the same LDAPs, you will also encounter errors during the restore because it is not able to locate specific users.
Here is an example of that type of exception:
[10/26/09 18:32:56:516 EDT] 00001368 SystemOut O WARNING: Unable to set the attribute clb:owner for contentRoot/icm:libraries[7]/clb:libraries[55]/clb:libraries[2]/17694.jpg to user cn=wpsadmin,o=ibm. User not found.
[10/26/09 18:32:56:516 EDT] 00001368 SystemOut O EJPSB0005E: Exception occurred during creation of the principal with Name cn=wpsadmin,o=ibm and Principal Type USER.
[10/26/09 18:32:56:531 EDT] 00001368 ACPrincipalPu E com.ibm.wps.ac.impl.ACPrincipalPumaImpl ACPrincipalPumaImpl EJPSB0005E: Exception occurred during creation of the principal with Name cn=wpsadmin,o=ibm and Principal Type USER.
com.ibm.wps.util.DataBackendException: EJPSG0002E: Requested Member does not exist.cn=wpsadmin,o=ibm
com.ibm.wps.services.puma.PumaServiceImpl.getObjectIDForPrincipalDN(PumaServiceImpl.java:1315)
at com.ibm.wps.services.puma.Puma.getObjectIDForPrincipalDN(Puma.java:806)
at com.ibm.wps.ac.impl.ACPrincipalPumaImpl.(ACPrincipalPumaImpl.java:86)
... 43 more
Caused by: com.ibm.websphere.wmm.exception.MemberNotFoundException: Member "[cn=wpsadmin,o=ibm / null, null]" is not found.
at com.ibm.ws.wmm.ldap.LdapBeanImpl.findByMemberId(LdapBeanImpl.java:900)
at com.ibm.ws.wmm.ldap.LdapAdapterImpl.getMember(LdapAdapterImpl.java:1266)
at com.ibm.ws.wmm.ldap.LdapAdapterImpl.getMember(LdapAdapterImpl.java:1300)
Conclusion
This document is designed to help administrators who need to move Lotus Quickr place data between Quickr environments. We have outlined the supported steps to accomplish this task and include troubleshooting tips for some common pitfalls.
Resources
developerWorks Lotus article, “Deploying IBM Lotus Quickr services for WebSphere Portal in 10 steps:”
http://www.ibm.com/developerworks/lotus/library/quickr-deploy/
developerWorks Quickr product page:
http://www.ibm.com/developerworks/lotus/products/quickr/?S_TACT=105AGX13&S_CMP=LP
Lotus Quickr product documentation:
http://www.ibm.com/developerworks/lotus/documentation/quickr/
Lotus Quickr forum:
http://www-10.lotus.com/ldd/quickplace.nsf
About the author
Jeff Johnson is a member of the Lotus Quickr J2EE Support team located at IBM's Research Triangle Park, NC, facility, specializing in the combination of Quickr, IBM Lotus Web Content Management, and WebSphere Portal. Prior to this, Jeff was a member of the WebSphere Portal and Web Content Management Support teams, working exclusively on critical issues that included travel to customer locations for hands-on assistance.