This document is valid for the current version of Plone.

Changing dependencies from Plone to Products.CMFPlone, updating permissions and aliases

Plone 4.1 separates the Products.CMFPlone package from the Plone egg to give integrators the option of building Plone sites with a cut down feature set.

Updating your

In your package's where you currently have:


Instead you should use:


You should also list the other packages you depend on, e.g. Products.Archetypes or

Updating Permissions

If you are protecting any templates, pages, etc... in zcml with CMF core permissions (anything in the cmf namespace, e.g. cmf.ModifyPortalContent), you must add the following to configure.zcml:

<include package="Products.CMFCore" />

Most importantly this loads the permissions.zcml, if it is available. The above statement is the easiest and will work in all Plone versions; previously a more fancy statement with a condition was advocated, which we will give here for good measure:

<include package="Products.CMFCore" file="permissions.zcml"
           zcml:condition="have plone-41" />

Updating Aliases

Some old import aliases may no longer work. Please update:

  • from Products.CMFPlone import Batch -> from Products.CMFPlone.PloneBatch import Batch
  • from import queryType -> from import queryType
  • from Products.Five.formlib import formbase -> from five.formlib import formbase (this counts for a lot of formlib changes - most things are now imported from five.formlib.formbase)

Maintaining compatibility with Plone 4.0 and 3.3

Version 4.0 of Products.CMFPlone is a forward compatibility shim (an empty egg depending on the Plone package) to enable Plone extension packages depending on Products.CMFPlone to continue working with Plone 4.0 or 3.3.

<include package="Products.CMFCore" />