1. First, stop your Zope instance (otherwise, you will not be able to open the Data.fs as it will be locked). 2. Then go to a command line (Start->Run->cmd in Windows, or a command shell under Linux). 3. Change to your Zope directory (e.g., C:\Program Files\Zope in Windows, or /usr/local/zope under Linux). 4. Make sure that your PYTHONPATH environment variable is set appropriately: Under Windows: C:\Program Files\Zope>set PYTHONPATH=C:\Program Files\Zope\lib\python Under Linux (assuming bash shell): [user@machine zope]$ PYTHONPATH=/usr/local/zope/lib/python;export PYTHONPATH 5. Run the python interpreter: Win: C:\Program Files\Zope>bin\python Linux: [user@machine zope]$ bin/python 6. At the Python prompt, you will need to import a few of the relevant modules: >> from Zope import app >> from ZODB import POSException # if you're getting a POS Error # you will also need to import the modules for any objects you need to work with, e.g., >> from OFS import DTMLMethod # if it's a DTML Method causing problems >> from AccessControl import User # if it's a User Folder causing problems # if you need to find the appropriate module, look for the objecttype.py in the PYTHONPATH you set earlier. 7. You now need to load your root object: >> root= app() # "root" contains your root object >> obj= root.unrestrictedTraverse(url_to_obj) # replace url_to_obj with the relevant path from your Zope root to the folder throwing the POS exception, e.g., ('/somefolder/problemfolder') 8. Assume, "obj" now contains the folder with the dangling reference; we must find the id belonging to the reference: >> for id,val in obj.objectItems(): ... try: val.getId() ... except POSKeyError: break # "id" should now contain the id with the broken object. 9. You can now delete the "bad" object: >> obj.manage_delObjects(id) >> get_transaction().commit() # The second line is necessary to save your change. 10. In my case, I needed to re-create the bad user folder object: >> obj.manage_addUserFolder('acl_users') >> get_transaction().commit() If you needed to re-create a bad DTMLMethod, it would be something like: >> obj.manage_addDTMLMethod('method_id') >> get_transaction().commit() The script is not complete. You must import "POSKeyError" and "DTMLMethod" and provide "url_to_obj". 11. You can now exit out of the Python command shell (Ctrl-D on Linux, Ctrl-Z then Enter on Windows). Restart your Zope instance, and try accessing the formerly inaccessible object. Hopefully, things will now work for you.