from Products.CMFPlone.utils import _createObjectByType
from zExceptions import BadRequest


def upgrade(tool):
    portal = aq_parent(aq_inner(tool))
    setup = portal.portal_setup
    setup.runImportStepFromProfile('profile-bika.lims:default', 'controlpanel')

    try:
        _createObjectByType("SubGroups", portal.bika_setup, "bika_subgroups",
                            title="Sub-groups")
        obj = portal.bika_setup.bika_subgroups
        obj.unmarkCreationFlag()
        obj.reindexObject()
    except BadRequest:
        # folder already exists
        pass

    return True

@@ -1,12 +1,105 @@
+from Acquisition import aq_parent, aq_inner%0Afrom Products.CMFCore.utils import getToolByName%0A
 from Product
@@ -237,16 +237,128 @@
 (tool))%0A
+    at = getToolByName(portal, 'archetype_tool')%0A    at.setCatalogsByType('SubGroup', %5B'bika_setup_catalog', %5D)%0A
     setu

Include catalog setup in 3031 upgrade