Changing workflow security on existing content

Thanks to Dan Anderson from IBM WCM L2 Support for this tip

Many times I have heard that someone wants to know if it's possible to update a Workflow Stage to change the Workflow Defined Security on existing content without having to restart the item in a workflow. Normally, changes to the Workflow Defined security settings are not picked up until the document (such as a content item) are restarted in the workflow and re-enter the workflow stage. I have found out there is an alternative solution for this use case. It is possible to apply changes in the workflow defined security section for existing content items without having to restart the content in a workflow.


Here's an example use case.

  1. You decided to update the Published workflow stage to add a new group to have "User" access applied to existing published content. 
  2. You would like this change to be applied to all content items that are already in the published stage without having to restart the content in the workflow and re-publish the content item.
  3. This is a perfect case for using the "workflowcontrolchecker" to apply the workflow change.

Recommendation:

Normally, the way workflow is designed, we would restart the content in the workflow and re-publish the content for workflow changes to be applied. However, you are able to use the "WorkflowControlCheckerModule" module to apply the change to existing items without having to restart the items in the workflow. Before you try this option, you should always make a backup as a best practice. This is a good habit to have before making any changes to files or data, etc. I can't emphasize the importance of backups enough as that is just a good habit for administrators to develop in order to avoid unforeseen problems.

That said, let me re-state this just to over emphasize this point.


*** IMPORTANT NOTE ***
Please backup the WCM library and/or WCM Database before running this module.. 
Please ensure you have a backup/recovery plan in place before running this module.
Please try this on a test server and test library before attempting to use this on a production system or production data.

Now we have repeated ourselves on backups. I have verified the following instructions worked without issue on my test server.

These Instructions to WCM version 7. 
 
Instructions for the "workflowcontrolchecker" module: 
 
1. Modify WCMConfigService please add the following;

"workflowcontrolchecker" to the end of the property "connect.businesslogic.module" 
 
For example in WebSphere Admin Console for WebSphere Portal, you need to update the WCM ConfigService property. 
 
Resource environment providers > WCM WCMConfigService > Custom properties > connect.businesslogic.module 
 
Modify.. 
 
Property Name: 
connect.businesslogic.module 
 
Property value with "workflowcontrolchecker" appended to existing value string. 
 
WCM modules that are run as part of WCM on the Portal server. An example of the Default value where you apply "workflowcontrolchecker" to the end of the string : template,multi_template,web,mail,form,aggregator,default,ajpe,federatedproxy,ajpecatselect,memberfixer,versioningenablement,workflowenablement,itemdispatcher,plutouploadfile,plutodownloadfile,synd,subs,syndication,refreshallitems,librarymaintenance,unlocklibrary,custom,reseteventlog,workflowcontrolchecker 
 
NOTE: a comma ',' is the delimiter in the value string 
 
2. Modify WCMConfigService please add the following new custom properties and values: 
 
For example in WebSphere Admin Console for WebSphere Portal, you need to update the WCM ConfigService property. 
 
Resource environment providers > WCM WCMConfigService > Custom properties > 
 
Create ... 
 
Property Name: 
connect.businesslogic.module.workflowcontrolchecker.remoteaccess 
 
Property Value: 
true 
 
Create... 
 
Property Name: 
connect.businesslogic.module.workflowcontrolchecker.autoload 
 
Property Value: 
false 
 
Create... 
 
Property Name: 
connect.businesslogic.module.workflowcontrolchecker.class 
 
Property Value: 
com.aptrix.pluto.workflow.WorkflowControlCheckerModule 
 
3. Apply and save the changes 
 
4. Restart WebSphere_Portal 
 
Once the module is setup in the config, the following options are available when running: 
 
&library -> the library to run the module against. If nothing is supplied on the URL, will default to the default WCM library. 
 
&restrictOn -> the item type to run against. Valid values are: 
Content,Cmpnt,Template,Site,SiteArea,Style,Taxonomy,Category,Workflow,WorkflowStage,WorkflowAction 
 
&numberOfJcrOperationsPerLogin -> the number of operations for 1 JCR login. Used to help with memory consumption 
 
&updateDocSecurity=true/false -> whether or not to resave the workflowed object so that the workflow stage security gets reapplied 
 
&preserve_dates=true/false -> whether or not to maintain the current last modified date on the object 
 
Here's a typical example for how to run the module and have the workflow defined security applied to content that is existing in the workflow. 
http://host:port/wps/wcm/myconnect?MOD=WorkflowControlChecker&library=<libraryname>&fix=true&updateDocSecurity=true&preserve_dates=true

I hope this helps to resolve potential administration issues in the future.

As always, we appreciate everyone's interest in WCM. Please let us know if you have any questions and feel free to comment on our WCM blog or WCM twitter sites.