OpenClinica has the "Reassign CRF to a New Version" button. Unfortunately you have to do this per patient, which is not very practical if your study contains more than a handful of patients.
After reading Lindsay’s “delete many rules at once” post in which he uses Selenium, I figured reassigning CRFs automatically should be possible as well. Turns out it is, but it’s quite complicated. The script was developed for OC 3.3 and it is quite likely it will not work for older versions. I’ve successfully tested the script on several of my studies. As the script apparently is too long to paste in this post, I've attached it as txt file (I wasn't allowed to upload an html file).
If you feel like giving it a go, definitely try it in a test environment first! Here’s what you’ll need to provide:
eventCol: the column number of the event that contains CRF
crfName: the name of the CRF
toVersion: the new version of the CRF
instanceURL: the url of your OpenClinica server. Looks something like this: https://yourserver/OpenClinica/
Currently it changes the version of CRFs that have a status of Initial Data Entry or Data Entry Complete, since that is what I needed. You can easily change that to only update when the status is Initial Data Entry by changing this bit:
<td>(storedVars['dataEntryStatus'] =="Initial Data Entry") || (storedVars['dataEntryStatus']=="Data Entry Complete")</td>
<td>(storedVars['dataEntryStatus'] =="Initial Data Entry") </td>
If you run into errors, I might be able to help you out, but no guarantees as debugging is pretty time-consuming.