{
  "embedded" : false,
  "maxConnectionAttempts" : 5,
  "security" : {
    "trustManager" : "file",
    "fileBasedTrustManagerType" : "JKS",
    "fileBasedTrustManagerFile" : "&{idm.install.dir}/security/truststore",
    "fileBasedTrustManagerPasswordFile" : "&{idm.install.dir}/security/storepass"
  },
  "ldapConnectionFactories" : {
    "bind" : {
      "connectionSecurity" : "starttls",
      "connectionPoolSize" : 50,
      "heartBeatIntervalSeconds" : 60,
      "heartBeatTimeoutMilliSeconds" : 10000,
      "primaryLdapServers" : [
        {
          "hostname" : "directory.example.com",
          "port" : 1389
        }
      ],
      "secondaryLdapServers" : [
        {
          "hostname" : "directory.example.com",
          "port" : 1389
        }
      ]
    },
    "root": {
      "inheritFrom": "bind",
      "authentication": {
        "simple": {
          "bindDn": "uid=admin",
          "bindPassword": "str0ngAdm1nPa55word"
        }
      }
    }
  },
  "queries": {
    "generic": {
      "query-all-ids": {
        "_queryFilter": "true",
        "_fields": "_id,_rev"
      },
      "credential-query": {
        "_queryFilter": "/userName eq \"${username}\""
      },
      "credential-internaluser-query": {
        "_queryFilter": "/_id eq \"${username}\""
      },
      "get-by-field-value": {
        "_queryFilter": "/${field} eq \"${value}\""
      },
      "for-userName": {
        "_queryFilter": "/userName eq \"${uid}\""
      },
      "query-all": {
        "_queryFilter": "true"
      },
      "links-for-firstId": {
        "_queryFilter": "/linkType eq \"${linkType}\" AND /firstId = \"${firstId}\""
      },
      "links-for-linkType": {
        "_queryFilter": "/linkType eq \"${linkType}\""
      },
      "get-recons": {
        "_queryFilter": "/entryType eq \"summary\"",
        "_fields": "reconId,mapping,activitydate",
        "_sortKeys": "-activitydate"
      },
      "get-notifications-for-user": {
        "_queryFilter": "/receiverId eq \"${userId}\"",
        "_sortKeys": "-createDate"
      },
      "query-cluster-failed-instances": {
        "_queryFilter": "/timestamp le ${timestamp} and (/state eq \"1\" or /state eq \"2\")"
      },
      "query-cluster-running-instances": {
        "_queryFilter": "/state eq 1"
      },
      "query-cluster-instances": {
        "_queryFilter": "true"
      },
      "query-cluster-events": {
        "_queryFilter": "/instanceId eq \"${instanceId}\""
      },
      "find-relationships-for-resource": {
        "_queryFilter": "(/firstResourceCollection eq \"${resourceCollection}\" and /firstResourceId eq \"${resourceId}\" and /firstPropertyName eq \"${propertyName}\") or (/secondResourceCollection eq \"${resourceCollection}\" and /secondResourceId eq \"${resourceId}\" and /secondPropertyName eq \"${propertyName}\")"
      },
      "find-relationship-edges": {
        "_queryFilter": "((/firstResourceCollection eq \"${firstResourceCollection}\" and /firstResourceId eq \"${firstResourceId}\" and /firstPropertyName eq \"${firstPropertyName}\") and (/secondResourceCollection eq \"${secondResourceCollection}\" and /secondResourceId eq \"${secondResourceId}\" and /secondPropertyName eq \"${secondPropertyName}\")) or ((/firstResourceCollection eq \"${secondResourceCollection}\" and /firstResourceId eq \"${secondResourceId}\" and /firstPropertyName eq \"${secondPropertyName}\") and (/secondResourceCollection eq \"${firstResourceCollection}\" and /secondResourceId eq \"${firstResourceId}\" and /secondPropertyName eq \"${firstPropertyName}\"))"
      }
    },
    "explicit": {
      "query-all-ids": {
        "_queryFilter": "true",
        "_fields": "_id,_rev"
      },
      "credential-query": {
        "_queryFilter": "/userName eq \"${username}\""
      },
      "credential-internaluser-query": {
        "_queryFilter": "/_id eq \"${username}\""
      },
      "links-for-firstId": {
        "_queryFilter": "/linkType eq \"${linkType}\" AND /firstId = \"${firstId}\""
      },
      "links-for-linkType": {
        "_queryFilter": "/linkType eq \"${linkType}\""
      },
      "for-userName": {
        "_queryFilter": "/userName eq \"${uid}\""
      },
      "query-all": {
        "_queryFilter": "true"
      }
    }
  },
  "commands": {
    "delete-mapping-links": {
      "_queryFilter": "/linkType eq \"${mapping}\"",
      "operation": "DELETE"
    },
    "delete-target-ids-for-recon": {
      "_queryFilter": "/reconId eq \"${reconId}\"",
      "operation": "DELETE"
    }
  },
  "rest2LdapOptions": {
    "readOnUpdatePolicy": "controls",
    "useSubtreeDelete": false,
    "usePermissiveModify": true,
    "useMvcc": true,
    "mvccAttribute": "etag"
  },
  "resourceMapping": {
    "defaultMapping": {
      "dnTemplate": "ou=generic,dc=openidm,dc=forgerock,dc=io"
    },
    "explicitMapping": {
      "internal/user": {
        "dnTemplate": "ou=users,ou=internal,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [ "uidObject", "fr-idm-internal-user" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "uid", "isRequired": true, "writability": "createOnly"
          },
          "password": {
            "type": "json", "ldapAttribute": "fr-idm-password"
          }
        }
      },
      "internal/role": {
        "dnTemplate": "ou=roles,ou=internal,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "fr-idm-internal-role"
        ],
        "properties": {
          "_id": {
            "type": "simple",
            "ldapAttribute": "cn",
            "isRequired": true,
            "writability": "createOnly"
          },
          "name": {
            "type": "simple",
            "ldapAttribute": "fr-idm-name"
          },
          "description": {
            "type": "simple",
            "ldapAttribute": "description"
          },
          "temporalConstraints": {
            "type": "json",
            "ldapAttribute": "fr-idm-temporal-constraints",
            "isMultiValued": true
          },
          "condition": {
            "type": "simple",
            "ldapAttribute": "fr-idm-condition"
          },
          "privileges" : {
            "type": "json", "ldapAttribute": "fr-idm-privilege", "isMultiValued": true
          },
          "authzMembers" : {
            "isMultiValued" : true,
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "authzRoles"
          }
        }
      },
      "locks": {
        "dnTemplate": "ou=locks,ou=internal,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-lock"
        ],
        "properties": {
          "_id": {
            "type": "simple",
            "ldapAttribute": "uid",
            "isRequired": true,
            "writability": "createOnly"
          },
          "nodeId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-lock-nodeid"
          }
        }
      },
      "sync/queue": {
        "dnTemplate": "ou=queue,ou=sync,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-syncqueue"
        ],
        "properties": {
          "_id": {
            "type": "simple",
            "ldapAttribute": "uid",
            "isRequired": true,
            "writability": "createOnly"
          },
          "syncAction": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-syncaction"
          },
          "resourceCollection": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-resourcecollection"
          },
          "resourceId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-resourceid"
          },
          "mapping": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-mapping"
          },
          "objectRev": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-objectRev"
          },
          "oldObject": {
            "type": "json",
            "ldapAttribute": "fr-idm-syncqueue-oldobject"
          },
          "newObject": {
            "type": "json",
            "ldapAttribute": "fr-idm-syncqueue-newobject"
          },
          "context": {
            "type": "json",
            "ldapAttribute": "fr-idm-syncqueue-context"
          },
          "state": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-state"
          },
          "nodeId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-nodeid"
          },
          "remainingRetries": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-remainingretries"
          },
          "createDate": {
            "type": "simple",
            "ldapAttribute": "fr-idm-syncqueue-createdate"
          }
        }
      },
      "link": {
        "dnTemplate": "ou=links,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-link"
        ],
        "properties": {
          "_id": {
            "type": "simple",
            "ldapAttribute": "uid",
            "isRequired": true,
            "writability": "createOnly"
          },
          "linkType": {
            "type": "simple",
            "ldapAttribute": "fr-idm-link-type"
          },
          "linkQualifier": {
            "type": "simple",
            "ldapAttribute": "fr-idm-link-qualifier"
          },
          "firstId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-link-firstId"
          },
          "secondId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-link-secondId"
          }
        }
      },
      "clusteredrecontargetids": {
        "dnTemplate": "ou=clusteredrecontargetids,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-recon-clusteredTargetIds"
        ],
        "properties": {
          "_id": {
            "type": "simple",
            "ldapAttribute": "uid",
            "isRequired": true,
            "writability": "createOnly"
          },
          "reconId": {
            "type": "simple",
            "ldapAttribute": "fr-idm-recon-id"
          },
          "targetIds": {
            "type": "json",
            "ldapAttribute": "fr-idm-recon-targetIds"
          }
        }
      },
      "managed/user": {
        "dnTemplate": "ou=people,ou=identities",
        "namingStrategy": {
          "type": "clientDnNaming",
          "dnAttribute": "fr-idm-uuid"
        },
        "nativeId" : false,
        "objectClasses": [
          "person",
          "organizationalPerson",
          "inetOrgPerson",
          "iplanet-am-user-service",
          "devicePrintProfilesContainer",
          "kbaInfoContainer",
          "fr-idm-managed-user-explicit",
          "forgerock-am-dashboard-service",
          "inetuser",
          "iplanet-am-auth-configuration-service",
          "iplanet-am-managed-person",
          "iPlanetPreferences",
          "oathDeviceProfilesContainer",
          "pushDeviceProfilesContainer",
          "sunAMAuthAccountLockout",
          "sunFMSAML2NameIdentifier",
          "webauthnDeviceProfilesContainer"
        ],
        "properties": {
          "_id": {
            "primaryKey": true,
            "type": "simple",
            "ldapAttribute": "fr-idm-uuid"
          },
          "_rev": {
            "type": "simple",
            "ldapAttribute": "etag"
          },
          "userName": {
            "type": "simple",
            "ldapAttribute": "uid"
          },
          "cn": {
            "type": "simple",
            "ldapAttribute": "cn"
          },
          "password": {
            "type": "simple",
            "ldapAttribute": "userPassword"
          },
          "accountStatus": {
            "type": "simple",
            "ldapAttribute": "inetUserStatus"
          },
          "effectiveRoles": {
            "type": "json",
            "ldapAttribute": "fr-idm-effectiveRole",
            "isMultiValued": true
          },
          "effectiveAssignments": {
            "type": "json",
            "ldapAttribute": "fr-idm-effectiveAssignment",
            "isMultiValued": true
          },
          "postalCode": {
            "type": "simple",
            "ldapAttribute": "postalCode"
          },
          "stateProvince": {
            "type": "simple",
            "ldapAttribute": "st"
          },
          "postalAddress": {
            "type": "simple",
            "ldapAttribute": "street"
          },
          "displayName": {
            "type": "simple",
            "ldapAttribute": "displayName"
          },
          "description": {
            "type": "simple",
            "ldapAttribute": "description"
          },
          "country": {
            "type": "simple",
            "ldapAttribute": "co"
          },
          "city": {
            "type": "simple",
            "ldapAttribute": "l"
          },
          "givenName": {
            "type": "simple",
            "ldapAttribute": "givenName"
          },
          "profileImage": {
            "type": "simple",
            "ldapAttribute": "labeledURI"
          },
          "sn": {
            "type": "simple",
            "ldapAttribute": "sn"
          },
          "telephoneNumber": {
            "type": "simple",
            "ldapAttribute": "telephoneNumber"
          },
          "mail": {
            "type": "simple",
            "ldapAttribute": "mail"
          },
          "organizationName": {
            "type": "simple",
            "ldapAttribute": "organizationName"
          },
          "lastSync": {
            "type": "json",
            "ldapAttribute": "fr-idm-lastSync"
          },
          "consentedMappings": {
            "type": "json",
            "ldapAttribute": "fr-idm-consentedMapping",
            "isMultiValued": true
          },
          "kbaInfo": {
            "type": "json",
            "ldapAttribute": "fr-idm-kbaInfo",
            "isMultiValued": true
          },
          "preferences": {
            "type": "json",
            "ldapAttribute": "fr-idm-preferences"
          },
          "aliasList" : {
            "type" : "simple",
            "ldapAttribute" : "iplanet-am-user-alias-list",
            "isMultiValued" : true
          },
          "assignedDashboard" :  {
            "type" : "simple",
            "ldapAttribute" : "assignedDashboard",
            "isMultiValued" : true
          },
          "roles" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-user-roles",
            "primaryKey" : "uid",
            "resourcePath" : "managed/role",
            "isMultiValued" : true
          },
          "reports" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "manager",
            "isMultiValued" : true
          },
          "manager" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-user-manager",
            "primaryKey" : "uid",
            "resourcePath" : "managed/user",
            "isMultiValued" : false
          },
          "_meta" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-user-meta",
            "primaryKey" : "uid",
            "resourcePath" : "internal/usermeta",
            "isMultiValued" : false
          },
          "_notifications" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-user-notifications",
            "primaryKey" : "uid",
            "resourcePath" : "internal/notification",
            "isMultiValued" : true
          },
          "authzRoles" : {
            "isMultiValued" : true,
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-user-authzroles-internal-role",
            "primaryKey" : "cn",
            "resourcePath" : "internal/role"
          },
          "ownerOfOrg" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-organization-owner",
            "primaryKey" : "uid",
            "resourcePath" : "managed/organization",
            "isMultiValued" : true
          },
          "adminOfOrg" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-organization-admin",
            "primaryKey" : "uid",
            "resourcePath" : "managed/organization",
            "isMultiValued" : true
          },
          "memberOfOrg" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-organization-member",
            "primaryKey" : "uid",
            "resourcePath" : "managed/organization",
            "isMultiValued" : true
          },
          "memberOfOrgIDs" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-managed-user-memberoforgid",
            "isMultiValued" : true
          }
        }
      },
      "dsconfig/passwordPolicies" : {
        "dnTemplate": "cn=Password Policies,cn=config",
        "objectClasses": [ "ds-cfg-password-policy", "ds-cfg-authentication-policy" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "passwordAttribute" : {
            "type": "simple", "ldapAttribute": "ds-cfg-password-attribute", "isRequired": true
          },
          "defaultPasswordStorageScheme": {
            "type": "simple", "ldapAttribute": "ds-cfg-default-password-storage-scheme", "isMultiValued" : true , "isRequired": true
          },
          "validator" : {
            "type": "simple", "ldapAttribute": "ds-cfg-password-validator", "isMultiValued" : true
          },
          "passwordHistoryCount" : {
            "type": "simple", "ldapAttribute": "ds-cfg-password-history-count"
          },
          "maxPasswordAge" : {
            "type": "simple", "ldapAttribute": "ds-cfg-max-password-age"
          },
          "allowExpiredPasswordChanges": {
            "type": "simple", "ldapAttribute": "ds-cfg-allow-expired-password-changes"
          },
          "expirePasswordsWithoutWarning": {
            "type": "simple", "ldapAttribute": "ds-cfg-expire-passwords-without-warning"
          },
          "passwordExpirationInterval": {
            "type": "simple", "ldapAttribute": "ds-cfg-password-expiration-warning-interval"
          }
        }
      },
      "dsconfig/lengthBased" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-length-based-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "minPasswordLength" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-password-length"
          },
          "maxPasswordLength" : {
            "type": "simple", "ldapAttribute": "ds-cfg-max-password-length"
          }
        }
      },
      "dsconfig/attributeValue" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-attribute-value-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "testReversedPassword": {
            "type": "simple", "ldapAttribute": "ds-cfg-test-reversed-password", "isRequired": true
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "matchAttribute" : {
            "type": "simple", "ldapAttribute": "ds-cfg-match-attribute", "isMultiValued" : true
          },
          "checkSubstrings" : {
            "type": "simple", "ldapAttribute": "ds-cfg-check-substrings"
          },
          "minSubstringLength" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-substring-length"
          }
        }
      },
      "dsconfig/characterSet" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-character-set-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "allowUnclassifiedCharacters" : {
            "type": "simple", "ldapAttribute": "ds-cfg-allow-unclassified-characters", "isRequired": true
          },
          "minCharacterSets" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-character-sets"
          },
          "characterSet" : {
            "type": "simple", "ldapAttribute": "ds-cfg-character-set", "isMultiValued" : true
          }
        }
      },
      "dsconfig/dictionary" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-dictionary-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "dictionaryFile" : {
            "type": "simple", "ldapAttribute": "ds-cfg-dictionary-file", "isRequired": true
          },
          "caseSensitiveValidation" : {
            "type": "simple", "ldapAttribute": "ds-cfg-case-sensitive-validation", "isRequired": true
          },
          "testReversedPassword" : {
            "type": "simple", "ldapAttribute": "ds-cfg-test-reversed-password", "isRequired": true
          },
          "checkSubstrings" : {
            "type": "simple", "ldapAttribute": "ds-cfg-check-substrings"
          },
          "minSubstringLength" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-substring-length"
          }
        }
      },
      "dsconfig/repeatedCharacters" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-repeated-characters-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "maxConsecutiveLength" : {
            "type": "simple", "ldapAttribute": "ds-cfg-max-consecutive-length", "isRequired": true
          },
          "caseSensitiveValidation" : {
            "type": "simple", "ldapAttribute": "ds-cfg-case-sensitive-validation", "isRequired": true
          }
        }
      },
      "dsconfig/similarityBased" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-similarity-based-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "minPasswordDifference" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-password-difference", "isRequired": true
          }
        }
      },
      "dsconfig/uniqueCharacters" : {
        "dnTemplate": "cn=Password Validators,cn=config",
        "objectClasses": [ "ds-cfg-password-validator", "ds-cfg-unique-characters-password-validator" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class"
          },
          "minUniqueCharacters" : {
            "type": "simple", "ldapAttribute": "ds-cfg-min-unique-characters", "isRequired": true
          },
          "caseSensitiveValidation" : {
            "type": "simple", "ldapAttribute": "ds-cfg-case-sensitive-validation", "isRequired": true
          }
        }
      },
      "dsconfig/userDefinedVirtualAttribute" : {
        "dnTemplate": "cn=Virtual Attributes,cn=config",
        "objectClasses": [ "ds-cfg-user-defined-virtual-attribute", "ds-cfg-virtual-attribute" ],
        "properties": {
          "_id": {
            "type": "simple", "ldapAttribute": "cn", "isRequired": true, "writability": "createOnly"
          },
          "javaClass" : {
            "type": "simple", "ldapAttribute": "ds-cfg-java-class", "isRequired": true
          },
          "enabled" : {
            "type": "simple", "ldapAttribute": "ds-cfg-enabled", "isRequired": true
          },
          "attributeType" : {
            "type": "simple", "ldapAttribute": "ds-cfg-attribute-type", "isRequired": true
          },
          "baseDn" : {
            "type": "simple", "ldapAttribute": "ds-cfg-base-dn", "isMultiValued" : true
          },
          "scope" : {
            "type": "simple", "ldapAttribute": "ds-cfg-scope"
          },
          "groupDn" : {
            "type": "simple", "ldapAttribute": "ds-cfg-group-dn"
          },
          "filter" : {
            "type": "simple", "ldapAttribute": "ds-cfg-filter", "isMultiValued" : true
          },
          "conflictBehavior" : {
            "type": "simple", "ldapAttribute": "ds-cfg-conflict-behavior"
          },
          "value" : {
            "type": "simple", "ldapAttribute": "ds-cfg-value", "isMultiValued" : true, "isRequired": true
          }
        }
      },
      "recon/assoc" : {
        "dnTemplate" : "ou=assoc,ou=recon,dc=openidm,dc=forgerock,dc=io",
        "namingStrategy" : {
          "dnAttribute" : "fr-idm-reconassoc-reconid",
          "type" : "clientDnNaming"
        },
        "objectClasses" : [
          "fr-idm-reconassoc"
        ],
        "properties" : {
          "_id" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-reconid",
            "isRequired" : true
          },
          "mapping" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-mapping"
          },
          "sourceResourceCollection" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-sourceresourcecollection"
          },
          "targetResourceCollection" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-targetresourcecollection"
          },
          "isAnalysis" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-isanalysis"
          },
          "finishTime" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-finishtime"
          }
        },
        "subResources" : {
          "entry" : {
            "type" : "collection",
            "resource" : "recon-assoc-entry",
            "namingStrategy" : {
              "dnAttribute" : "uid",
              "type" : "clientDnNaming"
            }
          }
        }
      },
      "recon/assoc/entry" : {
        "resourceName" : "recon-assoc-entry",
        "objectClasses" : [
          "uidObject",
          "fr-idm-reconassocentry"
        ],
        "subResourceRouting" : [
          {
            "template" : "recon/assoc/{reconId}/entry",
            "prefix" : "entry"
          }
        ],
        "properties" : {
          "_id" : {
            "type" : "simple",
            "ldapAttribute" : "uid",
            "isRequired" : true
          },
          "reconId" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-reconid"
          },
          "linkQualifier" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-linkqualifier"
          },
          "status" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-status"
          },
          "situation" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-situation"
          },
          "action" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-action"
          },
          "phase" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-phase"
          },
          "sourceObjectId" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-sourceObjectId"
          },
          "targetObjectId" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-targetObjectId"
          },
          "exception" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-exception"
          },
          "message" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-message"
          },
          "messageDetail" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-messagedetail"
          },
          "ambiguousTargetObjectIds" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassocentry-ambiguoustargetobjectids"
          },
          "mapping" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-mapping"
          },
          "sourceResourceCollection" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-sourceresourcecollection"
          },
          "targetResourceCollection" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-targetresourcecollection"
          },
          "isAnalysis" : {
            "type" : "simple",
            "ldapAttribute" : "fr-idm-reconassoc-isanalysis"
          }
        }
      }
    },
    "genericMapping": {
      "config": {
        "dnTemplate": "ou=config,dc=openidm,dc=forgerock,dc=io"
      },
      "ui/*": {
        "dnTemplate": "ou=ui,dc=openidm,dc=forgerock,dc=io"
      },
      "managed/*": {
        "dnTemplate": "ou=managed,dc=openidm,dc=forgerock,dc=io"
      },
      "managed/role": {
        "dnTemplate": "ou=role,ou=managed,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-managed-role"
        ],
        "jsonAttribute": "fr-idm-managed-role-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatchManagedRole",
        "properties" : {
          "members" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "roles",
            "isMultiValued" : true
          }
        }
      },
      "managed/organization" : {
        "dnTemplate" : "ou=organization,ou=managed,dc=openidm,dc=forgerock,dc=io",
        "objectClasses" : [
          "uidObject",
          "fr-idm-managed-organization"
        ],
        "jsonAttribute" : "fr-idm-managed-organization-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatch",
        "properties" : {
          "_id" : {
            "type": "simple", "ldapAttribute": "uid"
          },
          "name" : {
            "type": "simple", "ldapAttribute": "fr-idm-managed-organization-name"
          },
          "parent" : {
            "type" : "reference",
            "ldapAttribute" : "fr-idm-managed-organization-parent",
            "primaryKey" : "uid",
            "resourcePath" : "managed/organization"
          },
          "children" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/organization",
            "propertyName" : "parent",
            "isMultiValued" : true
          },
          "owners" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "ownerOfOrg",
            "isMultiValued" : true
          },
          "admins" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "adminOfOrg",
            "isMultiValued" : true
          },
          "members" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "memberOfOrg",
            "isMultiValued" : true
          }
        }
      },
      "scheduler": {
        "dnTemplate": "ou=scheduler,dc=openidm,dc=forgerock,dc=io"
      },
      "scheduler/*": {
        "dnTemplate": "ou=scheduler,dc=openidm,dc=forgerock,dc=io"
      },
      "cluster/*": {
        "dnTemplate": "ou=cluster,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-cluster-obj"
        ],
        "jsonAttribute": "fr-idm-cluster-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatchClusterObject"
      },
      "relationships": {
        "dnTemplate": "ou=relationships,dc=openidm,dc=forgerock,dc=io",
        "objectClasses": [
          "uidObject",
          "fr-idm-relationship"
        ],
        "jsonAttribute": "fr-idm-relationship-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatchRelationship"
      },
      "updates": {
        "dnTemplate": "ou=updates,dc=openidm,dc=forgerock,dc=io"
      },
      "import": {
        "dnTemplate": "ou=import,dc=openidm,dc=forgerock,dc=io"
      },
      "import/*": {
        "dnTemplate": "ou=import,dc=openidm,dc=forgerock,dc=io"
      },
      "reconprogressstate": {
        "dnTemplate": "ou=reconprogressstate,dc=openidm,dc=forgerock,dc=io"
      },
      "jsonstorage": {
        "dnTemplate": "ou=jsonstorage,dc=openidm,dc=forgerock,dc=io"
      },
      "internal/usermeta" : {
        "dnTemplate": "ou=usermeta,ou=internal,dc=openidm,dc=forgerock,dc=io",
        "objectClasses" : [ "uidObject", "fr-idm-generic-obj" ],
        "jsonAttribute" : "fr-idm-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatch",
        "properties": {
          "target" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "_meta"
          }
        }
      },
      "internal/notification" : {
        "dnTemplate": "ou=notification,ou=internal,dc=openidm,dc=forgerock,dc=io",
        "objectClasses" : [ "uidObject", "fr-idm-notification" ],
        "jsonAttribute" : "fr-idm-notification-json",
        "jsonQueryEqualityMatchingRule" : "caseIgnoreJsonQueryMatch",
        "properties": {
          "target" : {
            "type" : "reverseReference",
            "resourcePath" : "managed/user",
            "propertyName" : "_notifications"
          }
        }
      },
      "file" : {
        "dnTemplate": "ou=file,dc=openidm,dc=forgerock,dc=io"
      }
    }
  }
}
