Migrating HTML Content to Neos

Hi Neos enthusiasts!

We are currently starting a new Neos website for a big university faculty currently using FosWiki with thousands of pages. There will be lots of restructuring and text rewriting, thus complete automatic migration i.e. on a dabase level is not an option. Copy&Paste seems a very boring and unmotivating task. The current idea:
We do not want to automatically migrate content but aid the editors in picking certain HTML-Blocks from the old page and have a wizard to push that HTML to an already existing pageNode in Neos.
We vision a JavaScript-File which can be added to the old website which will be activated somehow for certain users and show the migrationWizard. Within the wizard you can select an existing Neos PageNode and a ContentCollection (or predefine one), where the currently selected HTML (DOM based selector) should be pushed.
On the Neos side there might be a REST API for the wizard to connect to:

  • GET list of available pageNodes
  • GET possible contentCollections for given pageNode
  • POST HTML-Snippet (images and assets not supported in first step) to be created as text content element. There might be a processor to modify the given HTML based on project level rules.

We want to support the migration of links by creating a “mapping dictionary”, which is automatically filled every time the user sends content from a page (identified by URL) from the old site to a PageNode in Neos. Always the first PageNode you send content to will be the counterpart for the current URL on the old site. With this dictionary we could automatically transform links for all existing dictionary entries (and mark unresolved links in the hope to get a match later in the process). If there is never a match, the user needs to do that manually.
This dictionary could also help the editors to see where they are in the process and maybe mark URLs from the old site as done.
We also think about gamification elements to keep up the motivation of the editors.

Does that sound like a feature many people could use for migrating (textual) content to Neos from whatever old system? We have the experience that restructuring and cleaning the content during a relaunch process is often needed and counsel/support customers to spend quite some effort on that structuring before discussing about layouts and CMS implementations.

We will have a budget for this content transition, but instead of building something just for this project we would like to see a general feature and ideally share the development and costs with other interested parties. Also sponsoring part of an project with similar goals is an option.

I am looking forward to hear/read your thoughts!

Franz

1 Like

Hey Franz,

interesting idea. I think it would be a cool tool to have :smile:
I guess it should be possible via the API that we have currently. You should be able to fetch all information that is in the regular page tree as well as specific node info and update/create nodes with it.

Hi Christian and Neos people!
We have a basic GO from the Mathematics Faculty of the TUM (technical university of munich) to build a prototype like described above. We will start a public github project for that in some weeks. Feedback and participation still highly welcome :slight_smile:

2 Likes

Hi, sounds cool.

Maybe, the general usefulness can be improved, and the implementation eased, if you create that wizard as a Neos package that provides a custom imported content node type, or just a generic Editor enhancement plugin for any node type:

If the importer is activated, the Neos Editor could allow browsing an arbitrary external website next (right) to the Neos Inspector in the editor.

Then, the user could create the new node structure (new page and content element) right away, or first import all the relevant content in his responsibility into new nodes in a row and restructure later, but instead of typing in content, the user may select the entire dom elements (like in the Firefox “Ctrl-Shift-C” inspector) or plain text selections to import content from the external site (building the link dictionary and consolidating any matches in the background).

You don’t need to deal with the old infrastructure.
The users get to know the Neos UI right away.

Thanks Chris! We will ponder over your suggestions :smile:

To add to @cgat’s suggestion, it could be possible to integrate that wizard into the new wizard functionallity I’m currently working on: RFC: Allow to define a dialog which will be shown on node creation

It would just require defining one more editor to fetch the old data and that’s it. All the node processing and creation could be handled by this: https://github.com/neos/neos-development-collection/pull/205

Seems like the wizard won’t be coming soon since it was replaced by Node Templates.
They probably won’t be of much help in this case (but in many others ;)).

But thanks for the idea (same goes for @cgat). We definitively will have a look at your already written but unfortunately abandoned code.

How the wizard will be implemented is still up for discussion. The UX must always be kept in mind :smile:.

Thanks for the update!

I don’t know if it possible, but from my user point of view it would be nice if URL paths from the old URLs that are imported to a different path could be be automatically registerd in Neos so that they are properly redirected to the new URL path in the new site.

1 Like

When those two PR are merged, we have the API to register all URL’s from old website and redirect to the Neos new URL. Should be performant, done pretty early in the request (you can even dump the redirection to a proper apache/nginx configuration, by writting your own redirection storage).

Thats great, Dominique! You are one of the Neos heroes to me!

Based on your redirects we finally implemented a simple solution to allow the editor to add redirect URIs from the old page into a property field of certain document nodes and thus have the redirects created based on these URIs.
There is certainly room for improvement, but at least it works as expected :slight_smile:

https://github.com/ElementareTeilchen/neos-externalRedirect

2 Likes

Just back from holiday, really nice to read this kind of message.

Publish your package on packagist, can be usefull to other, and nice to have listed on neos.io

https://packagist.org/packages/elementareteilchen/neos-externalredirect