Upgrade Plone 6 sites DX-Site-Root

Today in the morning i run the buildout in my Testsystem, its based on a Plone 6. Now all items are missing. Can this happend after the merge? The ZMI Root is empty:


I'm a little bit perplexed.

@1letter I think you have to run the migration for the DX site root PLIP:

1 Like

I call: https:/mysite/portal_setup/manage_fullImport and select the profile plone.app.upgrade.v60:to_dx_site_root. I get an error:

2021-09-13 09:16:30,393 INFO    [Products.GenericSetup.tool:1404][waitress-3] Importing profile profile-plone.app.upgrade.v60:to_dx_site_root with dependency strategy upgrade.
2021-09-13 09:16:30,393 INFO    [Products.GenericSetup.tool:1445][waitress-3] Applying main profile profile-plone.app.upgrade.v60:to_dx_site_root
2021-09-13 09:16:30,454 INFO    [GenericSetup.types:100][waitress-3] Types tool imported.
2021-09-13 09:16:30,494 ERROR   [Zope.SiteErrorLog:252][waitress-3] 1631517390.49419930.2278233442361961 https://mysite/portal_setup/manage_importAllSteps
Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 167, in transaction_pubevents
  Module ZPublisher.WSGIPublisher, line 376, in publish_module
  Module ZPublisher.WSGIPublisher, line 271, in publish
  Module ZPublisher.mapply, line 85, in mapply
  Module ZPublisher.WSGIPublisher, line 68, in call_object
  Module Products.GenericSetup.tool, line 597, in manage_importAllSteps
  Module Products.GenericSetup.tool, line 399, in runAllImportStepsFromProfile
   - __traceback_info__: profile-plone.app.upgrade.v60:to_dx_site_root
  Module Products.GenericSetup.tool, line 1487, in _runImportStepsFromContext
  Module Products.GenericSetup.tool, line 1299, in _doRunImportStep
   - __traceback_info__: typeinfo
  Module Products.CMFCore.exportimport.typeinfo, line 222, in importTypesTool
  Module Products.GenericSetup.utils, line 909, in importObjects
   - __traceback_info__: portal_types
  Module Products.GenericSetup.utils, line 905, in importObjects
   - __traceback_info__: types/Plone_Site
  Module Products.GenericSetup.utils, line 542, in _importBody
  Module Products.CMFCore.exportimport.typeinfo, line 61, in _importNode
  Module Products.GenericSetup.utils, line 774, in _initProperties
ValueError: undefined property 'add_permission'

I think GS is complaining when importing this node:

That's weird, I never add this kind of issue.

So, @agitator and I just run into the same issue.

Ok, i got it to work. The upgrade steps runs to end. But in the ZMI all is empty. No Object.
If i call the view tab of my plone site, i got this error:

2021-09-13 09:41:57,906 ERROR   [Zope.SiteErrorLog:252][waitress-1] 1631518917.90568690.23115526986445178 http://127.0.0.1:8080/eportal
Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 167, in transaction_pubevents
  Module ZPublisher.WSGIPublisher, line 376, in publish_module
  Module ZPublisher.WSGIPublisher, line 255, in publish
  Module ZPublisher.BaseRequest, line 446, in traverse
  Module ZPublisher.BeforeTraverse, line 104, in __call__
  Module Products.CMFPlone.Portal, line 140, in __before_publishing_traverse__
  Module plone.rest.patches, line 15, in __before_publishing_traverse__
  Module Products.CMFCore.DynamicType, line 164, in __before_publishing_traverse__
  Module Products.CMFDynamicViewFTI.fti, line 239, in queryMethodID
  Module Products.CMFDynamicViewFTI.fti, line 201, in defaultView
  Module Products.CMFPlone.PloneTool, line 658, in browserDefault
  Module Products.CMFPlone.PloneTool, line 535, in getDefaultPage
  Module Products.CMFPlone.defaultpage, line 139, in get_default_page_via_view
  Module Products.CMFPlone.browser.defaultpage, line 16, in getDefaultPage
  Module Products.CMFPlone.defaultpage, line 51, in get_default_page
  Module plone.folder.ordered, line 218, in __contains__
TypeError: argument of type 'NoneType' is not iterable

I just found: The profile alone does not run the upgrade steps.

Instead of applying the naked profile run upgrade steps:


scroll down

@jensens Yes, now, i see my objects in the zmi.

This is probably only a problem to all using Plone 6 already. If one comes from Plone 5.2 this would be applied in a correct way.

One drawback: This resets my site settings on the site root. I created a PR here to fix this https://github.com/plone/plone.app.upgrade/pull/257

After the Migration the Plone Site is now a DexterityContent Type, I get a traceback in my addon:

  File "/opt/PloneCopy/my.addon/src/my/addon/favorites/viewlets.py", line 31, in can_add_to_favorites
    if self.context.UID() not in uids:
  File "/opt/PloneCopy/my.theme/eggs/plone.dexterity-2.10.3-py3.8.egg/plone/dexterity/content.py", line 423, in UID
    return IUUID(self)
TypeError: ('Could not adapt', <PloneSite at /eportal>, <InterfaceClass plone.uuid.interfaces.IUUID>)
@property
def can_add_to_favorites(self):
    if IDexterityContent.providedBy(self.context):
        # ..... some code
        if self.context.UID() not in uids:
            return True
        return False

Question: Why have my new Plone Site DX Object no UID Support? Should i do the following explicit?

from plone.uuid.interfaces import ATTRIBUTE_NAME
obj = api.portal.get()
setattr(obj, ATTRIBUTE_NAME, uuid)

Plone sites never had a UID, this is what happens on Plone 5.2:

ipdb> api.portal.get().UID()
*** AttributeError: 'RequestContainer' object has no attribute 'UID'

I would check for the plone.uuid.interfaces.IUUIDAware interface (or for both it and IDexterityContent).

@alert Thanks for hint, i will check now for the IUUIDAware Interface

  1. I think it will be a good idea in the future to have a uid for the Plone site root.
  2. Thank you very much @1letter for reporting these problems, we very much need it :heart:
3 Likes

Now on the Stage System i get a Traceback if i rebuild the Catalog.

2021-09-13 12:53:26,029 INFO    [Plone:510][waitress-2] Catalog Rebuilt
Total time: 7.046124458312988
Total CPU time: 7.025847145
2021-09-13 12:53:27,255 ERROR   [plone.app.viewletmanager:114][waitress-2] Error while rendering viewlet-manager=plone.mainnavigation, viewlet=plone.global_sections
Traceback (most recent call last):
  File "/opt/mysite/eggs/Zope-5.2.1-py3.8.egg/ZPublisher/WSGIPublisher.py", line 173, in transaction_pubevents
    tm.commit()
  File "/opt/mysite/eggs/transaction-3.0.1-py3.8.egg/transaction/_manager.py", line 257, in commit
    return self.manager.commit()
  File "/opt/mysite/eggs/transaction-3.0.1-py3.8.egg/transaction/_manager.py", line 134, in commit
    return self.get().commit()
  File "/opt/mysite/eggs/transaction-3.0.1-py3.8.egg/transaction/_transaction.py", line 267, in commit
    self._callBeforeCommitHooks()
  File "/opt/mysite/eggs/transaction-3.0.1-py3.8.egg/transaction/_transaction.py", line 333, in _callBeforeCommitHooks
    self._call_hooks(self._before_commit)
  File "/opt/mysite/eggs/transaction-3.0.1-py3.8.egg/transaction/_transaction.py", line 372, in _call_hooks
    hook(*(prefix_args + args), **kws)
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 317, in before_commit
    self.queue.process()
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 227, in process
    util.reindex(obj, attributes, update_metadata=metadata)
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 49, in reindex
    catalog._reindexObject(
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/CatalogTool.py", line 368, in _reindexObject
    self.catalog_object(object, uid, idxs, update_metadata)
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/CatalogTool.py", line 335, in catalog_object
    ZCatalog.catalog_object(self, w, uid, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/ZCatalog.py", line 505, in catalog_object
    self._catalog.catalogObject(obj, uid, None, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 338, in catalogObject
    index = self.updateMetadata(object, uid, None)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 289, in updateMetadata
    newDataRecord = self.recordify(object)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 424, in recordify
    attr = attr()
  File "/opt/mysite/src/plone.dexterity/plone/dexterity/content.py", line 423, in UID
    return IUUID(self)
TypeError: ('Could not adapt', <PloneSite at /mysite>, <InterfaceClass plone.uuid.interfaces.IUUID>)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/mysite/eggs/Chameleon-3.9.1-py3.8.egg/chameleon/template.py", line 192, in render
    self._render(stream, econtext, rcontext)
  File "/opt/mysite/var/cache/3b3d30c878e984b798959ee7a09ad84b.py", line 114, in render
    __value = _static_140203847040688('python', 'view.portal_tabs', econtext=econtext)(_static_140203847040496(econtext, __zt_tmp))
  File "/opt/mysite/eggs/zope.tales-5.1-py3.8.egg/zope/tales/pythonexpr.py", line 73, in __call__
    return eval(self._code, vars)
  File "<string>", line 1, in <module>
  File "/opt/mysite/eggs/plone.memoize-2.1.0-py3.8.egg/plone/memoize/view.py", line 59, in memogetter
    cache[key] = func(*args, **kwargs)
  File "/opt/mysite/eggs/plone.app.layout-4.0.0a1-py3.8.egg/plone/app/layout/viewlets/common.py", line 406, in portal_tabs
    return portal_tabs_view.topLevelTabs()
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/browser/navigation.py", line 146, in topLevelTabs
    rawresult = catalog.searchResults(query)
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/CatalogTool.py", line 412, in searchResults
    processQueue()
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 97, in processQueue
    processed = queue.process()
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 227, in process
    util.reindex(obj, attributes, update_metadata=metadata)
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 49, in reindex
    catalog._reindexObject(
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/CatalogTool.py", line 368, in _reindexObject
    self.catalog_object(object, uid, idxs, update_metadata)
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/CatalogTool.py", line 335, in catalog_object
    ZCatalog.catalog_object(self, w, uid, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/ZCatalog.py", line 505, in catalog_object
    self._catalog.catalogObject(obj, uid, None, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 338, in catalogObject
    index = self.updateMetadata(object, uid, None)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 289, in updateMetadata
    newDataRecord = self.recordify(object)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 424, in recordify
    attr = attr()
  File "/opt/mysite/src/plone.dexterity/plone/dexterity/content.py", line 423, in UID
    return IUUID(self)
TypeError: ('Could not adapt', <PloneSite at /mysite>, <InterfaceClass plone.uuid.interfaces.IUUID>)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/mysite/eggs/plone.app.viewletmanager-3.1.2-py3.8.egg/plone/app/viewletmanager/manager.py", line 110, in render
    html.append(viewlet.render())
  File "/opt/mysite/eggs/plone.app.layout-4.0.0a1-py3.8.egg/plone/app/layout/viewlets/common.py", line 78, in render
    return self.index()
  File "/opt/mysite/eggs/Zope-5.2.1-py3.8.egg/Products/Five/browser/pagetemplatefile.py", line 126, in __call__
    return self.__func__(__self__, *args, **kw)
  File "/opt/mysite/eggs/Zope-5.2.1-py3.8.egg/Products/Five/browser/pagetemplatefile.py", line 58, in __call__
    s = self.pt_render(
  File "/opt/mysite/eggs/zope.pagetemplate-4.5.0-py3.8.egg/zope/pagetemplate/pagetemplate.py", line 133, in pt_render
    return self._v_program(
  File "/opt/mysite/eggs/Zope-5.2.1-py3.8.egg/Products/PageTemplates/engine.py", line 365, in __call__
    return template.render(**kwargs)
  File "/opt/mysite/eggs/z3c.pt-3.3.0-py3.8.egg/z3c/pt/pagetemplate.py", line 176, in render
    return base_renderer(**context)
  File "/opt/mysite/eggs/Chameleon-3.9.1-py3.8.egg/chameleon/zpt/template.py", line 302, in render
    return super(PageTemplate, self).render(**_kw)
  File "/opt/mysite/eggs/Chameleon-3.9.1-py3.8.egg/chameleon/template.py", line 215, in render
    raise_with_traceback(exc, tb)
  File "/opt/mysite/eggs/Chameleon-3.9.1-py3.8.egg/chameleon/utils.py", line 53, in raise_with_traceback
    raise exc
  File "/opt/mysite/eggs/Chameleon-3.9.1-py3.8.egg/chameleon/template.py", line 192, in render
    self._render(stream, econtext, rcontext)
  File "/opt/mysite/var/cache/3b3d30c878e984b798959ee7a09ad84b.py", line 114, in render
    __value = _static_140203847040688('python', 'view.portal_tabs', econtext=econtext)(_static_140203847040496(econtext, __zt_tmp))
  File "/opt/mysite/eggs/zope.tales-5.1-py3.8.egg/zope/tales/pythonexpr.py", line 73, in __call__
    return eval(self._code, vars)
  File "<string>", line 1, in <module>
  File "/opt/mysite/eggs/plone.memoize-2.1.0-py3.8.egg/plone/memoize/view.py", line 59, in memogetter
    cache[key] = func(*args, **kwargs)
  File "/opt/mysite/eggs/plone.app.layout-4.0.0a1-py3.8.egg/plone/app/layout/viewlets/common.py", line 406, in portal_tabs
    return portal_tabs_view.topLevelTabs()
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/browser/navigation.py", line 146, in topLevelTabs
    rawresult = catalog.searchResults(query)
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/CatalogTool.py", line 412, in searchResults
    processQueue()
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 97, in processQueue
    processed = queue.process()
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 227, in process
    util.reindex(obj, attributes, update_metadata=metadata)
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/indexing.py", line 49, in reindex
    catalog._reindexObject(
  File "/opt/mysite/src/Products.CMFCore/src/Products/CMFCore/CatalogTool.py", line 368, in _reindexObject
    self.catalog_object(object, uid, idxs, update_metadata)
  File "/opt/mysite/src/Products.CMFPlone/Products/CMFPlone/CatalogTool.py", line 335, in catalog_object
    ZCatalog.catalog_object(self, w, uid, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/ZCatalog.py", line 505, in catalog_object
    self._catalog.catalogObject(obj, uid, None, idxs,
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 338, in catalogObject
    index = self.updateMetadata(object, uid, None)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 289, in updateMetadata
    newDataRecord = self.recordify(object)
  File "/opt/mysite/eggs/Products.ZCatalog-6.0-py3.8.egg/Products/ZCatalog/Catalog.py", line 424, in recordify
    attr = attr()
  File "/opt/mysite/src/plone.dexterity/plone/dexterity/content.py", line 423, in UID
    return IUUID(self)
TypeError: ('Could not adapt', <PloneSite at /mysite>, <InterfaceClass plone.uuid.interfaces.IUUID>)

 - Expression: "python:view.portal_tabs"
 - Filename:   ... -4.0.0a1-py3.8.egg/plone/app/layout/viewlets/sections.pt
 - Location:   (line 5: col 29)
 - Source:     ... l:define="portal_tabs python:view.portal_tabs"
                                         ^^^^^^^^^^^^^^^^^^^^^^^
 - Arguments:  template: <Products.Five.browser.pagetemplatefile.ViewPageTemplateFile object at 0x7f83a63a3730>
               options: {}
               args: ()
               nothing: None
               modules: <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter object at 0x7f83c59f9370>
               request: <WSGIRequest, URL=https://mysite.de/portal_catalog/manage_catalogRebuild>
               view: <Products.Five.viewlet.metaconfigure.GlobalSectionsViewlet object at 0x7f83a63219a0>
               context: <CatalogTool at /mysite/portal_catalog>
               views: <Products.Five.browser.pagetemplatefile.ViewMapper object at 0x7f83a633b0d0>
               here: <CatalogTool at /mysite/portal_catalog>
               container: <CatalogTool at /mysite/portal_catalog>
               root: <Application at >
               traverse_subpath: []
               user: <PropertiedUser 'admin'>
               default: <DEFAULT>
               repeat: <Products.PageTemplates.engine.RepeatDictWrapper object at 0x7f83a74cdf80>
               loop: {}
               target_language: None
               translate: <function BaseTemplate.render.<locals>.translate at 0x7f83a62f0a60>
               attrs: {}
2021-09-13 12:53:27,479 ERROR   [Zope.SiteErrorLog:252][waitress-2] 1631530407.47928450.49085621057783957 https://mysite.de/portal_catalog/manage_catalogRebuild
Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 173, in transaction_pubevents
  Module transaction._manager, line 257, in commit
  Module transaction._manager, line 134, in commit
  Module transaction._transaction, line 267, in commit
  Module transaction._transaction, line 333, in _callBeforeCommitHooks
  Module transaction._transaction, line 372, in _call_hooks
  Module Products.CMFCore.indexing, line 317, in before_commit
  Module Products.CMFCore.indexing, line 227, in process
  Module Products.CMFCore.indexing, line 49, in reindex
  Module Products.CMFCore.CatalogTool, line 368, in _reindexObject
  Module Products.CMFPlone.CatalogTool, line 335, in catalog_object
  Module Products.ZCatalog.ZCatalog, line 505, in catalog_object
  Module Products.ZCatalog.Catalog, line 338, in catalogObject
  Module Products.ZCatalog.Catalog, line 289, in updateMetadata
  Module Products.ZCatalog.Catalog, line 424, in recordify
  Module plone.dexterity.content, line 423, in UID
TypeError: ('Could not adapt', <PloneSite at /mysite>, <InterfaceClass plone.uuid.interfaces.IUUID>)

Update: I patched plone.dexterity.content, line 423 with:

def UID(self):
    # Returns the item's globally unique id.
    try:
        return IUUID(self)
    except:
        print(self.id)
        # give me my plone site object id

The indexing run without errors. In the Catalog i found an Catalog Item in the Overview:
Plone Site -> /plone/portal_catalog
But is this the right way? i dont know.

I think the proper way should be to register an indexer that returns an attribute error, I filed an issue and will probably work on that tonite:

This helped also:

def UID(self):
    return IUUID(self, None)
2 Likes

whoa ... just got bitten by this too here :sweat_smile: ... the mentoined upgrade steps did the trick!

Hm ... I have a lineage subsite inside the new DX-Site-Root and my instance get killed with maximum recursion depth ... traceback:

Fatal Python error: Cannot recover from stack overflow.

Thread 0x0000700008524000 (most recent call first):
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 296 in wait
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/task.py", line 72 in handler_thread
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 870 in run
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 926 in _bootstrap_inner
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 890 in _bootstrap

Thread 0x0000700008021000 (most recent call first):
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 296 in wait
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/task.py", line 72 in handler_thread
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 870 in run
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 926 in _bootstrap_inner
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 890 in _bootstrap

Thread 0x0000700007b1e000 (most recent call first):
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 296 in wait
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/task.py", line 72 in handler_thread
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 870 in run
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 926 in _bootstrap_inner
  File "/Users/peterm/.pyenv/versions/3.7.9/lib/python3.7/threading.py", line 890 in _bootstrap

Current thread 0x000070000761b000 (most recent call first):
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/adapter.py", line 975 in _lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 58 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 60 in _uncached_lookup
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.interface-5.4.0-py3.7-macosx-10.15-x86_64.egg/zope/interface/registry.py", line 287 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/zope.component-4.6.2-py3.7.egg/zope/component/_api.py", line 169 in queryUtility
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 75 in lookup_fti
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/schema.py", line 100 in decorator
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.dexterity-2.10.3-py3.7.egg/plone/dexterity/content.py", line 163 in __get__
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/utils.py", line 15 in get_parent
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 114 in _recurse_to_site
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/five.localsitemanager-3.2.2-py3.7.egg/five/localsitemanager/registry.py", line 159 in _wrap
  ...

Thread 0x000000010ee9ae00 (most recent call first):
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/wasyncore.py", line 172 in poll
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/wasyncore.py", line 245 in loop
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/server.py", line 325 in run
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/waitress-2.0.0-py3.7.egg/waitress/__init__.py", line 19 in serve
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.recipe.zope2instance-6.10.1-py3.7.egg/plone/recipe/zope2instance/ctl.py", line 920 in serve_paste
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/plone.recipe.zope2instance-6.10.1-py3.7.egg/plone/recipe/zope2instance/ctl.py", line 945 in serve
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/Zope-5.3-py3.7.egg/Zope2/Startup/serve.py", line 203 in serve
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/Zope-5.3-py3.7.egg/Zope2/Startup/serve.py", line 217 in run
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/Zope-5.3-py3.7.egg/Zope2/Startup/serve.py", line 251 in main
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/eggs/Zope-5.3-py3.7.egg/Zope2/Startup/serve.py", line 255 in <module>
  File "/Volumes/WORKSPACE2/kinderdorf_plone5/parts/instance/bin/interpreter", line 333 in <module>

@jensens @alert @agitator some ideas where to fix this one?