Plone Migration from 4.3 to 5.0 (KeyError)

I have a plone 4.3 site (4305), which I wanted to migrate to 5.0.

As with previous mirgrations, I first installed a new 5.0 site via UnifiedInstaller and and put Data.fs and blobstorage into the new place. I also added the missing eggs

  • Products.PloneFormGen
  • collective.recaptcha
  • Products.PloneHotfix20130618
  • Products.PloneHotfix20131210

and ran buildout.

However, wen I start 'bin/client1 fg' I see

KeyError: 'Interface Products.CMFPlone.interfaces.controlpanel.ILanguageSchema defines a field available_languages, for which there is no record.'

(full log is here: )

How can I get my site migrated?

If you're using LinguaPlone in Plone 4 you need to do the upgrade in a particular way:

Also, see

@hemmecke use 5.0.2 as a target fro the migration. It contains many bugfixes, some of which are related to migrations. Also you should probably first upgrade to 4.3.7

Thank's Kim!

I actually don't have LinugaPlone installed, but the idea of removing portal_languages from my site and importing a fresh one from a new site obviously solved my first problem that Plone did not even start.

Now I could at least start the migration. But it failed.

@pbauer Since I am not so experienced with Plone, I don't know how to use 5.0.2. I only see the unified installer for 5.0 at and says that it's unreleased, so I should not yet use it for production.

Why do you suggest to upgrade first to 4.3.7? I thought the migration routine in 5.0 would take care of all the intermediate steps. Am I in false belief with respect to how the Plone handles site upgrades?

In fact, since my site does not have installed a lot of add-ons, I think that many of the problems during migration come from the fact that some years ago I thought that installing and uninstalling a product would not leave anything in contrast to the state (site) I started with. That was probably wrong, but now I have my site and quite some data in it. Would it be possible to install a fresh plone of the same version as I have now (4.3) and then export the "content" from my current site and import it back to the fresh site? Any pointer to where I can read about such a procedure?

Glad you got a bit farther along :smile:

I'm sure you're right that installing and uninstalling add-ons in the past could be biting you now. It's happened to a lot of us...

What I'd be doing if I got your error is that I would be going into the file system and changing that code so it didn't try to read a bare attribute. Change

lang_settings.use_content_negotiation = portal_languages.use_content_negotiation


lang_settings.use_content_negotiation = getattr(portal_languages, 'use_content_negotiation', None)

then retry everything.

Try reading this

Sometimes you're stuck: it may end up being about as much work to try to migrate that way than to upgrade in place as you're doing now, and you don't really know until you're done which way would have been the easiest...

Remove the Hotfixes. For Plone 5.0.2 you need no Hotfix.
The unified installer for 5.0.2 is here:
You should use that. I don't think it is experimental or unreleased.
use_content_negotiation should by all means be there in your site unless it got removed somehow. If that is really the case then the change in the code that @tkimnguyen mentioned will help. If it is really gone your might not be the only case and we'll change the code in the upgrade-step accordingly.

@pbauer I've installed a fresh 5.0.2, copied over Data.fs and blobstorage removed my Hotfixes entries from the buildout I now have:

eggs =

Running bin/buildout worked fine. But the migration step still fails.


But ooops. The thing with the alphas was there on my last migration:


How can I identify the content item in my site that makes this trouble. It is very likely that this is an item that is actually unimportant for my running site, but how can I find and remove it from the database?

What also bothers me is that it still shows kupu in the migration log, but I don't have kupu anymore and I have no idea to get rid of any kupu-leftovers.

Google to the rescue: The same issue was discussed here allredy and the fix was provided by @fulv in Creating new dexterity types — Can't pickle <class collective.js.jqueryui

Add collective.js.jqueryui to your buildout and only remove it after you uninstalled it.