Syndication

  1. Overview
  2. Syst and Preprod
  3. Preprod and Prod
  4. Member Fixer
  5. Cfg P2 and Cfg P3


Overview

We use syndication to replicate WCM data from a web content library in a source portal environment to a web content library on a target portal environment. Syndicators define the connection to subscribers, and indicate which libraries to replicate.

Web portal syndication flow...


Set up syndication between Syst and PreProd

  1. On target host, prepare portal to handle large file imports.

  2. Start PreProd and UAT portal servers.

    Open firewall port 10039 for traffic...

      172.30.4.20 (UAT) <-----> 172.30.3.72 (PreProd)

  3. In the WAS console for both, navigate to the Java virtual machine settings.

      Stand-alone server:

      Servers > Server Types > WebSphere application servers > WebSphere_Portal > Java and Process Management > Process definition > Java Virtual Machine

      Clustered server:

      System administration > Deployment manager > Java and Process Management > Process Definition > Java Virtual Machine

    ...and set Maximum Heap Size to 2048 MB.

  4. On UAT subscriber system, create a vault slot...

    1. Go to...

    2. Enter a name for the vault slot...

        preprod-slot

    3. Click New, and enter a vault resource to associate with the slot...

        preprod-resource

    4. Click...

        Vault slot is shared

    5. Enter the user ID and password to access the slot from the syndicator server. This user ID and password must be defined on the syndicator server.

    6. Click OK.

  5. Set up a member fixer on the subscriber.

    This is required between Syst and UAT because they use different DNs. We set up member fixer to fix references. UAT and Prod use the same DN structure, so member fixer is not required.

    Syst UAT Prod
    uid=wpsadmin,o=defaultWIMFileBasedRealm
    cn=wpsadmins,o=defaultWIMFileBasedRealm
    CN=portaladmin,OU=InternalUsers,DC=IA,DC=FOO
    CN=wpsadmins,OU=Roles,DC=IA,DC=FOO
    CN=portaladmin,OU=InternalUsers,DC=IA,DC=FOO
    CN=wpsadmins,OU=Roles,DC=IA,DC=FOO

    The member fixer is run on the subscriber during syndication. It is run against items that have just been syndicated.

    1. Enable the member fixer tool.

      On the subscriber host, add the following parameters to the WCM WCMConfigService service...

    2. On the subscriber host, enable member fixer to run automatically during syndication.

      On the subscriber host, in WCM WCMConfigService service, set...

      • deployment.fixMembers=true
      • syndication.memberfixer.altDn=update
      • syndication.memberfixer.invalidDn=update
      • syndication.memberfixer.realm=

      Member fixer, when run automatically via syndication, preserves the dates of updated items.

    3. Edit...

      ...and set...

        cn=wpsadmins,o=defaultWIMFileBasedRealm -> CN=wpsadmins,OU=Roles,DC=IA,DC=FOO
        uid=wpsadmin,o=defaultWIMFileBasedRealm -> portaladmin,OU=InternalUsers,DC=IA,DC=FOO

  6. Make backup of UAT libraries. For example...

      mkdir c:\scratch\wcm_orig
      cd c:\IBM\WebSphere\wp_profile\ConfigEngine
      ConfigEngine.bat export-wcm-data -DWasPassword=mypassword -DPortalAdminPwd=mypassword -Dexport.allLibraries=true -Dexport.singledirectory=true -Dexport.directory=c:\scratch\wcm_orig

  7. Because first-time syndication to an existing library is not supported, we need to delete existing RPTP libraries from UAT...

      cd c:\IBM\WebSphere\wp_profile\ConfigEngine
      ConfigEngine.bat run-wcm-admin-task-delete-libraries -Dlibraries=MyApp_design,MyApp_content_en,MyApp_content_fr -DPortalAdminId=portaladmin -DPortalAdminPwd=mypassword

  8. Go to...

      Administration | Portal Content | Subscribers

  9. Click Subscribe Now.

  10. Enter the syndicator URL, in this case, PreProd...

      http://172.30.3.31:10039/itsc/wcm

  11. Enter name for the syndicator item: PreProdSynd

  12. Enter name for the subscriber item: ProdSub

  13. Select the credential vault slot created previously.

  14. Click Next

  15. Select "Add Libraries", then select...

    • MyApp_design
    • MyApp_content_en
    • MyApp_content_fr

  16. For syndication type, select either...

      Live items Published and Expired
      Live and projects Published, Expired, Projects, and Draft items in a project.

  17. Click Finish, then test connection.

  18. Click Rebuild to kick off first syndication.

  19. You can monitor status by clicking Refresh...

  20. Set access to libraries.

    Go to...

      Portal Administration | Web Content Libraries

    ...and for each library, for User, set roles...

    • All Authenticated Portal Users
    • Anonymous Portal User

  21. Verify content renders, both as anonymous user and authenticated user.

  22. Enable only manual syndication by disabling automatic syndication on both the syndicator and the subsriber.

  23. Optional: If in authoring portlet, WCM items are showing invalid LDAP DNs for owners, run member fixer in report mode, then fix any issues...

      cd C:/IBM/WebSphere/wp_profile/ConfigEngine
      ConfigEngine run-wcm-admin-task-member-fixer -DPortalAdminId=portaladmin -DPortalAdminPwd=mypassword -DWasUserId=portaladmin -DWasPassword=mypassword -Dlibrary="MyApp_Content_en"

    Report is written to...

  24. If necessary, troubleshoot.


Set up syndication between PreProd and Prod

Repeat above steps to set up syndication between preprod and prod.

Steps unique to Prod include...


Hard-coded link

There are hard-coded links in...

Old code commented out Hard coded link for CSR login inserted.

This may be overwritten during syndication from PreProd.


Member Fixer


Cfg P2 and Cfg P3

    [8/2/16 13:30:51:659 PDT] 00001969 DataStoreCont E com.ibm.wps.datastore.impl.DataStoreContext handleException EJPDB0099E: Error occurred during database access. Last SQL statement is [INSERT INTO JCR.PROT_RES_DEP (OID, CREATED, MODIFIED, RES_TYPE, EXTERNAL_OID, EXTERNAL_UID, DEP_PARENT_OID, DEL_PARENT_OID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)]. Transaction has status [STATUS_ACTIVE], global ID [000001564cf3a6eb000000011ef16ab49a8bc78e134f8e1c44f08e53bb9f95d78d69eb06000001564cf3a6eb000000011ef16ab49a8bc78e134f8e1c44f08e53bb9f95d78d69eb0600000001] and local ID [519137972].^M com.ibm.wps.datastore.impl.DataBackendException: EJPDB0098E: Error occurred during database access. Transaction has status [STATUS_ACTIVE], global ID [000001564cf3a6eb000000011ef16ab49a8bc78e134f8e1c44f08e53bb9f95d78d69eb06000001564cf3a6eb000000011ef16ab49a8bc78e134f8e1c44f08e53bb9f95d78d69eb0600000001] and local ID [519137972].^M

    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK2111A". The conflict occurred in database "MyAppJ_P3", table "JCR.PROT_RES", column 'OID'.^M

To fix...

  1. On Cfg P2, export WCM

      cd c:\IBM\WebSphere\wp_profile\ConfigEngine
      ConfigEngine.bat export-wcm-data -DWasPassword=foo123 -DPortalAdminPwd=foo123 -Dexport.allLibraries=true -Dexport.singledirectory=true -Dexport.directory=c:\scratch\wcmCfgP2

  2. On Cfg P3, delete existing libs

      cd c:\IBM\WebSphere\wp_profile\ConfigEngine
      ConfigEngine.bat run-wcm-admin-task-delete-libraries -Dlibraries=MyApp_design,MyApp_content_en,MyApp_content_fr -DPortalAdminId=wpsadmin -DPortalAdminPwd=foo123

  3. Import wcmCfgP2 into Cfg P3

      ConfigEngine.bat import-wcm-data -DWasPassword=foo123 -DPortalAdminPwd=foo123 -Dimport.directory=c:\scratch\wcmCfgP2