protected void assertMonkeyIslandOrgSanity(int expectedFictional)
      throws ObjectNotFoundException, SchemaException, SecurityViolationException,
          CommunicationException, ConfigurationException {
    Task task =
        taskManager.createTaskInstance(
            AbstractInitializedModelIntegrationTest.class.getName()
                + ".assertMonkeyIslandOrgSanity");
    OperationResult result = task.getResult();

    PrismObject<OrgType> orgGovernorOffice =
        modelService.getObject(OrgType.class, ORG_GOVERNOR_OFFICE_OID, null, task, result);
    result.computeStatus();
    TestUtil.assertSuccess(result);
    OrgType orgGovernorOfficeType = orgGovernorOffice.asObjectable();
    assertEquals(
        "Wrong governor office name",
        PrismTestUtil.createPolyStringType("F0001"),
        orgGovernorOfficeType.getName());

    List<PrismObject<OrgType>> governorSubOrgs =
        searchOrg(ORG_GOVERNOR_OFFICE_OID, OrgFilter.Scope.ONE_LEVEL, task, result);
    if (verbose) display("governor suborgs", governorSubOrgs);
    assertEquals("Unexpected number of governor suborgs", 3, governorSubOrgs.size());

    List<PrismObject<OrgType>> functionalOrgs =
        searchOrg(ORG_GOVERNOR_OFFICE_OID, OrgFilter.Scope.SUBTREE, task, result);
    if (verbose) display("functional orgs (null)", functionalOrgs);
    assertEquals(
        "Unexpected number of functional orgs (null)",
        NUM_FUNCTIONAL_ORGS - 1 + expectedFictional,
        functionalOrgs.size());

    List<PrismObject<OrgType>> prootSubOrgs =
        searchOrg(ORG_PROJECT_ROOT_OID, OrgFilter.Scope.ONE_LEVEL, task, result);
    if (verbose) display("project root suborgs", prootSubOrgs);
    assertEquals("Unexpected number of governor suborgs", 2, prootSubOrgs.size());

    List<PrismObject<OrgType>> projectOrgs =
        searchOrg(ORG_PROJECT_ROOT_OID, OrgFilter.Scope.SUBTREE, task, result);
    if (verbose) display("project orgs (null)", projectOrgs);
    assertEquals(
        "Unexpected number of functional orgs (null)", NUM_PROJECT_ORGS - 1, projectOrgs.size());

    PrismObject<OrgType> orgScummBar =
        modelService.getObject(OrgType.class, ORG_SCUMM_BAR_OID, null, task, result);
    List<AssignmentType> scummBarInducements = orgScummBar.asObjectable().getInducement();
    assertEquals(
        "Unexpected number of scumm bar inducements: " + scummBarInducements,
        1,
        scummBarInducements.size());

    ResultHandler<OrgType> handler = getOrgSanityCheckHandler();
    if (handler != null) {
      modelService.searchObjectsIterative(OrgType.class, null, handler, null, task, result);
    }
  }