Moving Content between servers?

How does one move content between servers?

I thought MSM was the tool for this but after reading MSM documentation it is clear MSM isn’t the right tool for data migration between servers.

So, if MSM doesn’t handle moving data between production and dev, how does one migrate data between servers?

This is what Percussion Support sent us

Hello Woodypike,

Thanks for the info.


So, do you use MSM for anything?

Also, has anyone figured out how to move chunks of content between servers?

I had trouble explaining this to my supervisor too, because it’s different than standard practice. Web developers are used to setting up an entire site, content and all, on their dev servers. But apparently a Rhythmyx development server is only for setting up templates and environment. So, if you followed what you thought was standard practice, now what’s the best way to move hundreds of pages of a Rhythmyx site from dev to production? I don’t know either. The license actually warns against putting live content on the dev server, so I didn’t expect to be able to move it. Jay Seletz says to ask Tech Support how to do it.

I just started using MSM yesterday, and I’ve succeeded in moving almost everything but the Site and the Content Types. Only one content type seems to have made it through without erroring out.

What errors are you getting? The server log usually has a detailed error message and stack trace.

Should I be looking at /Rhythmyx/AppServer/server/rx/log/server.log? Nothing is there today but “Polling aging action”. Now I’m only missing four content types - the others went through.

Java log says:
3. IOException occured, rePOSTing: Premature EOF encountered

I typed these errors from my screen:
The process is aborted: error: An unexpected error has occurred: Error occured while installing content type: psx_ceGeneric
java.lang.RuntimeException: ORA-00942: table or view does not exist.

The process is aborted: error: An unexpected error has occurred: Error occured while installing content type: psx_ceNavTree Error was: The content editor workflow ID “2” is invalid.

“3. IOException occured, rePOSTing: Premature EOF encountered” is innocuous.

“ORA-00942: table or view does not exist.” - be sure to include any table schema shared dependencies with the content type. If you are updating an existing content type, then what you do here depends on whether you are adding or removing fields.

“The content editor workflow ID “2” is invalid.” Does the psx_ceNavTree content type use this workflow? If no, check the objectstore/psx_cerffNavTree.xml file to see if it references this ID in the either the PSXContentEditor or the PSXWorkflowInfo elements.

Well, I was certainly trying to include any table schema shared dependencies with the content type. But I see that CT_EVENT is required for Generic and CT_CALENDAR is required for Home, even though I don’t use those. By adding them, I was able to move Generic but not Home.

No, I’m not updating an existing content type. (We don’t use any filename that starts with “rff” - I made copies of the FF elements and renamed them.)

In /Rhythmyx/ObjectStore/psx_ceNavTree.xml, I don’t see any workflow 2. The one I’m actually using is workflow 9 - I don’t intend to move the other two. I have:

<PSXContentEditor contentType="370" 
enableRelatedContent="yes" objectType="1" workflowId="4">


<PSXWorkflowInfo type="inclusionary" values="4,5,9"/>

One last thing I can think to have you check on the workflow ID problem is that the ID Mappings for all of the Workflow IDs are correct. You can do this while installing if you select “Custom” mode - this will allow you to review existing ID mappings. Alternatively, you can look at the archive log for the failed installation - that includes a snapshot of the ID mappings used during that installation attempt.

I recommend you contact Technical Support for help with your Home content type, and if you still can’t find the problem with the workflow id, that will probably require their assistance as well.

The source workflow ID is 9 and the target is 1, but the name is the same, so it seems to be mapped correctly. I’ve contacted Technical Support for help.

According to the XML you posted, the default workflow ID for that content type is “4”. It also allows the use of “5” and “9”. So you might want to check that the workflow IDs 4 and 5 are mapped correctly, and that the workflows all of these IDs map to exist on the target server.

Great. Changing the default Workflow fixed the problem for NavTree, and then I was able to move Home as well. Thanks!

Now that I’ve finished hijacking this thread, let’s answer the original question that Jonathan Agnew asked. He’s not the only one who wants to know.


although the official line is not to use MSM for packaging content, I recently created a whole new site and did not relish the thought of recreating hundreds of pages in 3 environments.

i therefore used MSM successfully to do this. however, i had to be very careful about the order i packaged/unpackaged things due to the dependencies - basically i started at the lowest level folders and worked my way up.


The original question is a good one, and I don’t think it has been addressed here. From what I have gathered, Percussion does not offer anything to this end. Their recommendation is that you should just copy the entire tree and database export in its entirety from one environment to another, and then go in and modify all the server and port connections for the database, search, and any other environment-specific configurations. Not only is this time-consuming, but highly risky, and requires full server access to touch all the files. It also assumes that you have the luxury of freezing development from the time you complete one development iteration through QA, and release before copying production environment back down to your dev/qa environment. We don’t.

I see the lack of support for being able to sync up content data between environments as a glaring hole in the product.

Out of necessity, we created our own database refresh script to copy content down from production to our dev/qa environments. It works pretty well when all tiers are using the same ID mappings for content types, slots, and templates (such as following a full db export and tree clone operation), but falls apart as the object type IDs diverge from MSM’ing new types from dev to qa to prod. Rx will not maintain type IDs through MSM, and does not claim to do so. So any content types that get created will likely have a different ID in dev than prod, causing application problems if you just copy that data down from prod as-is.

We are currently experimenting with an additional db update script to sync up these IDs which pretty tricky and requires figuring out how the various type IDs are used across the rhythmyx schema. The data dictionary is our friend here, but it gets complicated by references to fields like content_type_id in views, which are read-only by nature.

This is something that would be best handled by Percussion through a tool or script provided by them, as they are only ones fully qualified to get this entirely right, and keep it working as the product evolves.

Percussion folks,
Please chime in if there is something existing or in the works for this, or if you have ideas on how such a refresh could best be implemented (by yourselves or your customers). Any hints or comments on the approach we are attempting would be appreciated as well!

Please see my documentation on this topic:

I’m also looking to do this. I’m still having trouble finding an effective way of moving specified content. Is there any method for handling this?