Cool! Good to see all of the clean-up work on the zope dependencies that&#39;s gone into the ZTK finally landing in Grok.<div><br></div><div>What&#39;s the recommended process for dealing with objects that have moved? Specifically, I&#39;m assuming that I&#39;m getting the following error:</div>
<div><br></div><div><div>  File &quot;/Users/kteague/.eggs/zope.app.appsetup-3.14.0-py2.6.egg/zope/app/appsetup/bootstrap.py&quot;, line 77, in ensureUtility</div><div>    if (reg.provided.isOrExtends(interface) and <a href="http://reg.name">reg.name</a> == name)]</div>
<div>AttributeError: type object &#39;IClientIdManager&#39; has no attribute &#39;isOrExtends&#39;</div></div><div><br></div><div>Because of the move of the persistent session objects from zope.app.session to zope.session:</div>
<div><br></div><div><div>(Pdb) for reg in sm.registeredUtilities(): print reg</div></div><div>UtilityRegistration(&lt;LocalSiteManager ++etc++site&gt;, ISessionDataContainer, &#39;&#39;, broken object, None, u&#39;&#39;)</div>
<div><div>UtilityRegistration(&lt;LocalSiteManager ++etc++site&gt;, IPrincipalAnnotationUtility, &#39;&#39;, PrincipalAnnotation, None, u&#39;&#39;)</div><div>UtilityRegistration(&lt;LocalSiteManager ++etc++site&gt;, IErrorReportingUtility, &#39;&#39;, RootErrorReportingUtility, None, u&#39;&#39;)</div>
<div>UtilityRegistration(&lt;LocalSiteManager ++etc++site&gt;, IClientIdManager, &#39;&#39;, broken object, None, u&#39;&#39;)</div></div><div><br></div><div>Is there an established way of fixing these objects?</div>