Problem migrating from Archetypes to Dexterity via @@atct_migrator

Hi all

I just played around with mirating just some of the content at once and could migrate FileBlobs, ImageBlobs and Topic.

With Documents and Folders I have some problems. When I try to migrate the Documents, I get the following error:


Traceback (innermost last):

  • Module ZPublisher.Publish, line 138, in publish
  • Module ZPublisher.mapply, line 77, in mapply
  • Module ZPublisher.Publish, line 48, in call_object
  • Module z3c.form.form, line 233, in __ call__
  • Module z3c.form.form, line 228, in update
  • Module plone.app.z3cform.csrf, line 21, in execute
  • Module z3c.form.action, line 98, in execute
  • Module z3c.form.button, line 315, in __ call__
  • Module z3c.form.button, line 170, in __ call__
  • Module plone.app.contenttypes.migration.browser, line 397, in handle_migrate
  • Module plone.app.contenttypes.migration.browser, line 223, in __ call__
  • Module plone.app.contenttypes.migration.migration, line 225, in migrate_documents
  • Module plone.app.contenttypes.migration.migration, line 50, in migrate
  • Module Products.contentmigration.basemigrator.walker, line 144, in go
  • Module Products.contentmigration.basemigrator.walker, line 223, in migrate

MigrationError: MigrationError for obj at /Plone/loosli-benutzer/loosli-hilfe/outlook-reservationen-raum-fahrzeug-und-equipment (Document -> Document):
Traceback (most recent call last):
File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.15-py2.7.egg/Products/contentmigration/basemigrator/walker.py", line 192, in migrate
migrator.migrate()
File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.15-py2.7.egg/Products/contentmigration/basemigrator/migrator.py", line 214, in migrate
self.renameOld()
File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.15-py2.7.egg/Products/contentmigration/basemigrator/migrator.py", line 481, in renameOld
unrestricted_rename(self.parent, self.orig_id, self.old_id)
File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.15-py2.7.egg/Products/contentmigration/common.py", line 116, in unrestricted_rename
self._setObject(new_id, ob, set_owner=0)
File "/work/plone/buildout-cache/eggs/Products.BTreeFolder2-2.14.0-py2.7.egg/Products/BTreeFolder2/BTreeFolder2.py", line 461, in _setObject
notify(ObjectAddedEvent(ob, self, id))
File "/work/plone/buildout-cache/eggs/zope.event-3.5.2-py2.7.egg/zope/event/init.py", line 31, in notify
subscriber(event)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/event.py", line 24, in dispatch
zope.component.subscribers(event, None)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 136, in subscribers
return sitemanager.subscribers(objects, interface)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/registry.py", line 321, in subscribers
return self.adapters.subscribers(objects, provided)
File "/work/plone/buildout-cache/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/adapter.py", line 585, in subscribers
subscription(*objects)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/event.py", line 32, in objectEventNotify
zope.component.subscribers((event.object, event), None)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 136, in subscribers
return sitemanager.subscribers(objects, interface)
File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/registry.py", line 321, in subscribers
return self.adapters.subscribers(objects, provided)
File "/work/plone/buildout-cache/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/adapter.py", line 585, in subscribers
subscription(*objects)
File "/work/plone/buildout-cache/eggs/wicked-1.1.12-py2.7.egg/wicked/at/subscriber.py", line 46, in at_handle_target_moved
for field in ISchema(target).fields():
TypeError: ('Could not adapt', None, < InterfaceClass Products.Archetypes.interfaces.schema.ISchema>)


Also here: How can I find out, what the problem with this Document is? When I open it in Plone, I cannot see anything being wrong :frowning:
-> I need to migrate over 350 Documents and 33 Folders...

Than kyou for your help and kind regards
David

Just a hint: try staying with Plone 4.3.x first, installing plone.app.contenttypes and run @@atct_migrator. If everything goes well, then migrating to Plone 5.x.

I am not migration expert, but this seems a smoother path for me. Good luck.

Hi TsungWei

Thank you for your hint!

Unfortunately that does not work: I installed plone.app.contenttypes, started Plone and then wanted to go to the @@atct_migrator-page: http://:8080/Plone/@@atct_migrator
-> That page does not exist, I only get an error message, that the page canot be found: "the page does not seem to exist"

Any idea? Did I do anything wrong? How can I check wether or not plone.app.contenttypes is installed correctly? Is there another URL I can use?

Thank you very much for any further help!

Kind regards
David

Hello

Reading the main answer in https://stackoverflow.com/questions/27788312/plone-4-3-without-archetypes:
Do I even have to migrate the content from Archetypes to Dexterity or is it happening during installaiton of the plone.app.contenttypes automatically?

I would really be glad finding a way to properly move my site to Plone 5 where I have some strange things I hope, I could solve after a proper migration of the content to dexterity...

Thank you very much and kind regards
David

@d.wiedemann Looking at the traceback the error appears to be due to the subscriber of wicked being called. You could remove wicked from the Plone 4 site before upgrading to Plone 5.
You could also simply skip the subscriber that is breaking the migration by adding a return at the beginning of the method at_handle_target_moved in /work/plone/buildout-cache/eggs/wicked-1.1.12-py2.7.egg/wicked/at/subscriber.py. Keep in mind though that changing a file in the buildout-cache without changing it back afterwards is a recipe for desaster :slight_smile:

If you really need wiki-functionality in Plone 5 you should use https://pypi.python.org/pypi/collective.simplewiki instead of the extremely outdated wicked.

Thank you for your answer!

I can live with whatever way of doing Wiki - my actual site is just completely wiki-based. Therefore I need a way to bring my actual Plone 4.3 "wicked-based wiki site" to a Plone 5 wiki site: I can live very good with using another wiki-part, that's fine with me.
-> I would rather avoid going to hack the Python scripts, as I have no knowledge in this at all...

How do I proceed properly?

  • First move content from wicked to collective.simplewiki
    -> How is this been done?
  • migrate archetype to dexterity
    -> How can I do this in Plone 4.3? Or try to do this via @@atct_migrator after Plone-upgrade?
  • Upgrade Plone 4.3.15 -> Plone 5.0.7

What would you do? Thank you for your help!

Kind regards
David

Additional data:

After reading the documentation of collective.simplewiki, I saw, that it is only supported in Plone 5.x - therefore I just made my buildout.cfg containing collective.simplewiki and upgrade to 5.0.7.

After that my Plone crashes when updating it and an error occurs, similar to the one I already had a topic here in the community-forum: Ugrade 4.3.15 -> 5.0.7 seems ok but cannot upgrade site within browser
-> @pbauer: You suggested then to add wicked to the buildout :wink:

Somehow I'm turning myself in a circle :frowning: I would be glad to finally migrate my 4.3-Plone properly to 5, but somehow whatever I try does not work. I Would very much appreciate finding somebody willing to properly help me through the whole process...

I am quite lost and have no clue of how to continue with our Intranet...

Appreciate any help and kind regards
David


PS: The error I see when I want to do Upgrade unter Plone 5.0.7 os the following:
Site Error

An error was encountered while publishing this resource.

Sorry, a site error occurred.

Traceback (innermost last):

Module ZPublisher.Publish, line 249, in publish_module_standard
Module ZPublisher.Publish, line 197, in publish
Module zope.event, line 31, in notify
Module zope.component.event, line 24, in dispatch
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module ZODB.Connection, line 860, in setstate
Module ZODB.Connection, line 914, in _setstate
Module ZODB.serialize, line 613, in setGhostState
Module zope.component.persistentregistry, line 40, in __setstate__
Module zope.interface.adapter, line 91, in _createLookup
Module zope.interface.adapter, line 439, in __init__
Module zope.interface.adapter, line 476, in init_extendors
Module zope.interface.adapter, line 480, in add_extendor

AttributeError: type object 'IFieldValueSetter' has no attribute '__iro__'

Troubleshooting Suggestions

The URL may be incorrect.
The parameters passed to this resource may be incorrect.
A resource that this resource relies on may be encountering an error.

For more detailed information about the error, please refer to the error log.

If the error persists please contact the site maintainer. Thank you for your patience. 

Afterwards I have again to restart the Plone-service on LINUX in order to be able to go again to the URL to upgrade the Plone-site...

Hi

What can I do now in order to migrate my site from Plone 4.3.15 to Plone 5.0.7?
How can I replace wicked by collective.simplewiki?
I'm stuck here. As long as I cannot do this, I seem not to be able to continue :frowning:

Thank you for any help!

Kind regards
David

Hi

Ok, I tried to just include plone.app.contenttypes and collective.simplewiki and then ran buildout: This is at the moment an action which results either in a disaster or in nothing:
This time, it is a disaster: Now I cannot load Plone anymore sigh (I have a backup, therefore disaster is in regards of my intenstions of bringing my content to Dexterity/simplewiki...)

My buidlout.cfg looks as following

############################################
#
# Buildout Configuration File for Standalone Plone
# ------------------------------------------------
#
# After making changes in this configuration file,
# you should run bin/buildout to update the components.
#
# ALWAYS back up all Plone/Zope data and components
# before changing configuration.
#
# Running "bin/buildout" will update your installation,
# installing missing components as necessary.
#
# Use "bin/buildout -n" to update many components here to the newest
# available releases.
# This will update the add-on products you've added in the eggs= lines.
# This will not, however, upgrade Plone itself (or anything else you've
# pinned with a version specification). To upgrade Plone itself, see the
# comments in "Plone Component Versions".
#
# Tutorial instructions for using zc.buildout for
# configuration management are available at:
# http://plone.org/documentation/tutorial/buildout
# Full details at http://pypi.python.org/pypi/zc.buildout
#
############################################


[buildout]

############################################
# Plone Component Versions
# ------------------------
# This version of the Unified Installer has the components of Plone 4
# preloaded so that it can install without an Internet connection.
# If you want to update, uncomment the "http://..." line below,
# edit it to point to the current version URL, comment out the
# "versions.cfg" line and run "bin/buildout" while attached to the
# Internet. Generally, you only want to do that as part of a planned migration.
# Note that if you are updating components, you should also check the versions
# section at the end of this file, since recipes or components other than
# those of Zope and Plone may need updating at the same time.
#
extends =
    base.cfg
#    versions.cfg
    http://dist.plone.org/release/4.3.15/versions.cfg

# If you change your Plone version, you'll also need to update
# the repository link below.
find-links +=
    http://dist.plone.org/release/4.3.15

############################################
# Ports
# -----
# Specify the port on which your Zope installation
# will listen:
http-address = 8080


# If you try to start Zope as root, it will change user id to run as
# the effective user specified here. This user id must own the var directory
# of your buildout.
effective-user = nobody


############################################
# Eggs
# ----
# Add an indented line to the eggs section for any Python
# eggs or packages you wish to include in your Plone instance.
#
eggs =
    Plone
    Pillow
    products.scrawl
    plone.app.contenttypes
    collective.simplewiki


# Optional Functionality
# ----------------------
# Uncomment the indented lines to include these add-on products.
# Documentation on all of them, along with many more products,
# is available at
# http://plone.org/products/
#
# Example products:
# * LinguaPlone provides tools for building multi-lingual sites
# * PloneFormGen provides through-the-web form building
#
#    Products.LinguaPlone==4.0.1
#    Products.PloneFormGen==1.6.0
#
# Note that versions may be specified here or in the [versions]
# section below. You should always specify versions that you know
# are compatible with the Plone release and at an acceptable
# development level.
#
# Commonly used development tools:
# Several excellent development tools are included in the develop.cfg
# buildout extension. Read it to learn how to activate these tools.


############################################
# ZCML Slugs
# ----------
# Some eggs need ZCML slugs to tell Zope to
# use them. This is increasingly rare.
zcml =
#    plone.reload


############################################
# Development Eggs
# ----------------
# You can use paster to create "development eggs" to
# develop new products/themes. Put these in the src/
# directory.
# You will also need to add the egg names in the
# eggs section above, and may also need to add them
# to the zcml section.
#
# Provide the *paths* to the eggs you are developing here:
develop =
#    src/my.package


############################################
# Debug Mode
# ----------
# Change debug-mode to "on" to run in development mode.
# This will dramatically slow Plone.
#
debug-mode = off
# Add-on developers should turn deprecation warnings on
deprecation-warnings = off
# change verbose-security to "on" for useful security errors while developing
verbose-security = off


############################################
# Backup Directory
# ----------------
# Sets the target directory for the bin/backup and bin/snapshotbackup
# commands. Default is inside this project's var directory, but ideally
# this should be on a separate volume or backup server.
#
backups-dir=${buildout:directory}/var


############################################
# Environment Variables
# ---------------------
# Some of the behavior of your Zope/Plone instances are controlled with OS
# environment variables. You may set those here in a key / value format.
# Some common settings:
#    * TZ allows you to set a time zone for systems where it's not
#      automatically available.
#    * zope_i18n_compile_mo_files allows for automatic compilation of
#      missing translation files (may slow startup).
#    * zope_i18n_allowed_languages allows you to limit the available
#      translations.
#    * PYTHON_EGG_CACHE determines where zipped python packages are unpacked
#      for use.
#    * PYTHONHASHSEED determines initial seed for hashes. "random" causes a
#      pseudo-random value is used to seed the hashes of str, bytes and datetime
#      objects.
environment-vars =
    zope_i18n_compile_mo_files true
    PYTHON_EGG_CACHE ${buildout:directory}/var/.python-eggs
    PYTHONHASHSEED random
    #    TZ US/Eastern
    #    zope_i18n_allowed_languages en es de fr


############################################
# Initial User
# ------------
# This is the user id and password that will be used to create the initial
# user id that will allow you to log in and create a Plone site. This only
# sets the initial password; it will not allow you to change an already
# existing password. If you change the admin password via the web interface,
# the one below will no longer be valid.
# If you find yourself locked out of your Zope/Python installation, you may
# add an emergency user via "bin/plonectl adduser".
user=admin:pXD0yXZS


############################################
# Parts Specification
#--------------------
# Specifies the components that should be included in the buildout.
# All the basics are in the base.cfg extension; you may add your
# own if you need them at the end of this file.
parts =
    instance
    zopepy
    zopeskel
    unifiedinstaller
    repozo
    backup
    chown


############################################
# Versions Specification
# ----------------------
# Version information supplied here will "pin" Python packages to a particular
# version number, even when you use the "newest" flag running buildout.
# Specifying versions for all packages is a good idea and can prevent
# accidental changes when you add new packages to your buildout.
# Note that versions specified here will override those specified earlier
# in the configuration, including those from the Plone and Zope version
# config files.
#
[versions]
ZopeSkel = 2.21.2
plone.recipe.unifiedinstaller = 4.1
lxml = 2.3.6
Cheetah = 2.2.1
Pillow = 1.7.8
Products.DocFinderTab = 1.0.5
collective.recipe.backup = 2.9
plone.recipe.command = 1.1
zc.buildout =
setuptools =

The output for buildout is as following:

(Python-2.7)root@vm-0019:/work/plone/zinstance# buildout
Uninstalling unifiedinstaller.
Uninstalling repozo.
Uninstalling backup.
Uninstalling zopeskel.
Uninstalling zopepy.
Uninstalling instance.
Unused options for buildout: 'unzip'.
Installing instance.
/work/plone/Python-2.7/local/lib/python2.7/site-packages/pkg_resources/__init__.py:187: RuntimeWarning: You have iterated over the result of pkg_resources.parse_version. This is a legacy behavior which is inconsistent with the new version class introduced in setuptools 8.0. In most cases, conversion to a tuple is unnecessary. For comparison of versions, sort the Version instances directly. If you have another use case requiring the tuple, please file a bug with the setuptools project describing that need.
  stacklevel=1,
Getting distribution for 'plone.app.contenttypes==1.1.2'.
warning: no files found matching '*.txt'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files found matching 'bootstrap.py'
warning: no previously-included files found matching '*.yml'
warning: no previously-included files found matching '*.sh'
Got plone.app.contenttypes 1.1.2.
Getting distribution for 'collective.simplewiki'.
warning: no files found matching '*' under directory 'docs'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got collective.simplewiki 1.0.1.
Getting distribution for 'plone.api'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.api 1.8.
Getting distribution for 'plone.app.versioningbehavior==1.2.0'.
warning: no files found matching '*' under directory 'docs'
warning: no files found matching '*.txt'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.app.versioningbehavior 1.2.0.
Getting distribution for 'plone.app.relationfield==1.2.3'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.app.relationfield 1.2.3.
Getting distribution for 'plone.formwidget.querystring'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.formwidget.querystring 1.1.10.
Getting distribution for 'plone.app.event[dexterity]==1.1.8'.
warning: no previously-included files matching '*pyc' found anywhere in distribution
warning: no previously-included files matching '*~' found anywhere in distribution
no previously-included directories found matching 'devsrc'
Got plone.app.event 1.1.8.
Getting distribution for 'decorator==3.4.2'.
Got decorator 3.4.2.
Getting distribution for 'rwproperty==1.0'.
zip_safe flag not set; analyzing archive contents...
Got rwproperty 1.0.
Getting distribution for 'plone.formwidget.contenttree==1.0.15'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.formwidget.contenttree 1.0.15.
Getting distribution for 'z3c.relationfield==0.6.3'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got z3c.relationfield 0.6.3.
Getting distribution for 'plone.app.intid==1.0.5'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.app.intid 1.0.5.
Getting distribution for 'five.intid==1.0.3'.
Got five.intid 1.0.3.
Getting distribution for 'zope.intid==3.7.2'.
Got zope.intid 3.7.2.
Getting distribution for 'plone.formwidget.recurrence[z3cform]==1.2.6'.
warning: no files found matching '*.mo' anywhere in distribution
warning: no previously-included files matching '*pyc' found anywhere in distribution
warning: no previously-included files matching '*~' found anywhere in distribution
Got plone.formwidget.recurrence 1.2.6.
Getting distribution for 'plone.formwidget.datetime[z3cform]==1.3.1'.
warning: no files found matching '*.mo' anywhere in distribution
warning: no previously-included files matching '*pyc' found anywhere in distribution
Got plone.formwidget.datetime 1.3.1.
Getting distribution for 'plone.event==1.3.3'.
warning: no files found matching '*.mo' anywhere in distribution
warning: no previously-included files matching '*pyc' found anywhere in distribution
Got plone.event 1.3.3.
Getting distribution for 'icalendar>3.0'.
warning: no previously-included files matching '*.pyc' found under directory 'src/icalendar'
warning: no previously-included files matching '*~' found under directory 'src/icalendar'
Got icalendar 3.11.7.
Getting distribution for 'collective.elephantvocabulary'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got collective.elephantvocabulary 0.2.5.
Getting distribution for 'Products.DateRecurringIndex'.
warning: no files found matching '*.mo' anywhere in distribution
warning: no previously-included files matching '*pyc' found anywhere in distribution
warning: no previously-included files matching '*.profile' found anywhere in distribution
Got Products.DateRecurringIndex 2.1.
Getting distribution for 'plone.formwidget.autocomplete==1.2.11'.
warning: no previously-included files matching '*.pyc' found anywhere in distribution
Got plone.formwidget.autocomplete 1.2.11.
Getting distribution for 'zc.relation==1.0'.
Got zc.relation 1.0.
Getting distribution for 'z3c.objpath==1.1'.
Got z3c.objpath 1.1.
Getting distribution for 'zope.app.intid==3.7.1'.
Got zope.app.intid 3.7.1.
Getting distribution for 'zope.keyreference==3.6.4'.
Got zope.keyreference 3.6.4.
Generated script '/work/plone/zinstance/bin/instance'.
Generated interpreter '/work/plone/zinstance/parts/instance/bin/interpreter'.
Generated script '/work/plone/zinstance/bin/pilfont.py'.
Generated script '/work/plone/zinstance/bin/pilconvert.py'.
Generated script '/work/plone/zinstance/bin/pilfile.py'.
Generated script '/work/plone/zinstance/bin/pilprint.py'.
Generated script '/work/plone/zinstance/bin/pildriver.py'.
Installing zopepy.
Generated interpreter '/work/plone/zinstance/bin/zopepy'.
Installing zopeskel.
Generated script '/work/plone/zinstance/bin/zopeskel'.
Generated script '/work/plone/zinstance/bin/paster'.
Generated script '/work/plone/zinstance/bin/pilfont.py'.
Generated script '/work/plone/zinstance/bin/pilconvert.py'.
Generated script '/work/plone/zinstance/bin/pilfile.py'.
Generated script '/work/plone/zinstance/bin/pilprint.py'.
Generated script '/work/plone/zinstance/bin/pildriver.py'.
Installing backup.
Generated script '/work/plone/zinstance/bin/backup'.
Generated script '/work/plone/zinstance/bin/snapshotbackup'.
Generated script '/work/plone/zinstance/bin/restore'.
Generated script '/work/plone/zinstance/bin/snapshotrestore'.
Updating chown.
chown: Running echo Dummy references to force this to execute after referenced parts
echo /work/plone/zinstance/var/backups sudo -u nobody
chmod 600 .installed.cfg
find /work/plone/zinstance/var -type d -exec chmod 700 {} \;
chmod 744 /work/plone/zinstance/bin/*
Dummy references to force this to execute after referenced parts
/work/plone/zinstance/var/backups sudo -u nobody
Installing repozo.
Generated script '/work/plone/zinstance/bin/repozo'.
Installing unifiedinstaller.
(Python-2.7)root@vm-0019:/work/plone/zinstance# 

Message on Browser looks following:

Unable to connect

If I check systemctl status plone I get the following result:

root@vm-0019:~# systemctl status plone
‚óŹ plone.service - SYSV: Zope, a web application server
   Loaded: loaded (/etc/init.d/plone; generated; vendor preset: enabled)
   Active: active (exited) since Wed 2017-09-20 17:33:17 CEST; 13min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 14384 ExecStop=/etc/init.d/plone stop (code=exited, status=0/SUCCESS)
  Process: 14394 ExecStart=/etc/init.d/plone start (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 9830)
   CGroup: /system.slice/plone.service

Sep 20 17:33:14 vm-0019 systemd[1]: Stopped SYSV: Zope, a web application server.
Sep 20 17:33:14 vm-0019 systemd[1]: Starting SYSV: Zope, a web application server...
Sep 20 17:33:17 vm-0019 plone[14394]: Starting plone server...instance: .
Sep 20 17:33:17 vm-0019 plone[14394]: daemon process started, pid=14407
Sep 20 17:33:17 vm-0019 systemd[1]: Started SYSV: Zope, a web application server.

But checking for the open port 8080 I get:

root@vm-0019:~# telnet localhost 8080
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
root@vm-0019:~#

What can I do now? What am I doing wrong?

Thank you for helping me and kind regards
David

I included wicked in a Plone 5 site once but only to provide a class that was missing otherwise, not to use it at all.
I suggest you disable the subscriber that is originally breaking your migration. Open the file /work/plone/buildout-cache/eggs/wicked-1.1.12-py2.7.egg/wicked/at/objectevents.zcml and comment out the two subscribers (with html-style comments).
Then run the migration. Afterwards your might be able to safely uninstall wicked and then remove it form your buildout.

@pbauer: Thank you for your comment!

If I understand you right, you mean to comment the Subscribers before Miration from Plone 4 to Plone 5, Afterwards uncomment this, right?
What will happen with my Wiki-Content' Will it keep the Links in Wiki-Style? When and how come thie mentioned collective.simplewiki into action?

And uninstalling wicked: How will I do this? Via pip?

-> Commenting html-style means the "#"-Character in the beginning of all the lines, right?

Thank you very much and kind regards
David

Comment in HTML:

<-- I'm a comment -->

Hi so the file should look the following way?

<configure xmlns="http://namespaces.zope.org/zope"
           xmlns:five="http://namespaces.zope.org/five">

<--    <subscriber						-->
<--        for="wicked.interfaces.IWickedBacklink		-->
<--             OFS.interfaces.IObjectWillBeRemovedEvent"	-->
<--        handler=".subscriber.at_handle_target_deletion"	-->
<--        />							-->
<--								-->
<--    <subscriber						-->
<--        for="wicked.interfaces.IWickedTarget			-->
<--             zope.lifecycleevent.interfaces.IObjectMovedEvent"-->
<--        handler=".subscriber.at_handle_target_moved"		-->
<--        />							-->

</configure>

-> Still have errors...

What i still don't understand: At what stage shall I do what? I have three things to do (from what I see in this topic and in the other topic I have regarding this upgrade):

  • transition wicked -> collective.simplewiki
  • transition archetypes -> dexterity
  • upgrade Plone from version 4 to 5

What order must i use and how go on? I don't see a clear path yet: Since weeks I try now any kind of possibility but never with the desired result:
Plone 5, content still being wiki-style (keeping all the wiki-style links), preferable Dexterity...

What shall I focus on now as first step: Migrate Archetype to Dexterity, migrate Wiki from wicked to simplewiki or Plone 4 to Plone 5?

Thank you and kind regards
David

https://plone.com/providers

Just found out: I have to enable first the Add-On in Plone 4.3.15... I can now reach the site

@hvelarde:
You are right. So far I was just usually able to solve my problems with the help of the documentation of Plone or some help from the community. Just this time, it somehow does not work out as I expected...
-> So I contacted a potential helping company in order to make me an offer...

Nevertheless, I still try - don't like to give up :wink:

So I could get to the Migrator unter Plone 4.3.15 and could migrate all my content except the Folders. There I run into the following message from the Migrator:

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module plone.z3cform.layout, line 66, in __call__
  Module plone.z3cform.layout, line 50, in update
  Module z3c.form.form, line 228, in update
  Module plone.app.z3cform.csrf, line 21, in execute
  Module z3c.form.action, line 98, in execute
  Module z3c.form.button, line 315, in __call__
  Module z3c.form.button, line 170, in __call__
  Module plone.app.contenttypes.migration.browser, line 384, in handle_migrate
  Module plone.app.contenttypes.migration.browser, line 219, in __call__
  Module plone.app.contenttypes.migration.migration, line 339, in migrate_folders
  Module plone.app.contenttypes.migration.migration, line 51, in migrate
  Module Products.contentmigration.basemigrator.walker, line 144, in go
  Module Products.contentmigration.basemigrator.walker, line 223, in migrate
MigrationError: MigrationError for obj at /Plone/loosli-benutzer (Folder -> Folder):
Traceback (most recent call last):
  File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.16-py2.7.egg/Products/contentmigration/basemigrator/walker.py", line 192, in migrate
    migrator.migrate()
  File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.16-py2.7.egg/Products/contentmigration/basemigrator/migrator.py", line 220, in migrate
    method()
  File "/work/plone/buildout-cache/eggs/Products.contentmigration-2.1.16-py2.7.egg/Products/contentmigration/basemigrator/migrator.py", line 577, in migrate_children
    self.new._setObject(id, obj, set_owner=0)
  File "/work/plone/buildout-cache/eggs/Products.BTreeFolder2-2.13.3-py2.7.egg/Products/BTreeFolder2/BTreeFolder2.py", line 455, in _setObject
    notify(ObjectAddedEvent(ob, self, id))
  File "/work/plone/buildout-cache/eggs/zope.event-3.5.2-py2.7.egg/zope/event/__init__.py", line 31, in notify
    subscriber(event)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/event.py", line 24, in dispatch
    zope.component.subscribers(event, None)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 136, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/registry.py", line 321, in subscribers
    return self.adapters.subscribers(objects, provided)
  File "/work/plone/buildout-cache/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/adapter.py", line 585, in subscribers
    subscription(*objects)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/event.py", line 32, in objectEventNotify
    zope.component.subscribers((event.object, event), None)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 136, in subscribers
    return sitemanager.subscribers(objects, interface)
  File "/work/plone/buildout-cache/eggs/zope.component-3.9.5-py2.7.egg/zope/component/registry.py", line 321, in subscribers
    return self.adapters.subscribers(objects, provided)
  File "/work/plone/buildout-cache/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/adapter.py", line 585, in subscribers
    subscription(*objects)
  File "/work/plone/buildout-cache/eggs/Products.CMFCore-2.2.10-py2.7.egg/Products/CMFCore/CMFCatalogAware.py", line 263, in handleContentishEvent
    ob.indexObject()
  File "/work/plone/buildout-cache/eggs/Products.CMFCore-2.2.10-py2.7.egg/Products/CMFCore/CMFCatalogAware.py", line 68, in indexObject
    catalog.indexObject(self)
  File "/work/plone/buildout-cache/eggs/Products.CMFPlone-4.3.15-py2.7.egg/Products/CMFPlone/CatalogTool.py", line 331, in indexObject
    self.reindexObject(object, idxs)
  File "/work/plone/buildout-cache/eggs/Products.CMFCore-2.2.10-py2.7.egg/Products/CMFCore/CatalogTool.py", line 301, in reindexObject
    self.catalog_object(object, uid, idxs, update_metadata)
  File "/work/plone/buildout-cache/eggs/Products.CMFPlone-4.3.15-py2.7.egg/Products/CMFPlone/CatalogTool.py", line 349, in catalog_object
    update_metadata, pghandler=pghandler)
  File "/work/plone/buildout-cache/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/ZCatalog/ZCatalog.py", line 476, in catalog_object
    update_metadata=update_metadata)
  File "/work/plone/buildout-cache/eggs/Products.ZCatalog-2.13.27-py2.7.egg/Products/ZCatalog/Catalog.py", line 353, in catalogObject
    blah = x.index_object(index, object, threshold)
  File "/work/plone/buildout-cache/eggs/Products.ZCTextIndex-2.13.5-py2.7-linux-x86_64.egg/Products/ZCTextIndex/ZCTextIndex.py", line 180, in index_object
    text = getattr(obj, attr, None)
  File "/work/plone/buildout-cache/eggs/plone.indexer-1.0.4-py2.7.egg/plone/indexer/wrapper.py", line 63, in __getattr__
    return indexer()
  File "/work/plone/buildout-cache/eggs/plone.indexer-1.0.4-py2.7.egg/plone/indexer/delegate.py", line 20, in __call__
    return self.callable(self.context)
  File "/work/plone/buildout-cache/eggs/plone.app.contenttypes-1.1.2-py2.7.egg/plone/app/contenttypes/indexers.py", line 70, in SearchableText_document
    return _unicode_save_string_concat(SearchableText(obj))
  File "/work/plone/buildout-cache/eggs/plone.app.contenttypes-1.1.2-py2.7.egg/plone/app/contenttypes/indexers.py", line 46, in SearchableText
    safe_unicode(textvalue.output).encode('utf8'),
  File "/work/plone/buildout-cache/eggs/plone.app.textfield-1.2.9-py2.7.egg/plone/app/textfield/value.py", line 84, in output
    return self.output_relative_to(site)
  File "/work/plone/buildout-cache/eggs/plone.app.textfield-1.2.9-py2.7.egg/plone/app/textfield/value.py", line 110, in output_relative_to
    return transformer(self, self.outputMimeType)
  File "/work/plone/buildout-cache/eggs/plone.app.textfield-1.2.9-py2.7.egg/plone/app/textfield/transform.py", line 69, in __call__
    raise TransformError('Error during transformation', e)
TransformError: Error during transformation

What could I do in order to make this error go away? Or how shall I proceed in order to find out, where the problem ist?
-> I was just looking into the file ...../transform.py: No clue, what it is, what it does and how...

Thank you again for all your patience and help!

Kind regards
David

the things you're trying to accomplish depend on the status of your current site; migrating from Archetypes to Dexterity is trivial is you only have the standard content types.

upgrading from Plone 4 to Plone 5 may or may not be trivial; things can break as you may have noticed already if you follow the messages on this forum.

migrating from Wicked to collective.simplewiki is something that may have not yet been covered: contact the package maintainers, they may be willing to provide a path if you pay for the development.

I appreciate the fact that you have tried and learned a lot, but there comes a time when you have to acknowledge that you're not going to make it; the sooner you realize it the better.

I think that time is now.

Plone is powerful and complex; don't expect to master it in 2 months.

@d.wiedemann that looks like a interesting error. Since I am the author and maintainer of the migration-code in plone.app.contenttypes I am interested in figuring out if this is a issue in the migration. I'm willing to help you figure that out in a shreen-sharing session (e.g. teamviewer). Please contact me directly by via bauer@starzel.de

Generally @hvelarde is right. It can be hard doing migrations and it would be good to get professional assistance when addons come into play and ruin a otherwise clean migration-path. Not all addons provide clean unstall-code or upgrade-paths to Plone 5. That's the price of using some addons. See my talk in Brasilia https://www.youtube.com/watch?v=Sc6NkqaSjqw for more about that topic.

@hvelarde:
Thank you for being so honest - as I said, I contacted a company from your list of possible contacts (the only one available in Switzerland :wink: ) in order to let them help me with this.
-> Why I did not give up so far was just the fact, that I was thinking, that we really have an easy, not so complex site, which somehow should be able to be migrated easily. This seems not to be the case...

@pbauer:
Thank you for your offer, I already sent you a message - I appreciate your effort!

Kind regards
David

Yesterday we had a screesharing-session and figured out how to fix the issues:

Generally you should migrate to the latest Plone 5, then migrate to Dexterity. Even better to migrate to 5.1 since the at-dx migration in 5.1 included many improvments that were not backported to 4.3 or even 5.0. Another thing (not an issue here): If you have LinguaPlone you need to migrate to plone.app.multilingual (with archetypes.multilingual) before upgrading to Plone 5! Then migrate from AT to DX in Plone 5.

This is what we did:

  • Disable the wiki-behavior in Plone 4 in editing-controlpanel (to keep the brackets (()) and [] during upgrades
  • Include wicked in the 5.x buildout
  • Patch the subscriber from wicked in wicked/at/objectevents.zcml as described above to prevent it from doing anything stupid.
  • We also had to patch a event-handler of plone.app.linkintegrity (that will no longer be necessary after Plone 5.1rc2 since I added https://github.com/plone/plone.app.linkintegrity/pull/60)
  • We also patched ZCTextIndex.index_object which is bascially a good idea to do during migrations since it speeds things up a lot (no indexing of files and documents!) and you're not doing a query for SearchableText during a migration. You should rebuild the catalog after the migration.
  • In Plone 5 with dexterity with all items moved to Dexterity the brackets were still there
  • Add collective.simplewiki to the buildout and install it. The brackets are now (after a restart) turned into wiki-links. Works like a charm and ist much more lightweight than wicked.

What remains is a uninstall Step in wicked that allows you to remove wicked from the buildout without throwing AttributeError: type object 'IFieldValueSetter' has no attribute '__iro__'

3 Likes

Thank you everybody contributing to this issue and especially @pbauer for your help!

Kind regards
David

1 Like