Glasses and Book by ladyheart at

Plone 4: Portal_Setup is Important

I am frequently a textbook case of how a bit of information can be dangerous! I have had a number of really peculiar bits and pieces to clean up after my upgrade to Plone 4. Nothing that was big enough to stop my forward progress but just things that nagged at the mind. What I have discovered today is that the portal_setup tool, and specifically the IMPORT tab, can have a big impact.

For those who know anything about Plone, stop rolling your eyes!  I have honestly never had any reason to go into the plone_setup area so it’s a bit of a gray box.  Yet I’ve been able to run this site for, what, 8 years on Plone.

But I noticed an error that led me to a discussion post that suggested it could be fixed by doing the following:

  1. go into the Zope Management Interface (ZMI)
  2. go into your Plone site
  3. go down to portal_setup
  4. click on the import tab
  5. Find the product CMFEditions in the drop down
  6. Scroll to the bottom of the page and select import all steps

I did all of that, and the problem went away.  I’ve reused these same steps on TinyMCE and CMFPlacefulWorkflow.  In these two cases, TinyMCE was no longer appearing when I looked at a document (it was installed and could be selected as an editor, it just never loaded).  CMFPlacefulWorkflow spat out an error when accessed from Site Setup.

Now, I’m not encouraging anyone else to blindly import steps without knowing what on earth they’re doing.  But this is clearly an area of my Plone set up I need to understand much better.  It may be that some of the disconnects I’ve experienced in my Plone 4 upgrade with Plone 3 products that no longer work, are somehow based in steps that haven’t been properly imported in portal_setup.

What’s unclear to me is why I’d need to use portal_setup to install or uninstall products when I already have two installer options (through the ZMI and through site setup) that seem to not be quite in sync with each other. I’ll have to figure out what portal_setup does that the other two don’t.