diff --git a/.gitignore b/.gitignore index a8cf0c4de..f944eea50 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,8 @@ venv.bak/ # PyCharm settings .idea + +# Certs +**/*.cert +**/*.key +**/*.pem diff --git a/common/utilities/test_utilities.py b/common/utilities/test_utilities.py new file mode 100644 index 000000000..9cc9d36cb --- /dev/null +++ b/common/utilities/test_utilities.py @@ -0,0 +1,18 @@ +import asyncio + + +def async_test(f): + """ + A wrapper for asynchronous tests. + By default unittest will not wait for asynchronous tests to complete even if the async functions are awaited. + By annotating a test method with `@async_test` it will cause the test to wait for asynchronous activities + to complete + :param f: + :return: + """ + def wrapper(*args, **kwargs): + coro = asyncio.coroutine(f) + future = coro(*args, **kwargs) + asyncio.run(future) + + return wrapper diff --git a/mhs-reference-implementation/Pipfile b/mhs-reference-implementation/Pipfile index 32bccd304..2c9127c57 100644 --- a/mhs-reference-implementation/Pipfile +++ b/mhs-reference-implementation/Pipfile @@ -9,6 +9,7 @@ verify_ssl = true integration-adaptors-common = {editable = true,path = "./../common"} requests = "*" tornado = "*" +ldap3 = "*" [requires] python_version = "3.7" diff --git a/mhs-reference-implementation/Pipfile.lock b/mhs-reference-implementation/Pipfile.lock index 8c649f100..946a4000e 100644 --- a/mhs-reference-implementation/Pipfile.lock +++ b/mhs-reference-implementation/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "efffaf432c115426b129982b52b022d2d3e9a1545c2202812cadfb07abc0cf6d" + "sha256": "55ef3ca275ab652b135d1fc45f7dab2dacb036be03f0162f4d48e297a82f7e90" }, "pipfile-spec": 6, "requires": { @@ -18,10 +18,10 @@ "default": { "certifi": { "hashes": [ - "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", - "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + "sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", + "sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" ], - "version": "==2019.3.9" + "version": "==2019.6.16" }, "chardet": { "hashes": [ @@ -41,36 +41,49 @@ "editable": true, "path": "./../common" }, + "ldap3": { + "hashes": [ + "sha256:0533eefc18d5ce0532f07fe1ce4e1f27128e1073845a6bf39fef2c828a401bb8", + "sha256:a92e380a0265963dc5507580ecd51eb84677e00c3d7800517b6442ef046f6ece" + ], + "index": "pypi", + "version": "==2.6" + }, "lxml": { "hashes": [ - "sha256:03984196d00670b2ab14ae0ea83d5cc0cfa4f5a42558afa9ab5fa745995328f5", - "sha256:0815b0c9f897468de6a386dc15917a0becf48cc92425613aa8bbfc7f0f82951f", - "sha256:175f3825f075cf02d15099eb52658457cf0ff103dcf11512b5d2583e1d40f58b", - "sha256:30e14c62d88d1e01a26936ecd1c6e784d4afc9aa002bba4321c5897937112616", - "sha256:3210da6f36cf4b835ff1be853962b22cc354d506f493b67a4303c88bbb40d57b", - "sha256:40f60819fbd5bad6e191ba1329bfafa09ab7f3f174b3d034d413ef5266963294", - "sha256:43b26a865a61549919f8a42e094dfdb62847113cf776d84bd6b60e4e3fc20ea3", - "sha256:4a03dd682f8e35a10234904e0b9508d705ff98cf962c5851ed052e9340df3d90", - "sha256:62f382cddf3d2e52cf266e161aa522d54fd624b8cc567bc18f573d9d50d40e8e", - "sha256:7b98f0325be8450da70aa4a796c4f06852949fe031878b4aa1d6c417a412f314", - "sha256:846a0739e595871041385d86d12af4b6999f921359b38affb99cdd6b54219a8f", - "sha256:a3080470559938a09a5d0ec558c005282e99ac77bf8211fb7b9a5c66390acd8d", - "sha256:ad841b78a476623955da270ab8d207c3c694aa5eba71f4792f65926dc46c6ee8", - "sha256:afdd75d9735e44c639ffd6258ce04a2de3b208f148072c02478162d0944d9da3", - "sha256:b4fbf9b552faff54742bcd0791ab1da5863363fb19047e68f6592be1ac2dab33", - "sha256:b90c4e32d6ec089d3fa3518436bdf5ce4d902a0787dbd9bb09f37afe8b994317", - "sha256:b91cfe4438c741aeff662d413fd2808ac901cc6229c838236840d11de4586d63", - "sha256:bdb0593a42070b0a5f138b79b872289ee73c8e25b3f0bea6564e795b55b6bcdd", - "sha256:c4e4bca2bb68ce22320297dfa1a7bf070a5b20bcbaec4ee023f83d2f6e76496f", - "sha256:cec4ab14af9eae8501be3266ff50c3c2aecc017ba1e86c160209bb4f0423df6a", - "sha256:e83b4b2bf029f5104bc1227dbb7bf5ace6fd8fabaebffcd4f8106fafc69fc45f", - "sha256:e995b3734a46d41ae60b6097f7c51ba9958648c6d1e0935b7e0ee446ee4abe22", - "sha256:f679d93dec7f7210575c85379a31322df4c46496f184ef650d3aba1484b38a2d", - "sha256:fd213bb5166e46974f113c8228daaef1732abc47cb561ce9c4c8eaed4bd3b09b", - "sha256:fdcb57b906dbc1f80666e6290e794ab8fb959a2e17aa5aee1758a85d1da4533f", - "sha256:ff424b01d090ffe1947ec7432b07f536912e0300458f9a7f48ea217dd8362b86" + "sha256:06c7616601430aa140a69f97e3116308fffe0848f543b639a5ec2e8920ae72fd", + "sha256:177202792f9842374a8077735c69c41a4282183f7851443d2beb8ee310720819", + "sha256:19317ad721ceb9e39847d11131903931e2794e447d4751ebb0d9236f1b349ff2", + "sha256:36d206e62f3e5dbaafd4ec692b67157e271f5da7fd925fda8515da675eace50d", + "sha256:387115b066c797c85f9861a9613abf50046a15aac16759bc92d04f94acfad082", + "sha256:3ce1c49d4b4a7bc75fb12acb3a6247bb7a91fe420542e6d671ba9187d12a12c2", + "sha256:4d2a5a7d6b0dbb8c37dab66a8ce09a8761409c044017721c21718659fa3365a1", + "sha256:58d0a1b33364d1253a88d18df6c0b2676a1746d27c969dc9e32d143a3701dda5", + "sha256:62a651c618b846b88fdcae0533ec23f185bb322d6c1845733f3123e8980c1d1b", + "sha256:69ff21064e7debc9b1b1e2eee8c2d686d042d4257186d70b338206a80c5bc5ea", + "sha256:7060453eba9ba59d821625c6af6a266bd68277dce6577f754d1eb9116c094266", + "sha256:7d26b36a9c4bce53b9cfe42e67849ae3c5c23558bc08363e53ffd6d94f4ff4d2", + "sha256:83b427ad2bfa0b9705e02a83d8d607d2c2f01889eb138168e462a3a052c42368", + "sha256:923d03c84534078386cf50193057aae98fa94cace8ea7580b74754493fda73ad", + "sha256:b773715609649a1a180025213f67ffdeb5a4878c784293ada300ee95a1f3257b", + "sha256:baff149c174e9108d4a2fee192c496711be85534eab63adb122f93e70aa35431", + "sha256:bca9d118b1014b4c2d19319b10a3ebed508ff649396ce1855e1c96528d9b2fa9", + "sha256:ce580c28845581535dc6000fc7c35fdadf8bea7ccb57d6321b044508e9ba0685", + "sha256:d34923a569e70224d88e6682490e24c842907ba2c948c5fd26185413cbe0cd96", + "sha256:dd9f0e531a049d8b35ec5e6c68a37f1ba6ec3a591415e6804cbdf652793d15d7", + "sha256:ecb805cbfe9102f3fd3d2ef16dfe5ae9e2d7a7dfbba92f4ff1e16ac9784dbfb0", + "sha256:ede9aad2197a0202caff35d417b671f5f91a3631477441076082a17c94edd846", + "sha256:ef2d1fc370400e0aa755aab0b20cf4f1d0e934e7fd5244f3dd4869078e4942b9", + "sha256:f2fec194a49bfaef42a548ee657362af5c7a640da757f6f452a35da7dd9f923c" + ], + "version": "==4.3.4" + }, + "pyasn1": { + "hashes": [ + "sha256:da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7", + "sha256:da6b43a8c9ae93bc80e2739efb38cc776ba74a886e3e9318d65fe81a8b8a2c6e" ], - "version": "==4.3.3" + "version": "==0.4.5" }, "pystache": { "hashes": [ @@ -80,31 +93,31 @@ }, "requests": { "hashes": [ - "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", - "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b" + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" ], "index": "pypi", - "version": "==2.21.0" + "version": "==2.22.0" }, "tornado": { "hashes": [ - "sha256:1174dcb84d08887b55defb2cda1986faeeea715fff189ef3dc44cce99f5fca6b", - "sha256:2613fab506bd2aedb3722c8c64c17f8f74f4070afed6eea17f20b2115e445aec", - "sha256:44b82bc1146a24e5b9853d04c142576b4e8fa7a92f2e30bc364a85d1f75c4de2", - "sha256:457fcbee4df737d2defc181b9073758d73f54a6cfc1f280533ff48831b39f4a8", - "sha256:49603e1a6e24104961497ad0c07c799aec1caac7400a6762b687e74c8206677d", - "sha256:8c2f40b99a8153893793559919a355d7b74649a11e59f411b0b0a1793e160bc0", - "sha256:e1d897889c3b5a829426b7d52828fb37b28bc181cd598624e65c8be40ee3f7fa" + "sha256:349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c", + "sha256:398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60", + "sha256:4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281", + "sha256:559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5", + "sha256:abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7", + "sha256:c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9", + "sha256:c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5" ], "index": "pypi", - "version": "==6.0.2" + "version": "==6.0.3" }, "urllib3": { "hashes": [ - "sha256:2393a695cd12afedd0dcb26fe5d50d0cf248e5a66f75dbd89a3d4eb333a61af4", - "sha256:a637e5fae88995b256e3409dc4d52c2e2e0ba32c42a6365fee8bbd2238de3cfb" + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" ], - "version": "==1.24.3" + "version": "==1.25.3" } }, "develop": {} diff --git a/mhs-reference-implementation/mhs/routing/__init__.py b/mhs-reference-implementation/mhs/routing/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mhs-reference-implementation/mhs/routing/routing_exception.py b/mhs-reference-implementation/mhs/routing/routing_exception.py new file mode 100644 index 000000000..ff2c00fa9 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/routing_exception.py @@ -0,0 +1,9 @@ + + +class RoutingException(Exception): + """ + A RoutingException is thrown when an issue arises with the LDAP response, + particularly when no response is returned from the LDAP query. + """ + + pass diff --git a/mhs-reference-implementation/mhs/routing/sds.py b/mhs-reference-implementation/mhs/routing/sds.py new file mode 100644 index 000000000..9b0decb26 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/sds.py @@ -0,0 +1,117 @@ +import asyncio +import logging +import ldap3 +from mhs.routing import routing_exception +import ldap3.core.exceptions as ldap_exceptions +from typing import Dict, List + +logger = logging.getLogger(__name__) + +NHS_SERVICES_BASE = "ou=services, o=nhs" + +MHS_OBJECT_CLASS = "nhsMhs" +AS_OBJECT_CLASS = "nhsAs" +MHS_PARTY_KEY = 'nhsMHSPartyKey' + +mhs_attributes = [ + 'nhsEPInteractionType', 'nhsIDCode', 'nhsMhsCPAId', 'nhsMHSEndPoint', 'nhsMhsFQDN', + 'nhsMHsIN', 'nhsMHSIsAuthenticated', 'nhsMHSPartyKey', 'nhsMHsSN', 'nhsMhsSvcIA', 'nhsProductKey', + 'uniqueIdentifier', 'nhsMHSAckRequested', 'nhsMHSActor', 'nhsMHSDuplicateElimination', + 'nhsMHSPersistDuration', 'nhsMHSRetries', 'nhsMHSRetryInterval', 'nhsMHSSyncReplyMode' +] + + +class SDSClient: + + def __init__(self, sds_connection: ldap3.Connection, timeout: int = 3): + """ + :param sds_connection: takes an ldap connection to the sds server + """ + if not sds_connection: + raise ValueError('sds_connection must not be null') + + self.connection = sds_connection + self.timeout = timeout + + async def get_mhs_details(self, ods_code: str, interaction_id: str) -> Dict: + """ + Returns the mhs details for the given org code and interaction id + :return: Dictionary of the attributes of the mhs associated with the given parameters + """ + + accredited_system_lookup = await self._accredited_system_lookup(ods_code, interaction_id) + + if not accredited_system_lookup: + logger.error(f"Failed to find accredited system details for ods code : {ods_code} and interaction id: " + f"{interaction_id}") + raise routing_exception.RoutingException('No response from accredited system lookup') + + if len(accredited_system_lookup) > 1: + logger.warning(f"More than one accredited system details returned on inputs: " + f"ods: {ods_code} - interaction: {interaction_id}") + + # As per the spec exactly one result should be returned + response = accredited_system_lookup[0] + party_key = response['attributes'][MHS_PARTY_KEY] + + details = await self._mhs_details_lookup(party_key, interaction_id) + + if not details: + logger.error(f'No mhs details returned for party key: {party_key} and interaction id : {interaction_id}') + raise routing_exception.RoutingException(f'No mhs details returned for party key: ' + f'{party_key} and interaction id : {interaction_id}') + if len(details) > 1: + logger.warning(f"More than one mhs details returned on inputs: " + f"ods: {ods_code} - interaction: {interaction_id}") + return details[0]['attributes'] + + async def _accredited_system_lookup(self, ods_code: str, interaction_id: str) -> List: + """ + Used to find an accredited system, the result contains the nhsMhsPartyKey. + This can then be used to find an MHS endpoint + :return: endpoint details - filtered to only contain nhsMHSPartyKey + """ + + search_filter = f"(&(nhsIDCode={ods_code}) (objectClass={AS_OBJECT_CLASS}) (nhsAsSvcIA={interaction_id}))" + + message_id = self.connection.search(search_base=NHS_SERVICES_BASE, + search_filter=search_filter, + attributes=MHS_PARTY_KEY) + logger.info(f'Message id - {message_id} - for query: ods code - {ods_code} ' + f': interaction id - {interaction_id}') + + response = await self._get_query_result(message_id) + logger.info(f'Found accredited supplier details for message_id: {message_id}') + + return response + + async def _mhs_details_lookup(self, party_key: str, interaction_id: str) -> List: + """ + Given a party key and an interaction id, this will return an object containing the attributes of that party key, + including the endpoint address + :return: all the endpoint details + """ + search_filter = f"(&(objectClass={MHS_OBJECT_CLASS})" \ + f" ({MHS_PARTY_KEY}={party_key})" \ + f" (nhsMhsSvcIA={interaction_id}))" + message_id = self.connection.search(search_base=NHS_SERVICES_BASE, + search_filter=search_filter, + attributes=mhs_attributes) + + logger.info(f'Message id - {message_id} - for query: party key - {party_key} ' + f': interaction id - {interaction_id}') + + response = await self._get_query_result(message_id) + logger.info(f'Found mhs details for message_id: {message_id}') + + return response + + async def _get_query_result(self, message_id: int) -> List: + loop = asyncio.get_event_loop() + response = [] + try: + response, result = await loop.run_in_executor(None, self.connection.get_response, message_id, self.timeout) + except ldap_exceptions.LDAPResponseTimeoutError: + logger.error(f'LDAP query timed out for message id: {message_id}') + + return response diff --git a/mhs-reference-implementation/mhs/routing/sds_connection_factory.py b/mhs-reference-implementation/mhs/routing/sds_connection_factory.py new file mode 100644 index 000000000..b88454775 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/sds_connection_factory.py @@ -0,0 +1,31 @@ +import ssl +import ldap3 + + +def build_sds_connection(ldap_address: str) -> ldap3.Connection: + """ + Given an ldap service address this will return a ldap3 connection object + """ + server = ldap3.Server(ldap_address) + connection = ldap3.Connection(server, auto_bind=True, client_strategy=ldap3.REUSABLE) + return connection + + +def build_sds_connection_tls(ldap_address: str, + private_key_path: str, + local_cert_path: str, + ca_certs_file: str + ) -> ldap3.Connection: + """ + This will return a connection object for the given ip along with loading the given certification files + :return: Connection object using the given cert files + """ + + load_tls = ldap3.Tls(local_private_key_file=private_key_path, + local_certificate_file=local_cert_path, + validate=ssl.CERT_REQUIRED, version=ssl.PROTOCOL_TLSv1, + ca_certs_file=ca_certs_file) + + server = ldap3.Server(ldap_address, use_ssl=True, tls=load_tls) + connection = ldap3.Connection(server, auto_bind=True, client_strategy=ldap3.REUSABLE) + return connection diff --git a/mhs-reference-implementation/mhs/routing/sds_handler.py b/mhs-reference-implementation/mhs/routing/sds_handler.py new file mode 100644 index 000000000..e18942a7c --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/sds_handler.py @@ -0,0 +1,13 @@ +import mhs.routing.sds as sds + + +class MHSAttributeLookupHandler: + + def __init__(self, client: sds.SDSClient): + if not client: + raise ValueError('sds client required') + self.sds_client = client + + async def retrieve_mhs_attributes(self, org_code, interaction_id): + endpoint_details = await self.sds_client.get_mhs_details(org_code, interaction_id) + return endpoint_details diff --git a/mhs-reference-implementation/mhs/routing/tests/__init__.py b/mhs-reference-implementation/mhs/routing/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_entries.json b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_entries.json new file mode 100644 index 000000000..4576be831 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_entries.json @@ -0,0 +1,860 @@ +{ + "entries": [ + { + "attributes": { + "nhsApproverURP": "uniqueIdentifier=283886066515,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs", + "nhsAsACF": [ + "CNST", + "DOLR", + "RBAC" + ], + "nhsAsClient": [ + "ODSCODE1" + ], + "nhsAsSvcIA": [ + "urn:nhs:names:services:psisquery:QUPC_IN160101UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160109UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160102UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160107UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160108UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160110UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160104UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160103UK05", + "urn:nhs:names:services:psisquery:QUPC_IN190000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160107UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160103UK04", + "urn:nhs:names:services:psisquery:ITEMDETAILQUERYUK01", + "urn:nhs:names:services:psisquery:QUPC_IN160109UK04", + "urn:nhs:names:services:psisquery:ITEMLISTQUERYUK01", + "urn:nhs:names:services:psisquery:QUPC_IN160101UK04", + "urn:nhs:names:services:psisquery:QUPC_IN180000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160102UK04", + "urn:nhs:names:services:psisquery:ITEMLISTRESPONSEUK01", + "urn:nhs:names:services:psisquery:QUQI_IN010000UK14", + "urn:nhs:names:services:psisquery:QUPC_IN160108UK04", + "urn:nhs:names:services:psisquery:MCCI_IN010000UK13", + "urn:nhs:names:services:psisquery:QUPC_IN160104UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160110UK04", + "urn:nhs:names:services:psisquery:ITEMDETAILRESPONSEUK01", + "urn:nhs:names:services:psisquery:QUPC_IN200000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN210000UK04", + "urn:nhs:names:services:ebs:PRSC_IN060000UK02", + "urn:nhs:names:services:ebs:PRSC_IN100000UK02", + "urn:nhs:names:services:ebs:PRPA_IN030000UK03", + "urn:nhs:names:services:ebs:PRSC_IN110000UK03", + "urn:nhs:names:services:ebs:PRSC_IN150000UK02", + "urn:nhs:names:services:ebs:PRSC_IN130000UK02", + "urn:nhs:names:services:ebs:PRSC_IN090000UK03", + "urn:nhs:names:services:ebs:PRSC_IN040000UK08", + "urn:nhs:names:services:ebs:PRSC_IN060000UK06", + "urn:nhs:names:services:ebs:PRPA_IN020000UK06", + "urn:nhs:names:services:ebs:PRSC_IN140000UK06", + "urn:nhs:names:services:ebs:PRSC_IN150000UK06", + "urn:nhs:names:services:ebs:PRPA_IN010000UK07", + "urn:nhs:names:services:ebs:PRSC_IN070000UK08", + "urn:nhs:names:services:ebs:MCCI_IN010000UK13", + "urn:nhs:names:services:ebs:PRSC_IN050000UK06", + "urn:nhs:names:services:ebs:PRSC_IN040000UK03", + "urn:nhs:names:services:ebs:PRSC_IN050000UK02", + "urn:nhs:names:services:ebs:MCCI_IN010000UK01", + "urn:nhs:names:services:ebs:PRPA_IN010000UK02", + "urn:nhs:names:services:ebs:PRSC_IN140000UK02", + "urn:nhs:names:services:ebs:PRPA_IN030000UK08", + "urn:nhs:names:services:ebs:PRSC_IN090000UK09", + "urn:nhs:names:services:ebs:PRSC_IN130000UK07", + "urn:nhs:names:services:ebs:PRSC_IN110000UK08", + "urn:nhs:names:services:ebs:PRSC_IN110000UK10", + "urn:nhs:names:services:ebs:PRSC_IN150001UK01", + "urn:nhs:names:services:ebs:PRSC_IN100000UK06", + "urn:nhs:names:services:ebs:PRSC_IN110000UK11", + "urn:nhs:names:services:ebs:PRSC_IN150001UK02", + "urn:nhs:names:services:ebs:PRSC_IN080000UK07", + "urn:nhs:names:services:ebs:PRPA_IN020000UK02", + "urn:nhs:names:services:ebs:PRSC_IN070000UK03", + "urn:nhs:names:services:ebs:PRSC_IN080000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK06", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK06", + "urn:nhs:names:services:gp2gp:MCCI_IN010000UK13", + "urn:nhs:names:services:gp2gp:MCCI_IN010000UK12", + "urn:nhs:names:services:gp2gp:RCMR_IN020000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK08", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK05", + "urn:nhs:names:services:gp2gp:COPC_IN000001UK01", + "urn:nhs:names:services:mm:PORX_IN370101UK31", + "urn:nhs:names:services:mm:PORX_IN460101UK31", + "urn:nhs:names:services:mm:PORX_IN530101UK31", + "urn:nhs:names:services:mm:PORX_IN020101UK31", + "urn:nhs:names:services:mm:PORX_IN540101UK31", + "urn:nhs:names:services:mm:PORX_IN020101UK04", + "urn:nhs:names:services:mm:PORX_IN080101UK04", + "urn:nhs:names:services:mm:PORX_IN020102UK31", + "urn:nhs:names:services:mm:PORX_IN100101UK04", + "urn:nhs:names:services:mm:PORX_IN080101UK31", + "urn:nhs:names:services:mm:PORX_IN132004UK30", + "urn:nhs:names:services:mm:PORX_IN020102UK04", + "urn:nhs:names:services:mm:PORX_IN090101UK31", + "urn:nhs:names:services:mm:PORX_IN100101UK31", + "urn:nhs:names:services:mm:PORX_IN090102UK31", + "urn:nhs:names:services:mm:PORX_IN060102UK30", + "urn:nhs:names:services:mm:PORX_IN060102UK04", + "urn:nhs:names:services:mm:PORX_IN030101UK32", + "urn:nhs:names:services:mm:PORX_IN000007UK01", + "urn:nhs:names:services:mm:PORX_IN132004UK04", + "urn:nhs:names:services:mm:PORX_IN220102UK31", + "urn:nhs:names:services:mm:PORX_IN510101UK31", + "urn:nhs:names:services:mm:PORX_IN340102UK31", + "urn:nhs:names:services:mm:PORX_IN240101UK04", + "urn:nhs:names:services:mm:PORX_IN150101UK31", + "urn:nhs:names:services:mm:PORX_IN070103UK31", + "urn:nhs:names:services:mm:PORX_IN110101UK04", + "urn:nhs:names:services:mm:PORX_IN050101UK31", + "urn:nhs:names:services:mm:MCCI_IN010000UK13", + "urn:nhs:names:services:mm:PORX_IN050102UK32", + "urn:nhs:names:services:mm:PORX_IN070103UK04", + "urn:nhs:names:services:mm:PORX_IN100364UK01", + "urn:nhs:names:services:mm:PORX_IN110101UK30", + "urn:nhs:names:services:mm:MCCI_IN010000UK12", + "urn:nhs:names:services:mm:PORX_IN070101UK04", + "urn:nhs:names:services:mm:PORX_IN070101UK31", + "urn:nhs:names:services:mm:PORX_IN270101UK30", + "urn:nhs:names:services:mm:PORX_IN250101UK04", + "urn:nhs:names:services:mm:PORX_IN260101UK04", + "urn:oasis:names:tc:ebxml-msg:service:Acknowledgment", + "urn:oasis:names:tc:ebxml-msg:service:MessageError", + "urn:oasis:names:tc:ebxml-msg:service:Ping", + "sdfsd:AccreditedSystemSearchRequest_1_0", + "urn:nhs:names:services:alerts:COMT_IN000001UK01", + "urn:nhs:names:services:alerts:MCCI_IN010000UK13", + "urn:nhs:names:services:dbs:batchtracerequest", + "urn:nhs:names:services:dbs:batchtraceresponse", + "urn:nhs:names:services:lrs:REPC_IN040000UK15", + "urn:nhs:names:services:lrs:REPC_IN010000UK15", + "urn:nhs:names:services:lrs:SET_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrs:QUPC_IN010000UK15", + "urn:nhs:names:services:lrs:REPC_IN020000UK13", + "urn:nhs:names:services:lrs:MCCI_IN010000UK13", + "urn:nhs:names:services:lrs:REPC_IN050000UK13", + "urn:nhs:names:services:lrs:QUQI_IN010000UK14", + "urn:nhs:names:services:lrs:QUPC_IN030000UK14", + "urn:nhs:names:services:lrs:QUPC_IN040000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN010000UK15", + "urn:nhs:names:services:lrsquery:GET_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrsquery:QUPC_IN090000UK03", + "urn:nhs:names:services:lrsquery:HAS_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrsquery:QUPC_IN020000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN020000UK17", + "urn:nhs:names:services:lrsquery:QUPC_IN010000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN060000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN070000UK15", + "urn:nhs:names:services:lrsquery:QUPC_IN030000UK14", + "urn:nhs:names:services:lrsquery:GET_RESOURCE_PERMISSIONS_RESPONSE_INUK01", + "urn:nhs:names:services:lrsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN070000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN040000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN040000UK30", + "urn:nhs:names:services:lrsquery:QUPC_IN060000UK15", + "urn:nhs:names:services:lrsquery:QUPC_IN250000UK02", + "urn:nhs:names:services:lrsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:lrsquery:HAS_RESOURCE_PERMISSIONS_RESPONSE_INUK01", + "urn:nhs:names:services:mmquery:QURX_IN000002UK02", + "urn:nhs:names:services:mmquery:QURX_IN000003UK02", + "urn:nhs:names:services:mmquery:QURX_IN000005UK02", + "urn:nhs:names:services:mmquery:PORX_IN000004UK02", + "urn:nhs:names:services:mmquery:MCCI_IN010000UK13", + "urn:nhs:names:services:mmquery:PORX_IN000006UK02", + "urn:nhs:names:services:pds:urn:spine:interactionid:insertbirthrequest", + "urn:nhs:names:services:pds:QUPA_IN010000UK13", + "urn:nhs:names:services:pds:QUPA_IN020000UK14", + "urn:nhs:names:services:pds:PRPA_IN150000UK30", + "urn:nhs:names:services:pds:MCCI_IN010000UK13", + "urn:nhs:names:services:pds:PRPA_IN000201UK01", + "urn:nhs:names:services:pds:PRPA_IN000207UK05", + "urn:nhs:names:services:pds:PRPA_IN000209UK02", + "urn:nhs:names:services:pds:PRPA_IN000211UK01", + "urn:nhs:names:services:pds:PRPA_IN000213UK01", + "urn:nhs:names:services:pds:PRPA_IN000214UK03", + "urn:nhs:names:services:pds:PRPA_IN000216UK01", + "urn:nhs:names:services:pds:QUPA_IN030000UK15", + "urn:nhs:names:services:pds:QUQI_IN010000UK14", + "urn:nhs:names:services:pds:QUQI_IN010000UK01", + "urn:nhs:names:services:pds:urn:spine:interactionid:insertbirthresponse", + "urn:nhs:names:services:pds:QUPA_IN070000UK16", + "urn:nhs:names:services:pds:QUPA_IN050000UK16", + "urn:nhs:names:services:pds:PRPA_IN000207UK03", + "urn:nhs:names:services:pds:PRPA_IN000206UK01", + "urn:nhs:names:services:pds:PRPA_IN000202UK01", + "urn:nhs:names:services:pds:urn:spine:interactionid:birthnotification2", + "urn:nhs:names:services:pds:PRPA_IN060000UK14", + "urn:nhs:names:services:pds:PRPA_IN060000UK30", + "urn:nhs:names:services:pds:PRPA_IN000208UK03", + "urn:nhs:names:services:pds:PRPA_IN000209UK01", + "urn:nhs:names:services:pds:PRPA_IN150000UK14", + "urn:nhs:names:services:pds:PRPA_IN000203UK03", + "urn:nhs:names:services:pds:PRPA_IN000205UK03", + "urn:nhs:names:services:pds:PRPA_IN110000UK15", + "urn:nhs:names:services:pds:PRPA_IN100000UK14", + "urn:nhs:names:services:pds:PRPA_IN120000UK14", + "urn:nhs:names:services:pds:PRPA_IN000204UK03", + "urn:nhs:names:services:pds:PRPA_IN160000UK30", + "urn:nhs:names:services:pds:PRPA_IN000200UK03", + "urn:nhs:names:services:pds:PRPA_IN000200UK04", + "urn:nhs:names:services:pds:PRPA_IN000203UK06", + "urn:nhs:names:services:pds:PRPA_IN000204UK06", + "urn:nhs:names:services:pds:PRPA_IN000205UK05", + "urn:nhs:names:services:pds:PRPA_IN000210UK01", + "urn:nhs:names:services:pds:PRPA_IN000212UK02", + "urn:nhs:names:services:pds:PRPA_IN000215UK02", + "urn:nhs:names:services:pds:PRPA_IN110000UK01", + "urn:nhs:names:services:pds:PRPA_IN120000UK01", + "urn:nhs:names:services:pds:PRPA_IN100000UK01", + "urn:nhs:names:services:pds:QUPA_IN010000UK01", + "urn:nhs:names:services:pds:QUPA_IN040000UK01", + "urn:nhs:names:services:pds:QUPA_IN060000UK01", + "urn:nhs:names:services:pds:PRPA_IN160000UK01", + "urn:nhs:names:services:pds:QUPA_IN040000UK14", + "urn:nhs:names:services:pds:PRPA_IN040000UK15", + "urn:nhs:names:services:pds:PRPA_IN040000UK30", + "urn:nhs:names:services:pds:QUPA_IN060000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN020000UK31", + "urn:nhs:names:services:pdsquery:QUPA_IN000012UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000008UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000016UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN010000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN040000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN010000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN060000UK30", + "urn:nhs:names:services:pdsquery:QUPA_IN040000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN000014UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000005UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000005UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000008UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN000014UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000016UK04", + "urn:nhs:names:services:pdsquery:QUPA_IN000017UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN020000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN000006UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000012UK04", + "urn:nhs:names:services:pdsquery:QUPA_IN000006UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN060000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN070000UK16", + "urn:nhs:names:services:pdsquery:QUPA_IN030000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN000007UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN050000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN050000UK16", + "urn:nhs:names:services:pdsquery:QUPA_IN000015UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN070000UK30", + "urn:nhs:names:services:pdsquery:QUPA_IN000010UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN030000UK15", + "urn:nhs:names:services:pdsquery:QUPA_IN000011UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000007UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000009UK06", + "urn:nhs:names:services:pdsquery:QUPA_IN000010UK04", + "urn:nhs:names:services:pdsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:pdsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN000013UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000011UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN000013UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000009UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000015UK04", + "urn:nhs:names:services:sds:REPC_IN130004UK01", + "urn:nhs:names:services:sds:REPC_IN130002UK01", + "urn:nhs:names:services:sds:REPC_IN130005UK01", + "urn:nhs:names:services:sds:MCCI_IN010000UK13", + "urn:nhs:names:services:sds:REPC_IN130003UK01", + "urn:nhs:names:services:sdsquery:QUPC_IN041234UK01", + "urn:nhs:names:services:sdsquery:AccreditedSystemSearchRequest_1_0", + "urn:nhs:names:services:sdsquery:QUPC_IN010102UK01", + "urn:nhs:names:services:sdsquery:REPC_IN130007UK01", + "urn:nhs:names:services:sdsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:sdsquery:QUPC_IN010103UK01", + "urn:nhs:names:services:sdsquery:AccreditedSystemSearchResponse_1_0", + "urn:nhs:names:services:sdsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:sfts:authentication", + "urn:nhs:names:services:tms:ReliableIntermediary", + "urn:nhs:names:services:tms:UnreliableIntermediary", + "urn:nhs:names:services:tms:ExpressIntermediary", + "urn:nhs:names:services:tms:MCCI_IN200001UK02", + "urn:nhs:names:services:tms:MCCI_IN200002UK03", + "urn:nhs:names:services:unspecified:unspecified", + "urn:nhs:names:services:gpes:COMT_IN000004GB01", + "urn:nhs:names:services:gpes:COMT_IN000003GB01", + "urn:nhs:names:services:gpes:MCCI_IN010000UK13", + "urn:nhs:names:services:gpes:COMT_IN000002GB01", + "urn:nhs:names:services:gpes:COMT_IN000006GB01", + "urn:nhs:names:services:gpes:COMT_IN000005GB01", + "urn:nhs:names:services:gpes:COMT_IN000001GB01", + "urn:nhs:names:services:itk:COPC_IN000002GB01", + "urn:nhs:names:services:itk:COPC_IN000001GB01", + "urn:nhs:names:services:cpisquery:INACTIVE_NHS_NUMBERS", + "urn:nhs:names:services:cpisquery:REPC_IN000004GB01", + "urn:nhs:names:services:cpisquery:ACCESS_TO_SERVICE", + "urn:nhs:names:services:cpisquery:REPC_IN000005GB01", + "urn:nhs:names:services:cpisquery:QUQI_IN010000UK14", + "urn:nhs:names:services:cpisquery:REPC_IN000007GB01", + "urn:nhs:names:services:cpisquery:QUPC_IN000006GB01", + "urn:nhs:names:services:cpisquery:MCCI_IN010000UK13", + "urn:nhs:names:services:cpisupload:REPC_IN000003GB01", + "urn:nhs:names:services:cpisupload:REPC_IN000002SM01", + "urn:nhs:names:services:pdsquery:QUPA_IN000014SM03", + "urn:nhs:names:services:pdsquery:QUPA_IN000015SM04", + "urn:nhs:names:services:clinicals-sync:FGMQuery_1_0", + "urn:nhs:names:services:clinicals-sync:FGMQueryResponse_1_0", + "urn:nhs:names:services:clinicals-sync:FGMCreate_1_0", + "urn:nhs:names:services:clinicals-sync:FGMDelete_1_0", + "urn:nhs:names:services:clinicals-sync:FGMQuery_2_0", + "urn:nhs:names:services:nrls:NRLSDISCOVER_REQUEST", + "urn:nhs:names:services:nrls:NRLSREGISTER_REQUEST", + "urn:nhs:names:services:nrls:NRLSREMOVE_REQUEST", + "urn:nhs:names:services:mmquery:ExternalPrescriptionQuery", + "urn:nhs:names:services:mmquery:ExternalPrescriptionQuery_1_0", + "urn:nhs:names:services:mmquery:ExternalPrescriptionSearch_1_0", + "urn:nhs:names:services:pds-simple:verifyNHSNumber-v1-0Response", + "urn:nhs:names:services:pds-simple:getNHSNumberRequest-v1-0", + "urn:nhs:names:services:pds-simple:getNHSNumberRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetailsByNHSNumberRequest-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetailsByNHSNumberRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetailsBySearchRequest-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetailsBySearchRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetails-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetails-v1-0Response", + "urn:nhs:names:services:pds-simple:verifyNHSNumberRequest-v1", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getcarerecord", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getrecord", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getschedule", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.registerpatient", + "urn:nhs:names:services:gpconnect:fhir:rest:cancel:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:create:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:create:order", + "urn:nhs:names:services:gpconnect:fhir:rest:read:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:read:location", + "urn:nhs:names:services:gpconnect:fhir:rest:read:metadata", + "urn:nhs:names:services:gpconnect:fhir:rest:read:organization", + "urn:nhs:names:services:gpconnect:fhir:rest:read:patient", + "urn:nhs:names:services:gpconnect:fhir:rest:read:practitioner", + "urn:nhs:names:services:gpconnect:fhir:rest:search:location", + "urn:nhs:names:services:gpconnect:fhir:rest:search:organization", + "urn:nhs:names:services:gpconnect:fhir:rest:search:patient", + "urn:nhs:names:services:gpconnect:fhir:rest:search:patient_appointments", + "urn:nhs:names:services:gpconnect:fhir:rest:search:practitioner", + "urn:nhs:names:services:gpconnect:fhir:rest:update:appointment", + "urn:nhs:names:services:psis:REPC_IN150016UK05", + "urn:nhs:names:services:psis:MCCI_IN010000UK13" + ], + "nhsDateApproved": "20151106145512", + "nhsDateRequested": "20151106145347", + "nhsIDCode": "ODSCODE1", + "nhsMHSPartyKey": "AP4RTY-K33Y", + "nhsProductKey": "7374", + "nhsRequestorURP": "uniqueIdentifier=331622135514,uniqueIdentifier=747394079517, uid=828249614516,ou=people,o=nhs", + "objectClass": [ + "top", + "nhsAs" + ], + "uniqueIdentifier": [ + "918999199084" + ] + }, + "dn": "uniqueIdentifier=918999199084,ou=Services,o=nhs", + "raw": { + "nhsApproverURP": [ + "uniqueIdentifier=283886066515,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs" + ], + "nhsAsACF": [ + "CNST", + "DOLR", + "RBAC" + ], + "nhsAsClient": [ + "ODSCODE1" + ], + "nhsAsSvcIA": [ + "urn:nhs:names:services:psisquery:QUPC_IN160101UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160109UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160102UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160107UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160108UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160110UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160104UK05", + "urn:nhs:names:services:psisquery:QUPC_IN160103UK05", + "urn:nhs:names:services:psisquery:QUPC_IN190000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160107UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160103UK04", + "urn:nhs:names:services:psisquery:ITEMDETAILQUERYUK01", + "urn:nhs:names:services:psisquery:QUPC_IN160109UK04", + "urn:nhs:names:services:psisquery:ITEMLISTQUERYUK01", + "urn:nhs:names:services:psisquery:QUPC_IN160101UK04", + "urn:nhs:names:services:psisquery:QUPC_IN180000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160102UK04", + "urn:nhs:names:services:psisquery:ITEMLISTRESPONSEUK01", + "urn:nhs:names:services:psisquery:QUQI_IN010000UK14", + "urn:nhs:names:services:psisquery:QUPC_IN160108UK04", + "urn:nhs:names:services:psisquery:MCCI_IN010000UK13", + "urn:nhs:names:services:psisquery:QUPC_IN160104UK04", + "urn:nhs:names:services:psisquery:QUPC_IN160110UK04", + "urn:nhs:names:services:psisquery:ITEMDETAILRESPONSEUK01", + "urn:nhs:names:services:psisquery:QUPC_IN200000UK04", + "urn:nhs:names:services:psisquery:QUPC_IN210000UK04", + "urn:nhs:names:services:ebs:PRSC_IN060000UK02", + "urn:nhs:names:services:ebs:PRSC_IN100000UK02", + "urn:nhs:names:services:ebs:PRPA_IN030000UK03", + "urn:nhs:names:services:ebs:PRSC_IN110000UK03", + "urn:nhs:names:services:ebs:PRSC_IN150000UK02", + "urn:nhs:names:services:ebs:PRSC_IN130000UK02", + "urn:nhs:names:services:ebs:PRSC_IN090000UK03", + "urn:nhs:names:services:ebs:PRSC_IN040000UK08", + "urn:nhs:names:services:ebs:PRSC_IN060000UK06", + "urn:nhs:names:services:ebs:PRPA_IN020000UK06", + "urn:nhs:names:services:ebs:PRSC_IN140000UK06", + "urn:nhs:names:services:ebs:PRSC_IN150000UK06", + "urn:nhs:names:services:ebs:PRPA_IN010000UK07", + "urn:nhs:names:services:ebs:PRSC_IN070000UK08", + "urn:nhs:names:services:ebs:MCCI_IN010000UK13", + "urn:nhs:names:services:ebs:PRSC_IN050000UK06", + "urn:nhs:names:services:ebs:PRSC_IN040000UK03", + "urn:nhs:names:services:ebs:PRSC_IN050000UK02", + "urn:nhs:names:services:ebs:MCCI_IN010000UK01", + "urn:nhs:names:services:ebs:PRPA_IN010000UK02", + "urn:nhs:names:services:ebs:PRSC_IN140000UK02", + "urn:nhs:names:services:ebs:PRPA_IN030000UK08", + "urn:nhs:names:services:ebs:PRSC_IN090000UK09", + "urn:nhs:names:services:ebs:PRSC_IN130000UK07", + "urn:nhs:names:services:ebs:PRSC_IN110000UK08", + "urn:nhs:names:services:ebs:PRSC_IN110000UK10", + "urn:nhs:names:services:ebs:PRSC_IN150001UK01", + "urn:nhs:names:services:ebs:PRSC_IN100000UK06", + "urn:nhs:names:services:ebs:PRSC_IN110000UK11", + "urn:nhs:names:services:ebs:PRSC_IN150001UK02", + "urn:nhs:names:services:ebs:PRSC_IN080000UK07", + "urn:nhs:names:services:ebs:PRPA_IN020000UK02", + "urn:nhs:names:services:ebs:PRSC_IN070000UK03", + "urn:nhs:names:services:ebs:PRSC_IN080000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK06", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK06", + "urn:nhs:names:services:gp2gp:MCCI_IN010000UK13", + "urn:nhs:names:services:gp2gp:MCCI_IN010000UK12", + "urn:nhs:names:services:gp2gp:RCMR_IN020000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK08", + "urn:nhs:names:services:gp2gp:RCMR_IN030000UK03", + "urn:nhs:names:services:gp2gp:RCMR_IN010000UK05", + "urn:nhs:names:services:gp2gp:COPC_IN000001UK01", + "urn:nhs:names:services:mm:PORX_IN370101UK31", + "urn:nhs:names:services:mm:PORX_IN460101UK31", + "urn:nhs:names:services:mm:PORX_IN530101UK31", + "urn:nhs:names:services:mm:PORX_IN020101UK31", + "urn:nhs:names:services:mm:PORX_IN540101UK31", + "urn:nhs:names:services:mm:PORX_IN020101UK04", + "urn:nhs:names:services:mm:PORX_IN080101UK04", + "urn:nhs:names:services:mm:PORX_IN020102UK31", + "urn:nhs:names:services:mm:PORX_IN100101UK04", + "urn:nhs:names:services:mm:PORX_IN080101UK31", + "urn:nhs:names:services:mm:PORX_IN132004UK30", + "urn:nhs:names:services:mm:PORX_IN020102UK04", + "urn:nhs:names:services:mm:PORX_IN090101UK31", + "urn:nhs:names:services:mm:PORX_IN100101UK31", + "urn:nhs:names:services:mm:PORX_IN090102UK31", + "urn:nhs:names:services:mm:PORX_IN060102UK30", + "urn:nhs:names:services:mm:PORX_IN060102UK04", + "urn:nhs:names:services:mm:PORX_IN030101UK32", + "urn:nhs:names:services:mm:PORX_IN000007UK01", + "urn:nhs:names:services:mm:PORX_IN132004UK04", + "urn:nhs:names:services:mm:PORX_IN220102UK31", + "urn:nhs:names:services:mm:PORX_IN510101UK31", + "urn:nhs:names:services:mm:PORX_IN340102UK31", + "urn:nhs:names:services:mm:PORX_IN240101UK04", + "urn:nhs:names:services:mm:PORX_IN150101UK31", + "urn:nhs:names:services:mm:PORX_IN070103UK31", + "urn:nhs:names:services:mm:PORX_IN110101UK04", + "urn:nhs:names:services:mm:PORX_IN050101UK31", + "urn:nhs:names:services:mm:MCCI_IN010000UK13", + "urn:nhs:names:services:mm:PORX_IN050102UK32", + "urn:nhs:names:services:mm:PORX_IN070103UK04", + "urn:nhs:names:services:mm:PORX_IN100364UK01", + "urn:nhs:names:services:mm:PORX_IN110101UK30", + "urn:nhs:names:services:mm:MCCI_IN010000UK12", + "urn:nhs:names:services:mm:PORX_IN070101UK04", + "urn:nhs:names:services:mm:PORX_IN070101UK31", + "urn:nhs:names:services:mm:PORX_IN270101UK30", + "urn:nhs:names:services:mm:PORX_IN250101UK04", + "urn:nhs:names:services:mm:PORX_IN260101UK04", + "urn:oasis:names:tc:ebxml-msg:service:Acknowledgment", + "urn:oasis:names:tc:ebxml-msg:service:MessageError", + "urn:oasis:names:tc:ebxml-msg:service:Ping", + "sdfsd:AccreditedSystemSearchRequest_1_0", + "urn:nhs:names:services:alerts:COMT_IN000001UK01", + "urn:nhs:names:services:alerts:MCCI_IN010000UK13", + "urn:nhs:names:services:dbs:batchtracerequest", + "urn:nhs:names:services:dbs:batchtraceresponse", + "urn:nhs:names:services:lrs:REPC_IN040000UK15", + "urn:nhs:names:services:lrs:REPC_IN010000UK15", + "urn:nhs:names:services:lrs:SET_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrs:QUPC_IN010000UK15", + "urn:nhs:names:services:lrs:REPC_IN020000UK13", + "urn:nhs:names:services:lrs:MCCI_IN010000UK13", + "urn:nhs:names:services:lrs:REPC_IN050000UK13", + "urn:nhs:names:services:lrs:QUQI_IN010000UK14", + "urn:nhs:names:services:lrs:QUPC_IN030000UK14", + "urn:nhs:names:services:lrs:QUPC_IN040000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN010000UK15", + "urn:nhs:names:services:lrsquery:GET_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrsquery:QUPC_IN090000UK03", + "urn:nhs:names:services:lrsquery:HAS_RESOURCE_PERMISSIONS_INUK01", + "urn:nhs:names:services:lrsquery:QUPC_IN020000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN020000UK17", + "urn:nhs:names:services:lrsquery:QUPC_IN010000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN060000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN070000UK15", + "urn:nhs:names:services:lrsquery:QUPC_IN030000UK14", + "urn:nhs:names:services:lrsquery:GET_RESOURCE_PERMISSIONS_RESPONSE_INUK01", + "urn:nhs:names:services:lrsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN070000UK32", + "urn:nhs:names:services:lrsquery:QUPC_IN040000UK14", + "urn:nhs:names:services:lrsquery:QUPC_IN040000UK30", + "urn:nhs:names:services:lrsquery:QUPC_IN060000UK15", + "urn:nhs:names:services:lrsquery:QUPC_IN250000UK02", + "urn:nhs:names:services:lrsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:lrsquery:HAS_RESOURCE_PERMISSIONS_RESPONSE_INUK01", + "urn:nhs:names:services:mmquery:QURX_IN000002UK02", + "urn:nhs:names:services:mmquery:QURX_IN000003UK02", + "urn:nhs:names:services:mmquery:QURX_IN000005UK02", + "urn:nhs:names:services:mmquery:PORX_IN000004UK02", + "urn:nhs:names:services:mmquery:MCCI_IN010000UK13", + "urn:nhs:names:services:mmquery:PORX_IN000006UK02", + "urn:nhs:names:services:pds:urn:spine:interactionid:insertbirthrequest", + "urn:nhs:names:services:pds:QUPA_IN010000UK13", + "urn:nhs:names:services:pds:QUPA_IN020000UK14", + "urn:nhs:names:services:pds:PRPA_IN150000UK30", + "urn:nhs:names:services:pds:MCCI_IN010000UK13", + "urn:nhs:names:services:pds:PRPA_IN000201UK01", + "urn:nhs:names:services:pds:PRPA_IN000207UK05", + "urn:nhs:names:services:pds:PRPA_IN000209UK02", + "urn:nhs:names:services:pds:PRPA_IN000211UK01", + "urn:nhs:names:services:pds:PRPA_IN000213UK01", + "urn:nhs:names:services:pds:PRPA_IN000214UK03", + "urn:nhs:names:services:pds:PRPA_IN000216UK01", + "urn:nhs:names:services:pds:QUPA_IN030000UK15", + "urn:nhs:names:services:pds:QUQI_IN010000UK14", + "urn:nhs:names:services:pds:QUQI_IN010000UK01", + "urn:nhs:names:services:pds:urn:spine:interactionid:insertbirthresponse", + "urn:nhs:names:services:pds:QUPA_IN070000UK16", + "urn:nhs:names:services:pds:QUPA_IN050000UK16", + "urn:nhs:names:services:pds:PRPA_IN000207UK03", + "urn:nhs:names:services:pds:PRPA_IN000206UK01", + "urn:nhs:names:services:pds:PRPA_IN000202UK01", + "urn:nhs:names:services:pds:urn:spine:interactionid:birthnotification2", + "urn:nhs:names:services:pds:PRPA_IN060000UK14", + "urn:nhs:names:services:pds:PRPA_IN060000UK30", + "urn:nhs:names:services:pds:PRPA_IN000208UK03", + "urn:nhs:names:services:pds:PRPA_IN000209UK01", + "urn:nhs:names:services:pds:PRPA_IN150000UK14", + "urn:nhs:names:services:pds:PRPA_IN000203UK03", + "urn:nhs:names:services:pds:PRPA_IN000205UK03", + "urn:nhs:names:services:pds:PRPA_IN110000UK15", + "urn:nhs:names:services:pds:PRPA_IN100000UK14", + "urn:nhs:names:services:pds:PRPA_IN120000UK14", + "urn:nhs:names:services:pds:PRPA_IN000204UK03", + "urn:nhs:names:services:pds:PRPA_IN160000UK30", + "urn:nhs:names:services:pds:PRPA_IN000200UK03", + "urn:nhs:names:services:pds:PRPA_IN000200UK04", + "urn:nhs:names:services:pds:PRPA_IN000203UK06", + "urn:nhs:names:services:pds:PRPA_IN000204UK06", + "urn:nhs:names:services:pds:PRPA_IN000205UK05", + "urn:nhs:names:services:pds:PRPA_IN000210UK01", + "urn:nhs:names:services:pds:PRPA_IN000212UK02", + "urn:nhs:names:services:pds:PRPA_IN000215UK02", + "urn:nhs:names:services:pds:PRPA_IN110000UK01", + "urn:nhs:names:services:pds:PRPA_IN120000UK01", + "urn:nhs:names:services:pds:PRPA_IN100000UK01", + "urn:nhs:names:services:pds:QUPA_IN010000UK01", + "urn:nhs:names:services:pds:QUPA_IN040000UK01", + "urn:nhs:names:services:pds:QUPA_IN060000UK01", + "urn:nhs:names:services:pds:PRPA_IN160000UK01", + "urn:nhs:names:services:pds:QUPA_IN040000UK14", + "urn:nhs:names:services:pds:PRPA_IN040000UK15", + "urn:nhs:names:services:pds:PRPA_IN040000UK30", + "urn:nhs:names:services:pds:QUPA_IN060000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN020000UK31", + "urn:nhs:names:services:pdsquery:QUPA_IN000012UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000008UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000016UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN010000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN040000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN010000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN060000UK30", + "urn:nhs:names:services:pdsquery:QUPA_IN040000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN000014UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000005UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000005UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000008UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN000014UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000016UK04", + "urn:nhs:names:services:pdsquery:QUPA_IN000017UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN020000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN000006UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000012UK04", + "urn:nhs:names:services:pdsquery:QUPA_IN000006UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN060000UK13", + "urn:nhs:names:services:pdsquery:QUPA_IN070000UK16", + "urn:nhs:names:services:pdsquery:QUPA_IN030000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN000007UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN050000UK32", + "urn:nhs:names:services:pdsquery:QUPA_IN050000UK16", + "urn:nhs:names:services:pdsquery:QUPA_IN000015UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN070000UK30", + "urn:nhs:names:services:pdsquery:QUPA_IN000010UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN030000UK15", + "urn:nhs:names:services:pdsquery:QUPA_IN000011UK02", + "urn:nhs:names:services:pdsquery:QUPA_IN000007UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000009UK06", + "urn:nhs:names:services:pdsquery:QUPA_IN000010UK04", + "urn:nhs:names:services:pdsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:pdsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:pdsquery:QUPA_IN000013UK01", + "urn:nhs:names:services:pdsquery:QUPA_IN000011UK05", + "urn:nhs:names:services:pdsquery:QUPA_IN000013UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000009UK03", + "urn:nhs:names:services:pdsquery:QUPA_IN000015UK04", + "urn:nhs:names:services:sds:REPC_IN130004UK01", + "urn:nhs:names:services:sds:REPC_IN130002UK01", + "urn:nhs:names:services:sds:REPC_IN130005UK01", + "urn:nhs:names:services:sds:MCCI_IN010000UK13", + "urn:nhs:names:services:sds:REPC_IN130003UK01", + "urn:nhs:names:services:sdsquery:QUPC_IN041234UK01", + "urn:nhs:names:services:sdsquery:AccreditedSystemSearchRequest_1_0", + "urn:nhs:names:services:sdsquery:QUPC_IN010102UK01", + "urn:nhs:names:services:sdsquery:REPC_IN130007UK01", + "urn:nhs:names:services:sdsquery:QUQI_IN010000UK14", + "urn:nhs:names:services:sdsquery:QUPC_IN010103UK01", + "urn:nhs:names:services:sdsquery:AccreditedSystemSearchResponse_1_0", + "urn:nhs:names:services:sdsquery:MCCI_IN010000UK13", + "urn:nhs:names:services:sfts:authentication", + "urn:nhs:names:services:tms:ReliableIntermediary", + "urn:nhs:names:services:tms:UnreliableIntermediary", + "urn:nhs:names:services:tms:ExpressIntermediary", + "urn:nhs:names:services:tms:MCCI_IN200001UK02", + "urn:nhs:names:services:tms:MCCI_IN200002UK03", + "urn:nhs:names:services:unspecified:unspecified", + "urn:nhs:names:services:gpes:COMT_IN000004GB01", + "urn:nhs:names:services:gpes:COMT_IN000003GB01", + "urn:nhs:names:services:gpes:MCCI_IN010000UK13", + "urn:nhs:names:services:gpes:COMT_IN000002GB01", + "urn:nhs:names:services:gpes:COMT_IN000006GB01", + "urn:nhs:names:services:gpes:COMT_IN000005GB01", + "urn:nhs:names:services:gpes:COMT_IN000001GB01", + "urn:nhs:names:services:itk:COPC_IN000002GB01", + "urn:nhs:names:services:itk:COPC_IN000001GB01", + "urn:nhs:names:services:cpisquery:INACTIVE_NHS_NUMBERS", + "urn:nhs:names:services:cpisquery:REPC_IN000004GB01", + "urn:nhs:names:services:cpisquery:ACCESS_TO_SERVICE", + "urn:nhs:names:services:cpisquery:REPC_IN000005GB01", + "urn:nhs:names:services:cpisquery:QUQI_IN010000UK14", + "urn:nhs:names:services:cpisquery:REPC_IN000007GB01", + "urn:nhs:names:services:cpisquery:QUPC_IN000006GB01", + "urn:nhs:names:services:cpisquery:MCCI_IN010000UK13", + "urn:nhs:names:services:cpisupload:REPC_IN000003GB01", + "urn:nhs:names:services:cpisupload:REPC_IN000002SM01", + "urn:nhs:names:services:pdsquery:QUPA_IN000014SM03", + "urn:nhs:names:services:pdsquery:QUPA_IN000015SM04", + "urn:nhs:names:services:clinicals-sync:FGMQuery_1_0", + "urn:nhs:names:services:clinicals-sync:FGMQueryResponse_1_0", + "urn:nhs:names:services:clinicals-sync:FGMCreate_1_0", + "urn:nhs:names:services:clinicals-sync:FGMDelete_1_0", + "urn:nhs:names:services:clinicals-sync:FGMQuery_2_0", + "urn:nhs:names:services:nrls:NRLSDISCOVER_REQUEST", + "urn:nhs:names:services:nrls:NRLSREGISTER_REQUEST", + "urn:nhs:names:services:nrls:NRLSREMOVE_REQUEST", + "urn:nhs:names:services:mmquery:ExternalPrescriptionQuery", + "urn:nhs:names:services:mmquery:ExternalPrescriptionQuery_1_0", + "urn:nhs:names:services:mmquery:ExternalPrescriptionSearch_1_0", + "urn:nhs:names:services:pds-simple:verifyNHSNumber-v1-0Response", + "urn:nhs:names:services:pds-simple:getNHSNumberRequest-v1-0", + "urn:nhs:names:services:pds-simple:getNHSNumberRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetailsByNHSNumberRequest-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetailsByNHSNumberRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetailsBySearchRequest-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetailsBySearchRequest-v1-0Response", + "urn:nhs:names:services:pds-simple:getPatientDetails-v1-0", + "urn:nhs:names:services:pds-simple:getPatientDetails-v1-0Response", + "urn:nhs:names:services:pds-simple:verifyNHSNumberRequest-v1", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getcarerecord", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getrecord", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.getschedule", + "urn:nhs:names:services:gpconnect:fhir:operation:gpc.registerpatient", + "urn:nhs:names:services:gpconnect:fhir:rest:cancel:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:create:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:create:order", + "urn:nhs:names:services:gpconnect:fhir:rest:read:appointment", + "urn:nhs:names:services:gpconnect:fhir:rest:read:location", + "urn:nhs:names:services:gpconnect:fhir:rest:read:metadata", + "urn:nhs:names:services:gpconnect:fhir:rest:read:organization", + "urn:nhs:names:services:gpconnect:fhir:rest:read:patient", + "urn:nhs:names:services:gpconnect:fhir:rest:read:practitioner", + "urn:nhs:names:services:gpconnect:fhir:rest:search:location", + "urn:nhs:names:services:gpconnect:fhir:rest:search:organization", + "urn:nhs:names:services:gpconnect:fhir:rest:search:patient", + "urn:nhs:names:services:gpconnect:fhir:rest:search:patient_appointments", + "urn:nhs:names:services:gpconnect:fhir:rest:search:practitioner", + "urn:nhs:names:services:gpconnect:fhir:rest:update:appointment", + "urn:nhs:names:services:psis:REPC_IN150016UK05", + "urn:nhs:names:services:psis:MCCI_IN010000UK13" + ], + "nhsDateApproved": [ + "20151106145512" + ], + "nhsDateRequested": [ + "20151106145347" + ], + "nhsIDCode": [ + "ODSCODE1" + ], + "nhsMHSPartyKey": [ + "AP4RTY-K33Y" + ], + "nhsProductKey": [ + "7374" + ], + "nhsRequestorURP": [ + "uniqueIdentifier=331622135514,uniqueIdentifier=747394079517, uid=828249614516,ou=people,o=nhs" + ], + "objectClass": [ + "top", + "nhsAs" + ], + "uniqueIdentifier": [ + "918999199084" + ] + } + }, + { + "attributes": { + "nhsApproverURP": "uniqueIdentifier=242853999512,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs", + "nhsContractPropertyTemplateKey": "28", + "nhsDNSApprover": "uniqueIdentifier=283886066515,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs", + "nhsDateApproved": "20140130191012", + "nhsDateDNSApproved": "20140130191235", + "nhsDateRequested": "20140130190147", + "nhsEPInteractionType": "HL7", + "nhsIDCode": "ODSCODE1", + "nhsMHSAckRequested": "always", + "nhsMHSActor": [ + "urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH" + ], + "nhsMHSDuplicateElimination": "always", + "nhsMHSEndPoint": [ + "https://vpn-client-1411.opentest.hscic.gov.uk/" + ], + "nhsMHSIsAuthenticated": "transient", + "nhsMHSPartyKey": "AP4RTY-K33Y", + "nhsMHSPersistDuration": "PT5M", + "nhsMHSRetries": "2", + "nhsMHSRetryInterval": "PT1M", + "nhsMHSServiceDescription": "OpenTest vpn-client-1411.opentest.hscic.gov.uk", + "nhsMHSSyncReplyMode": "MSHSignalsOnly", + "nhsMHsIN": "MCCI_IN010000UK13", + "nhsMHsSN": "urn:nhs:names:services:psis", + "nhsMhsCPAId": "S918999410559", + "nhsMhsFQDN": "vpn-client-1411.opentest.hscic.gov.uk", + "nhsMhsSvcIA": "urn:nhs:names:services:psis:MCCI_IN010000UK13", + "nhsProductKey": "7374", + "nhsRequestorURP": "uniqueIdentifier=331622135514,uniqueIdentifier=747394079517, uid=828249614516,ou=people,o=nhs", + "objectClass": [ + "top", + "nhsMhs" + ], + "uniqueIdentifier": [ + "S918999410559" + ] + }, + "dn": "uniqueIdentifier=S918999410559,ou=Services,o=nhs", + "raw": { + "nhsApproverURP": [ + "uniqueIdentifier=242853999512,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs" + ], + "nhsContractPropertyTemplateKey": [ + "28" + ], + "nhsDNSApprover": [ + "uniqueIdentifier=283886066515,uniqueIdentifier=747394079517,uid=828249614516,ou=people,o=nhs" + ], + "nhsDateApproved": [ + "20140130191012" + ], + "nhsDateDNSApproved": [ + "20140130191235" + ], + "nhsDateRequested": [ + "20140130190147" + ], + "nhsEPInteractionType": [ + "HL7" + ], + "nhsIDCode": [ + "ODSCODE1" + ], + "nhsMHSAckRequested": [ + "always" + ], + "nhsMHSActor": [ + "urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH" + ], + "nhsMHSDuplicateElimination": [ + "always" + ], + "nhsMHSEndPoint": [ + "https://vpn-client-1411.opentest.hscic.gov.uk/" + ], + "nhsMHSIsAuthenticated": [ + "transient" + ], + "nhsMHSPartyKey": [ + "AP4RTY-K33Y" + ], + "nhsMHSPersistDuration": [ + "PT5M" + ], + "nhsMHSRetries": [ + "2" + ], + "nhsMHSRetryInterval": [ + "PT1M" + ], + "nhsMHSServiceDescription": [ + "OpenTest vpn-client-1411.opentest.hscic.gov.uk" + ], + "nhsMHSSyncReplyMode": [ + "MSHSignalsOnly" + ], + "nhsMHsIN": [ + "MCCI_IN010000UK13" + ], + "nhsMHsSN": [ + "urn:nhs:names:services:psis" + ], + "nhsMhsCPAId": [ + "S918999410559" + ], + "nhsMhsFQDN": [ + "vpn-client-1411.opentest.hscic.gov.uk" + ], + "nhsMhsSvcIA": [ + "urn:nhs:names:services:psis:MCCI_IN010000UK13" + ], + "nhsProductKey": [ + "7374" + ], + "nhsRequestorURP": [ + "uniqueIdentifier=331622135514,uniqueIdentifier=747394079517, uid=828249614516,ou=people,o=nhs" + ], + "objectClass": [ + "top", + "nhsMhs" + ], + "uniqueIdentifier": [ + "S918999410559" + ] + } + } + ] +} diff --git a/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_info.json b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_info.json new file mode 100644 index 000000000..732996963 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_info.json @@ -0,0 +1,62 @@ +{ + "raw": { + "altServer": [], + "configContext": [ + "cn=config" + ], + "entryDN": [ + "" + ], + "namingContexts": [ + "dc=spine2,dc=ncrs,dc=nhs,dc=uk", + "cn=accesslog", + "o=nhs" + ], + "objectClass": [ + "top", + "OpenLDAProotDSE" + ], + "structuralObjectClass": [ + "OpenLDAProotDSE" + ], + "subschemaSubentry": [ + "cn=Subschema" + ], + "supportedCapabilities": [], + "supportedControl": [ + "1.3.6.1.4.1.4203.1.9.1.1", + "2.16.840.1.113730.3.4.18", + "2.16.840.1.113730.3.4.2", + "1.3.6.1.4.1.4203.1.10.1", + "1.2.840.113556.1.4.319", + "1.2.826.0.1.3344810.2.3", + "1.3.6.1.1.13.2", + "1.3.6.1.1.13.1", + "1.3.6.1.1.12" + ], + "supportedExtension": [ + "1.3.6.1.4.1.4203.1.11.1", + "1.3.6.1.4.1.4203.1.11.3", + "1.3.6.1.1.8" + ], + "supportedFeatures": [ + "1.3.6.1.1.14", + "1.3.6.1.4.1.4203.1.5.1", + "1.3.6.1.4.1.4203.1.5.2", + "1.3.6.1.4.1.4203.1.5.3", + "1.3.6.1.4.1.4203.1.5.4", + "1.3.6.1.4.1.4203.1.5.5" + ], + "supportedLDAPVersion": [ + "3" + ], + "supportedSASLMechanisms": [ + "DIGEST-MD5", + "NTLM", + "CRAM-MD5" + ], + "vendorName": [], + "vendorVersion": [] + }, + "type": "DsaInfo" +} diff --git a/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_schema.json b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_schema.json new file mode 100644 index 000000000..bec8d5d37 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/data/my_real_server_schema.json @@ -0,0 +1,659 @@ +{ + "raw": { + "attributeTypes": [ + "( 2.5.4.0 NAME 'objectClass' DESC 'RFC4512: object classes of the entity' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )", + "( 2.5.21.9 NAME 'structuralObjectClass' DESC 'RFC4512: structural object class of entry' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.1 NAME 'createTimestamp' DESC 'RFC4512: time which object was created' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.2 NAME 'modifyTimestamp' DESC 'RFC4512: time which object was last modified' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.3 NAME 'creatorsName' DESC 'RFC4512: name of creator' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.4 NAME 'modifiersName' DESC 'RFC4512: name of last modifier' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.9 NAME 'hasSubordinates' DESC 'X.501: entry has children' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 2.5.18.10 NAME 'subschemaSubentry' DESC 'RFC4512: name of controlling subschema entry' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 1.3.6.1.1.20 NAME 'entryDN' DESC 'DN of the entry' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 1.3.6.1.1.16.4 NAME 'entryUUID' DESC 'UUID of the entry' EQUALITY UUIDMatch ORDERING UUIDOrderingMatch SYNTAX 1.3.6.1.1.16.1 SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", + "( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer' DESC 'RFC4512: alternative servers' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.120.5 NAME 'namingContexts' DESC 'RFC4512: naming contexts' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.120.13 NAME 'supportedControl' DESC 'RFC4512: supported controls' SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.120.7 NAME 'supportedExtension' DESC 'RFC4512: supported extended operations' SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.120.15 NAME 'supportedLDAPVersion' DESC 'RFC4512: supported LDAP versions' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.120.14 NAME 'supportedSASLMechanisms' DESC 'RFC4512: supported SASL mechanisms' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE dSAOperation )", + "( 1.3.6.1.4.1.4203.1.3.5 NAME 'supportedFeatures' DESC 'RFC4512: features supported by the server' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )", + "( 1.3.6.1.1.4 NAME 'vendorName' DESC 'RFC3045: name of implementation vendor' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )", + "( 1.3.6.1.1.5 NAME 'vendorVersion' DESC 'RFC3045: version of implementation' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )", + "( 2.5.21.4 NAME 'matchingRules' DESC 'RFC4512: matching rules' EQUALITY objectIdentifierFirstComponentMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.30 USAGE directoryOperation )", + "( 2.5.21.5 NAME 'attributeTypes' DESC 'RFC4512: attribute types' EQUALITY objectIdentifierFirstComponentMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.3 USAGE directoryOperation )", + "( 2.5.21.6 NAME 'objectClasses' DESC 'RFC4512: object classes' EQUALITY objectIdentifierFirstComponentMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.37 USAGE directoryOperation )", + "( 2.5.21.8 NAME 'matchingRuleUse' DESC 'RFC4512: matching rule uses' EQUALITY objectIdentifierFirstComponentMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.31 USAGE directoryOperation )", + "( 1.3.6.1.4.1.1466.101.120.16 NAME 'ldapSyntaxes' DESC 'RFC4512: LDAP syntaxes' EQUALITY objectIdentifierFirstComponentMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.54 USAGE directoryOperation )", + "( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' ) DESC 'RFC4512: name of aliased object' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.34 NAME 'ref' DESC 'RFC3296: subordinate referral URL' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE distributedOperation )", + "( 1.3.6.1.4.1.1466.101.119.3 NAME 'entryTtl' DESC 'RFC2589: entry time-to-live' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )", + "( 1.3.6.1.4.1.1466.101.119.4 NAME 'dynamicSubtrees' DESC 'RFC2589: dynamic subtrees' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 NO-USER-MODIFICATION USAGE dSAOperation )", + "( 2.5.4.49 NAME 'distinguishedName' DESC 'RFC4519: common supertype of DN attributes' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 2.5.4.41 NAME 'name' DESC 'RFC4519: common supertype of name attributes' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )", + "( 2.5.4.3 NAME ( 'cn' 'commonName' ) DESC 'RFC4519: common name(s) for which the entity is known by' SUP name )", + "( 0.9.2342.19200300.100.1.1 NAME ( 'uid' 'userid' ) DESC 'RFC4519: user identifier' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 1.3.6.1.1.1.1.0 NAME 'uidNumber' DESC 'RFC2307: An integer uniquely identifying a user in an administrative domain' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.1 NAME 'gidNumber' DESC 'RFC2307: An integer uniquely identifying a group in an administrative domain' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 2.5.4.35 NAME 'userPassword' DESC 'RFC4519/2307: password of user' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )", + "( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI' DESC 'RFC2079: Uniform Resource Identifier with optional label' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.5.4.13 NAME 'description' DESC 'RFC4519: descriptive information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )", + "( 2.5.4.34 NAME 'seeAlso' DESC 'RFC4519: DN of related object' SUP distinguishedName )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.78 NAME 'olcConfigFile' DESC 'File for slapd configuration directives' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.79 NAME 'olcConfigDir' DESC 'Directory for slapd configuration backend' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.1 NAME 'olcAccess' DESC 'Access Control List' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.86 NAME 'olcAddContentAcl' DESC 'Check ACLs against content of Add ops' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.2 NAME 'olcAllows' DESC 'Allowed set of deprecated features' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.3 NAME 'olcArgsFile' DESC 'File for slapd command line options' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.5 NAME 'olcAttributeOptions' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.4 NAME 'olcAttributeTypes' DESC 'OpenLDAP attributeTypes' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.6 NAME 'olcAuthIDRewrite' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.7 NAME 'olcAuthzPolicy' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.8 NAME 'olcAuthzRegexp' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.9 NAME 'olcBackend' DESC 'A type of backend' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORDERED 'SIBLINGS' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.10 NAME 'olcConcurrency' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.11 NAME 'olcConnMaxPending' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.12 NAME 'olcConnMaxPendingAuth' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.13 NAME 'olcDatabase' DESC 'The backend type for a database instance' SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.14 NAME 'olcDefaultSearchBase' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.15 NAME 'olcDisallows' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.16 NAME 'olcDitContentRules' DESC 'OpenLDAP DIT content rules' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.20 NAME 'olcExtraAttrs' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.17 NAME 'olcGentleHUP' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.17 NAME 'olcHidden' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.18 NAME 'olcIdleTimeout' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.19 NAME 'olcInclude' SUP labeledURI )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.20 NAME 'olcIndexSubstrIfMinLen' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.21 NAME 'olcIndexSubstrIfMaxLen' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.22 NAME 'olcIndexSubstrAnyLen' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.23 NAME 'olcIndexSubstrAnyStep' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.84 NAME 'olcIndexIntLen' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.4 NAME 'olcLastMod' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.85 NAME 'olcLdapSyntaxes' DESC 'OpenLDAP ldapSyntax' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.5 NAME 'olcLimits' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.93 NAME 'olcListenerThreads' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.26 NAME 'olcLocalSSF' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.27 NAME 'olcLogFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.28 NAME 'olcLogLevel' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.6 NAME 'olcMaxDerefDepth' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.16 NAME 'olcMirrorMode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.30 NAME 'olcModuleLoad' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.31 NAME 'olcModulePath' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.18 NAME 'olcMonitoring' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.32 NAME 'olcObjectClasses' DESC 'OpenLDAP object classes' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.33 NAME 'olcObjectIdentifier' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.34 NAME 'olcOverlay' SUP olcDatabase SINGLE-VALUE X-ORDERED 'SIBLINGS' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.35 NAME 'olcPasswordCryptSaltFormat' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.36 NAME 'olcPasswordHash' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.37 NAME 'olcPidFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.38 NAME 'olcPlugin' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.39 NAME 'olcPluginLogFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.40 NAME 'olcReadOnly' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.41 NAME 'olcReferral' SUP labeledURI SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.7 NAME 'olcReplica' SUP labeledURI EQUALITY caseIgnoreMatch X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.43 NAME 'olcReplicaArgsFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.44 NAME 'olcReplicaPidFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.45 NAME 'olcReplicationInterval' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.46 NAME 'olcReplogFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.47 NAME 'olcRequires' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.48 NAME 'olcRestrict' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.49 NAME 'olcReverseLookup' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.8 NAME 'olcRootDN' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.51 NAME 'olcRootDSE' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.9 NAME 'olcRootPW' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.89 NAME 'olcSaslAuxprops' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.53 NAME 'olcSaslHost' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.54 NAME 'olcSaslRealm' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.56 NAME 'olcSaslSecProps' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.58 NAME 'olcSchemaDN' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.59 NAME 'olcSecurity' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.81 NAME 'olcServerID' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.60 NAME 'olcSizeLimit' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.61 NAME 'olcSockbufMaxIncoming' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.62 NAME 'olcSockbufMaxIncomingAuth' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.83 NAME 'olcSortVals' DESC 'Attributes whose values will always be sorted' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.15 NAME 'olcSubordinate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.10 NAME 'olcSuffix' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.19 NAME 'olcSyncUseSubentry' DESC 'Store sync context in a subentry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.11 NAME 'olcSyncrepl' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.90 NAME 'olcTCPBuffer' DESC 'Custom TCP buffer size' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.66 NAME 'olcThreads' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.67 NAME 'olcTimeLimit' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.68 NAME 'olcTLSCACertificateFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.69 NAME 'olcTLSCACertificatePath' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.70 NAME 'olcTLSCertificateFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.71 NAME 'olcTLSCertificateKeyFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.72 NAME 'olcTLSCipherSuite' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.73 NAME 'olcTLSCRLCheck' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.82 NAME 'olcTLSCRLFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.74 NAME 'olcTLSRandFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.75 NAME 'olcTLSVerifyClient' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.77 NAME 'olcTLSDHParamFile' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.87 NAME 'olcTLSProtocolMin' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.80 NAME 'olcToolThreads' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.12 NAME 'olcUpdateDN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.13 NAME 'olcUpdateRef' SUP labeledURI EQUALITY caseIgnoreMatch )", + "( 1.3.6.1.4.1.4203.1.12.2.3.0.88 NAME 'olcWriteTimeout' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.1 NAME 'olcDbDirectory' DESC 'Directory for database content' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.11 NAME 'olcDbCacheFree' DESC 'Number of extra entries to free when max is reached' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.1 NAME 'olcDbCacheSize' DESC 'Entry cache size in entries' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.2 NAME 'olcDbCheckpoint' DESC 'Database checkpoint interval in kbytes and minutes' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.16 NAME 'olcDbChecksum' DESC 'Enable database checksum validation' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.13 NAME 'olcDbCryptFile' DESC 'Pathname of file containing the DB encryption key' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.14 NAME 'olcDbCryptKey' DESC 'DB encryption key' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.3 NAME 'olcDbConfig' DESC 'BerkeleyDB DB_CONFIG configuration directives' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORDERED 'VALUES' )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.4 NAME 'olcDbNoSync' DESC 'Disable synchronous database writes' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.15 NAME 'olcDbPageSize' DESC 'Page size of specified DB, in Kbytes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.5 NAME 'olcDbDirtyRead' DESC 'Allow reads of uncommitted data' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.12 NAME 'olcDbDNcacheSize' DESC 'DN cache size' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.6 NAME 'olcDbIDLcacheSize' DESC 'IDL cache size in IDLs' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.2 NAME 'olcDbIndex' DESC 'Attribute index parameters' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.7 NAME 'olcDbLinearIndex' DESC 'Index attributes one at a time' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.8 NAME 'olcDbLockDetect' DESC 'Deadlock detection algorithm' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.0.3 NAME 'olcDbMode' DESC 'Unix permissions of database files' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.9 NAME 'olcDbSearchStack' DESC 'Depth of search stack in IDLs' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.2.1.10 NAME 'olcDbShmKey' DESC 'Key for shared memory region' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.1.1 NAME 'olcSpCheckpoint' DESC 'ContextCSN checkpoint interval in ops and minutes' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.1.2 NAME 'olcSpSessionlog' DESC 'Session log size in ops' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.1.3 NAME 'olcSpNoPresent' DESC 'Omit Present phase processing' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.1.4 NAME 'olcSpReloadHint' DESC 'Observe Reload Hint in Request control' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.1 NAME 'olcAccessLogDB' DESC 'Suffix of database for log content' SUP distinguishedName SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.2 NAME 'olcAccessLogOps' DESC 'Operation types to log' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.3 NAME 'olcAccessLogPurge' DESC 'Log cleanup parameters' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.4 NAME 'olcAccessLogSuccess' DESC 'Log successful ops only' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.5 NAME 'olcAccessLogOld' DESC 'Log old values when modifying entries matching the filter' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.6 NAME 'olcAccessLogOldAttr' DESC 'Log old values of these attributes even if unmodified' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.4.1.4203.1.12.2.3.3.4.7 NAME 'olcAccessLogBase' DESC 'Operation types to log under a specific branch' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.5.4.2 NAME 'knowledgeInformation' DESC 'RFC2256: knowledge information' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )", + "( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last (family) name(s) for which the entity is known by' SUP name )", + "( 2.5.4.5 NAME 'serialNumber' DESC 'RFC2256: serial number of the entity' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )", + "( 2.5.4.6 NAME ( 'c' 'countryName' ) DESC 'RFC2256: ISO-3166 country 2-letter code' SUP name SINGLE-VALUE )", + "( 2.5.4.7 NAME ( 'l' 'localityName' ) DESC 'RFC2256: locality which this object resides in' SUP name )", + "( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' ) DESC 'RFC2256: state or province which this object resides in' SUP name )", + "( 2.5.4.9 NAME ( 'street' 'streetAddress' ) DESC 'RFC2256: street address of this object' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )", + "( 2.5.4.10 NAME ( 'o' 'organizationName' ) DESC 'RFC2256: organization this object belongs to' SUP name )", + "( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) DESC 'RFC2256: organizational unit this object belongs to' SUP name )", + "( 2.5.4.12 NAME 'title' DESC 'RFC2256: title associated with the entity' SUP name )", + "( 2.5.4.14 NAME 'searchGuide' DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide' SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )", + "( 2.5.4.15 NAME 'businessCategory' DESC 'RFC2256: business category' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )", + "( 2.5.4.16 NAME 'postalAddress' DESC 'RFC2256: postal address' EQUALITY caseIgnoreListMatch SUBSTR caseIgnoreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )", + "( 2.5.4.17 NAME 'postalCode' DESC 'RFC2256: postal code' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )", + "( 2.5.4.18 NAME 'postOfficeBox' DESC 'RFC2256: Post Office Box' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )", + "( 2.5.4.19 NAME 'physicalDeliveryOfficeName' DESC 'RFC2256: Physical Delivery Office Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )", + "( 2.5.4.20 NAME 'telephoneNumber' DESC 'RFC2256: Telephone Number' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )", + "( 2.5.4.21 NAME 'telexNumber' DESC 'RFC2256: Telex Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )", + "( 2.5.4.22 NAME 'teletexTerminalIdentifier' DESC 'RFC2256: Teletex Terminal Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )", + "( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' ) DESC 'RFC2256: Facsimile (Fax) Telephone Number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )", + "( 2.5.4.24 NAME 'x121Address' DESC 'RFC2256: X.121 Address' EQUALITY numericStringMatch SUBSTR numericStringSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )", + "( 2.5.4.25 NAME 'internationaliSDNNumber' DESC 'RFC2256: international ISDN number' EQUALITY numericStringMatch SUBSTR numericStringSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )", + "( 2.5.4.26 NAME 'registeredAddress' DESC 'RFC2256: registered postal address' SUP postalAddress SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )", + "( 2.5.4.27 NAME 'destinationIndicator' DESC 'RFC2256: destination indicator' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )", + "( 2.5.4.28 NAME 'preferredDeliveryMethod' DESC 'RFC2256: preferred delivery method' SYNTAX 1.3.6.1.4.1.1466.115.121.1.14 SINGLE-VALUE )", + "( 2.5.4.29 NAME 'presentationAddress' DESC 'RFC2256: presentation address' EQUALITY presentationAddressMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.43 SINGLE-VALUE )", + "( 2.5.4.30 NAME 'supportedApplicationContext' DESC 'RFC2256: supported application context' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )", + "( 2.5.4.31 NAME 'member' DESC 'RFC2256: member of a group' SUP distinguishedName )", + "( 2.5.4.32 NAME 'owner' DESC 'RFC2256: owner (of the object)' SUP distinguishedName )", + "( 2.5.4.33 NAME 'roleOccupant' DESC 'RFC2256: occupant of role' SUP distinguishedName )", + "( 2.5.4.36 NAME 'userCertificate' DESC 'RFC2256: X.509 user certificate, use ;binary' EQUALITY certificateExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )", + "( 2.5.4.37 NAME 'cACertificate' DESC 'RFC2256: X.509 CA certificate, use ;binary' EQUALITY certificateExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )", + "( 2.5.4.38 NAME 'authorityRevocationList' DESC 'RFC2256: X.509 authority revocation list, use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )", + "( 2.5.4.39 NAME 'certificateRevocationList' DESC 'RFC2256: X.509 certificate revocation list, use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )", + "( 2.5.4.40 NAME 'crossCertificatePair' DESC 'RFC2256: X.509 cross certificate pair, use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )", + "( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name(s) for which the entity is known by' SUP name )", + "( 2.5.4.43 NAME 'initials' DESC 'RFC2256: initials of some or all of names, but not the surname(s).' SUP name )", + "( 2.5.4.44 NAME 'generationQualifier' DESC 'RFC2256: name qualifier indicating a generation' SUP name )", + "( 2.5.4.45 NAME 'x500UniqueIdentifier' DESC 'RFC2256: X.500 unique identifier' EQUALITY bitStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )", + "( 2.5.4.46 NAME 'dnQualifier' DESC 'RFC2256: DN qualifier' EQUALITY caseIgnoreMatch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )", + "( 2.5.4.47 NAME 'enhancedSearchGuide' DESC 'RFC2256: enhanced search guide' SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )", + "( 2.5.4.48 NAME 'protocolInformation' DESC 'RFC2256: protocol information' EQUALITY protocolInformationMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )", + "( 2.5.4.50 NAME 'uniqueMember' DESC 'RFC2256: unique member of a group' EQUALITY uniqueMemberMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )", + "( 2.5.4.51 NAME 'houseIdentifier' DESC 'RFC2256: house identifier' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )", + "( 2.5.4.52 NAME 'supportedAlgorithms' DESC 'RFC2256: supported algorithms' SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )", + "( 2.5.4.53 NAME 'deltaRevocationList' DESC 'RFC2256: delta revocation list; use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )", + "( 2.5.4.54 NAME 'dmdName' DESC 'RFC2256: name of DMD' SUP name )", + "( 2.5.4.65 NAME 'pseudonym' DESC 'X.520(4th): pseudonym for the object' SUP name )", + "( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mailbox' ) DESC 'RFC1274: RFC822 Mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )", + "( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' ) DESC 'RFC1274/2247: domain component' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain' DESC 'RFC1274: domain associated with object' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.2.840.113549.1.9.1 NAME ( 'email' 'emailAddress' 'pkcs9email' ) DESC 'RFC3280: legacy attribute for email addresses in DNs' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )", + "( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.4 NAME 'info' DESC 'RFC1274: general information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )", + "( 0.9.2342.19200300.100.1.5 NAME ( 'drink' 'favouriteDrink' ) DESC 'RFC1274: favorite drink' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' DESC 'RFC1274: room number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.7 NAME 'photo' DESC 'RFC1274: photo (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )", + "( 0.9.2342.19200300.100.1.8 NAME 'userClass' DESC 'RFC1274: category of user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.9 NAME 'host' DESC 'RFC1274: host computer' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC1274: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' DESC 'RFC1274: unique identifier of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' DESC 'RFC1274: title of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' DESC 'RFC1274: version of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' DESC 'RFC1274: DN of author of document' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' DESC 'RFC1274: location of document original' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.20 NAME ( 'homePhone' 'homeTelephoneNumber' ) DESC 'RFC1274: home telephone number' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )", + "( 0.9.2342.19200300.100.1.21 NAME 'secretary' DESC 'RFC1274: DN of secretary' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox' SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 )", + "( 0.9.2342.19200300.100.1.26 NAME 'aRecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.27 NAME 'mDRecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.28 NAME 'mXRecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.29 NAME 'nSRecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.30 NAME 'sOARecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 0.9.2342.19200300.100.1.38 NAME 'associatedName' DESC 'RFC1274: DN of entry associated with domain' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress' DESC 'RFC1274: home postal address' EQUALITY caseIgnoreListMatch SUBSTR caseIgnoreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )", + "( 0.9.2342.19200300.100.1.40 NAME 'personalTitle' DESC 'RFC1274: personal title' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.41 NAME ( 'mobile' 'mobileTelephoneNumber' ) DESC 'RFC1274: mobile telephone number' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )", + "( 0.9.2342.19200300.100.1.42 NAME ( 'pager' 'pagerTelephoneNumber' ) DESC 'RFC1274: pager telephone number' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )", + "( 0.9.2342.19200300.100.1.43 NAME ( 'co' 'friendlyCountryName' ) DESC 'RFC1274: friendly country name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' DESC 'RFC1274: unique identifer' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus' DESC 'RFC1274: organizational status' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox' DESC 'RFC1274: Janet mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )", + "( 0.9.2342.19200300.100.1.47 NAME 'mailPreferenceOption' DESC 'RFC1274: mail preference option' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 0.9.2342.19200300.100.1.48 NAME 'buildingName' DESC 'RFC1274: name of building' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )", + "( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality' DESC 'RFC1274: DSA Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality' DESC 'RFC1274: Single Level Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQuality' DESC 'RFC1274: Subtree Mininum Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQuality' DESC 'RFC1274: Subtree Maximun Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.53 NAME 'personalSignature' DESC 'RFC1274: Personal Signature (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.23 )", + "( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect' DESC 'RFC1274: DIT Redirect' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 0.9.2342.19200300.100.1.55 NAME 'audio' DESC 'RFC1274: audio (u-law)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )", + "( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' DESC 'RFC1274: publisher of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; the common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' DESC 'The absolute path to the home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.4 NAME 'loginShell' DESC 'The path to the login shell' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.6 NAME 'shadowMin' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.7 NAME 'shadowMax' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.12 NAME 'memberUid' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' DESC 'Netgroup triple' SYNTAX 1.3.6.1.1.1.0.0 )", + "( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' SUP name )", + "( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' DESC 'IP address' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )", + "( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' DESC 'IP network' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' DESC 'IP netmask' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.22 NAME 'macAddress' DESC 'MAC address' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )", + "( 1.3.6.1.1.1.1.23 NAME 'bootParameter' DESC 'rpc.bootparamd parameter' SYNTAX 1.3.6.1.1.1.0.1 )", + "( 1.3.6.1.1.1.1.24 NAME 'bootFile' DESC 'Boot image name' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.1.1.1.26 NAME 'nisMapName' SUP name )", + "( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.1 NAME 'carLicense' DESC 'RFC2798: vehicle license or registration plate' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.16.840.1.113730.3.1.2 NAME 'departmentNumber' DESC 'RFC2798: identifies a department within an organization' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.16.840.1.113730.3.1.241 NAME 'displayName' DESC 'RFC2798: preferred name to be used when displaying entries' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.3 NAME 'employeeNumber' DESC 'RFC2798: numerically identifies an employee within an organization' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.4 NAME 'employeeType' DESC 'RFC2798: type of employment for a person' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 0.9.2342.19200300.100.1.60 NAME 'jpegPhoto' DESC 'RFC2798: a JPEG image' SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )", + "( 2.16.840.1.113730.3.1.39 NAME 'preferredLanguage' DESC 'RFC2798: preferred written or spoken language for a person' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.40 NAME 'userSMIMECertificate' DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )", + "( 2.16.840.1.113730.3.1.216 NAME 'userPKCS12' DESC 'RFC2798: personal identity information, a PKCS #12 PFX' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )", + "( 1.2.826.0.1285.0.2.1.82 NAME 'nhsMHSPartyKey' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.239 NAME 'nhsRestricted' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.244 NAME 'nhsNN4BName' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.37 NAME 'nhsLeftDate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.36 NAME 'nhsJoinDate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.30 NAME 'nhsDHSCcode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.2 NAME 'nhsCountry' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.10 NAME 'nhsIDCode' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.12 NAME 'nhsRoles' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.15 NAME 'nhsOrgType' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.16 NAME 'nhsAltOrgNames' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.1.23 NAME 'nhsSHAcode' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.26 NAME 'nhsWorkGroups' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.32 NAME 'nhsOrgOpenDate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.33 NAME 'nhsOrgCloseDate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.34 NAME 'nhsOrgSubType' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.35 NAME 'nhsParentOrgCode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.42 NAME 'nhsPCTCode' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.43 NAME 'nhsRA' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.44 NAME 'nhsJobRole' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.45 NAME 'nhsAreaOfWork' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.46 NAME 'nhsBusinessFunctions' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.47 NAME 'nhsSiteNames' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.52 NAME 'nhsOCSPredecessor' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.53 NAME 'nhsOCSSuccessor' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.54 NAME 'nhsOCSPRCode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.55 NAME 'nhsPersonStatus' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.56 NAME 'nhsSiteCodes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.57 NAME 'nhsDeptCodes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.80 NAME 'nhsMHSServiceName' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.81 NAME 'nhsMHSCategoryBag' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.83 NAME 'nhsMHSActionName' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.84 NAME 'nhsMHSEndPoint' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.85 NAME 'nhsMHSServiceDescription' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.86 NAME 'nhsMHSIsAuthenticated' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.87 NAME 'nhsMHSPersistDuration' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.88 NAME 'nhsMHSRetries' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.89 NAME 'nhsMHSRetryInterval' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.90 NAME 'nhsMHSSyncReplyMode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.91 NAME 'nhsMHSAckRequested' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.92 NAME 'nhsMHSDuplicateElimination' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.93 NAME 'nhsMHSActor' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.104 NAME 'nhsJobRoleCode' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.105 NAME 'nhsAreaOfWorkCodes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.106 NAME 'nhsBusinessFunctionsCodes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.107 NAME 'nhsWorkGroupsCodes' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.109 NAME 'nhsList3Code' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.108 NAME 'nhsList3Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.100 NAME 'nhsList2Code' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.101 NAME 'nhsList2Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.102 NAME 'nhsList1Code' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.103 NAME 'nhsList1Name' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.111 NAME 'nhsMiddleNames' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.113 NAME 'nhsPuSecret' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.115 NAME 'nhsTelUID' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.121 NAME 'nhsAsACF' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.122 NAME 'nhsAsSvcIA' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.123 NAME 'nhsMhsSvcIA' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.124 NAME 'nhsMhsCPAId' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.125 NAME 'nhsGNC' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.126 NAME 'nhsMHsSN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.127 NAME 'nhsMHsIN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.131 NAME 'nhsWgClosed' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.134 NAME 'nhsWgRoot' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.135 NAME 'nhsPwgId' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.136 NAME 'nhsCwgId' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.137 NAME 'nhsLegalEst' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.138 NAME 'nhsWgType' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.139 NAME 'nhsLrOrderExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.140 NAME 'nhsLrExprsExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.141 NAME 'nhsLrCpmlnExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.142 NAME 'nhsLrRefAbanFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.143 NAME 'nhsLrRefDisFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.144 NAME 'nhsLrRefAccFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.145 NAME 'nhsLrRefExpFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.146 NAME 'nhsLrRegFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.147 NAME 'nhsLrRegExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.148 NAME 'nhsLrSrefFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.149 NAME 'nhsLrRefPostAccFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.150 NAME 'nhsLrRefAccExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.151 NAME 'nhsLrCreateExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.152 NAME 'nhsLrCloseExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.153 NAME 'nhsLrGrantExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.154 NAME 'nhsLrSelfExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.161 NAME 'nhsSupPrescriber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.162 NAME 'nhsPrinOcc' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.163 NAME 'nhsRPSGB' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.164 NAME 'nhsGMC' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.165 NAME 'nhsGDP' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.166 NAME 'nhsRCN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.167 NAME 'nhsConsultant' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.168 NAME 'nhsGMP' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.169 NAME 'nhsGDC' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.170 NAME 'nhsNMC' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.171 NAME 'nhsCreateDate' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.174 NAME 'nhsStatus' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.175 NAME 'nhsAsClient' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.176 NAME 'nhsAsCategoryBag' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.178 NAME 'nhsWgStatus' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.179 NAME 'nhsXPwgId' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.180 NAME 'nhsXCwgId' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.214 NAME 'nhsRequestorURP' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.215 NAME 'nhsDateRequested' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.216 NAME 'nhsApproverURP' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.217 NAME 'nhsDateApproved' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.218 NAME 'nhsDNSApprover' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.219 NAME 'nhsDateDNSApproved' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.220 NAME 'nhsProductKey' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.222 NAME 'nhsEPInteractionType' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.223 NAME 'nhsContractPropertyTemplateKey' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.224 NAME 'nhsMhsFQDN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.225 NAME 'nhsMhsIPAddress' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.226 NAME 'nhsMhsNetwork' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.227 NAME 'nhsMhsSinCode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.228 NAME 'nhsLrGPDeregFreeze' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.229 NAME 'nhsLrGPDeregExpiry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.234 NAME 'nhsOrgTypeCode' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.235 NAME 'nhsSyntheticIndicator' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.245 NAME 'nhsNN4BCode' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.281 NAME 'nhsEBS' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.296 NAME 'firstchangenumber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.297 NAME 'lastchangenumber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.298 NAME 'changenumber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.19 NAME 'nhsAlertMethod' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.20 NAME 'nhsAlertBlock' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.21 NAME 'nhsAltAlertRecipient' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.59 NAME 'nhsOrgMail' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.157 NAME 'nhsProductName' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.1.158 NAME 'nhsProductVersion' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'nhsSDS' )" + ], + "cn": [ + "Subschema" + ], + "createTimestamp": [ + "20190120215555Z" + ], + "dITContentRules": [], + "dITStructureRules": [], + "entryDN": [ + "cn=Subschema" + ], + "ldapSyntaxes": [ + "( 1.3.6.1.4.1.1466.115.121.1.4 DESC 'Audio' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.5 DESC 'Binary' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.6 DESC 'Bit String' )", + "( 1.3.6.1.4.1.1466.115.121.1.7 DESC 'Boolean' )", + "( 1.3.6.1.4.1.1466.115.121.1.8 DESC 'Certificate' X-BINARY-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.9 DESC 'Certificate List' X-BINARY-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.10 DESC 'Certificate Pair' X-BINARY-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.4203.666.11.10.2.1 DESC 'X.509 AttributeCertificate' X-BINARY-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.12 DESC 'Distinguished Name' )", + "( 1.2.36.79672281.1.5.0 DESC 'RDN' )", + "( 1.3.6.1.4.1.1466.115.121.1.14 DESC 'Delivery Method' )", + "( 1.3.6.1.4.1.1466.115.121.1.15 DESC 'Directory String' )", + "( 1.3.6.1.4.1.1466.115.121.1.22 DESC 'Facsimile Telephone Number' )", + "( 1.3.6.1.4.1.1466.115.121.1.24 DESC 'Generalized Time' )", + "( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'IA5 String' )", + "( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'Integer' )", + "( 1.3.6.1.4.1.1466.115.121.1.28 DESC 'JPEG' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.34 DESC 'Name And Optional UID' )", + "( 1.3.6.1.4.1.1466.115.121.1.36 DESC 'Numeric String' )", + "( 1.3.6.1.4.1.1466.115.121.1.38 DESC 'OID' )", + "( 1.3.6.1.4.1.1466.115.121.1.39 DESC 'Other Mailbox' )", + "( 1.3.6.1.4.1.1466.115.121.1.40 DESC 'Octet String' )", + "( 1.3.6.1.4.1.1466.115.121.1.41 DESC 'Postal Address' )", + "( 1.3.6.1.4.1.1466.115.121.1.44 DESC 'Printable String' )", + "( 1.3.6.1.4.1.1466.115.121.1.11 DESC 'Country String' )", + "( 1.3.6.1.4.1.1466.115.121.1.45 DESC 'SubtreeSpecification' )", + "( 1.3.6.1.4.1.1466.115.121.1.49 DESC 'Supported Algorithm' X-BINARY-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )", + "( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )", + "( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )", + "( 1.3.6.1.1.1.0.0 DESC 'RFC2307 NIS Netgroup Triple' )", + "( 1.3.6.1.1.1.0.1 DESC 'RFC2307 Boot Parameter' )", + "( 1.3.6.1.1.16.1 DESC 'UUID' )" + ], + "matchingRuleUse": [ + "( 1.2.840.113556.1.4.804 NAME 'integerBitOrMatch' APPLIES ( supportedLDAPVersion $ entryTtl $ uidNumber $ gidNumber $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcIdleTimeout $ olcIndexSubstrIfMinLen $ olcIndexSubstrIfMaxLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcListenerThreads $ olcLocalSSF $ olcMaxDerefDepth $ olcReplicationInterval $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcThreads $ olcToolThreads $ olcWriteTimeout $ olcDbCacheFree $ olcDbCacheSize $ olcDbDNcacheSize $ olcDbIDLcacheSize $ olcDbSearchStack $ olcDbShmKey $ olcSpSessionlog $ mailPreferenceOption $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipServicePort $ ipProtocolNumber $ oncRpcNumber ) )", + "( 1.2.840.113556.1.4.803 NAME 'integerBitAndMatch' APPLIES ( supportedLDAPVersion $ entryTtl $ uidNumber $ gidNumber $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcIdleTimeout $ olcIndexSubstrIfMinLen $ olcIndexSubstrIfMaxLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcListenerThreads $ olcLocalSSF $ olcMaxDerefDepth $ olcReplicationInterval $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcThreads $ olcToolThreads $ olcWriteTimeout $ olcDbCacheFree $ olcDbCacheSize $ olcDbDNcacheSize $ olcDbIDLcacheSize $ olcDbSearchStack $ olcDbShmKey $ olcSpSessionlog $ mailPreferenceOption $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipServicePort $ ipProtocolNumber $ oncRpcNumber ) )", + "( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match' APPLIES ( altServer $ olcDbConfig $ mail $ dc $ associatedDomain $ email $ aRecord $ mDRecord $ mXRecord $ nSRecord $ sOARecord $ cNAMERecord $ janetMailbox $ gecos $ homeDirectory $ loginShell $ memberUid $ memberNisNetgroup $ ipHostNumber $ ipNetworkNumber $ ipNetmaskNumber $ macAddress $ bootFile $ nisMapEntry ) )", + "( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match' APPLIES ( altServer $ olcDbConfig $ mail $ dc $ associatedDomain $ email $ aRecord $ mDRecord $ mXRecord $ nSRecord $ sOARecord $ cNAMERecord $ janetMailbox $ gecos $ homeDirectory $ loginShell $ memberUid $ memberNisNetgroup $ ipHostNumber $ ipNetworkNumber $ ipNetmaskNumber $ macAddress $ bootFile $ nisMapEntry ) )", + "( 2.5.13.38 NAME 'certificateListExactMatch' APPLIES ( authorityRevocationList $ certificateRevocationList $ deltaRevocationList ) )", + "( 2.5.13.34 NAME 'certificateExactMatch' APPLIES ( userCertificate $ cACertificate ) )", + "( 2.5.13.30 NAME 'objectIdentifierFirstComponentMatch' APPLIES ( supportedControl $ supportedExtension $ supportedFeatures $ ldapSyntaxes $ supportedApplicationContext ) )", + "( 2.5.13.29 NAME 'integerFirstComponentMatch' APPLIES ( supportedLDAPVersion $ entryTtl $ uidNumber $ gidNumber $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcIdleTimeout $ olcIndexSubstrIfMinLen $ olcIndexSubstrIfMaxLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcListenerThreads $ olcLocalSSF $ olcMaxDerefDepth $ olcReplicationInterval $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcThreads $ olcToolThreads $ olcWriteTimeout $ olcDbCacheFree $ olcDbCacheSize $ olcDbDNcacheSize $ olcDbIDLcacheSize $ olcDbSearchStack $ olcDbShmKey $ olcSpSessionlog $ mailPreferenceOption $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipServicePort $ ipProtocolNumber $ oncRpcNumber ) )", + "( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' APPLIES ( createTimestamp $ modifyTimestamp ) )", + "( 2.5.13.27 NAME 'generalizedTimeMatch' APPLIES ( createTimestamp $ modifyTimestamp ) )", + "( 2.5.13.24 NAME 'protocolInformationMatch' APPLIES protocolInformation )", + "( 2.5.13.23 NAME 'uniqueMemberMatch' APPLIES uniqueMember )", + "( 2.5.13.22 NAME 'presentationAddressMatch' APPLIES presentationAddress )", + "( 2.5.13.20 NAME 'telephoneNumberMatch' APPLIES ( telephoneNumber $ homePhone $ mobile $ pager ) )", + "( 2.5.13.18 NAME 'octetStringOrderingMatch' APPLIES ( userPassword $ olcDbCryptKey ) )", + "( 2.5.13.17 NAME 'octetStringMatch' APPLIES ( userPassword $ olcDbCryptKey ) )", + "( 2.5.13.16 NAME 'bitStringMatch' APPLIES x500UniqueIdentifier )", + "( 2.5.13.15 NAME 'integerOrderingMatch' APPLIES ( supportedLDAPVersion $ entryTtl $ uidNumber $ gidNumber $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcIdleTimeout $ olcIndexSubstrIfMinLen $ olcIndexSubstrIfMaxLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcListenerThreads $ olcLocalSSF $ olcMaxDerefDepth $ olcReplicationInterval $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcThreads $ olcToolThreads $ olcWriteTimeout $ olcDbCacheFree $ olcDbCacheSize $ olcDbDNcacheSize $ olcDbIDLcacheSize $ olcDbSearchStack $ olcDbShmKey $ olcSpSessionlog $ mailPreferenceOption $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipServicePort $ ipProtocolNumber $ oncRpcNumber ) )", + "( 2.5.13.14 NAME 'integerMatch' APPLIES ( supportedLDAPVersion $ entryTtl $ uidNumber $ gidNumber $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcIdleTimeout $ olcIndexSubstrIfMinLen $ olcIndexSubstrIfMaxLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcListenerThreads $ olcLocalSSF $ olcMaxDerefDepth $ olcReplicationInterval $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcThreads $ olcToolThreads $ olcWriteTimeout $ olcDbCacheFree $ olcDbCacheSize $ olcDbDNcacheSize $ olcDbIDLcacheSize $ olcDbSearchStack $ olcDbShmKey $ olcSpSessionlog $ mailPreferenceOption $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipServicePort $ ipProtocolNumber $ oncRpcNumber ) )", + "( 2.5.13.13 NAME 'booleanMatch' APPLIES ( hasSubordinates $ olcAddContentAcl $ olcGentleHUP $ olcHidden $ olcLastMod $ olcMirrorMode $ olcMonitoring $ olcReadOnly $ olcReverseLookup $ olcSyncUseSubentry $ olcDbChecksum $ olcDbNoSync $ olcDbDirtyRead $ olcDbLinearIndex $ olcSpNoPresent $ olcSpReloadHint $ olcAccessLogSuccess ) )", + "( 2.5.13.11 NAME 'caseIgnoreListMatch' APPLIES ( postalAddress $ registeredAddress $ homePostalAddress ) )", + "( 2.5.13.9 NAME 'numericStringOrderingMatch' APPLIES ( x121Address $ internationaliSDNNumber ) )", + "( 2.5.13.8 NAME 'numericStringMatch' APPLIES ( x121Address $ internationaliSDNNumber ) )", + "( 2.5.13.7 NAME 'caseExactSubstringsMatch' APPLIES ( serialNumber $ destinationIndicator $ dnQualifier ) )", + "( 2.5.13.6 NAME 'caseExactOrderingMatch' APPLIES ( supportedSASLMechanisms $ vendorName $ vendorVersion $ ref $ name $ cn $ uid $ labeledURI $ description $ olcConfigFile $ olcConfigDir $ olcAccess $ olcAllows $ olcArgsFile $ olcAttributeOptions $ olcAttributeTypes $ olcAuthIDRewrite $ olcAuthzPolicy $ olcAuthzRegexp $ olcBackend $ olcDatabase $ olcDisallows $ olcDitContentRules $ olcExtraAttrs $ olcInclude $ olcLdapSyntaxes $ olcLimits $ olcLogFile $ olcLogLevel $ olcModuleLoad $ olcModulePath $ olcObjectClasses $ olcObjectIdentifier $ olcOverlay $ olcPasswordCryptSaltFormat $ olcPasswordHash $ olcPidFile $ olcPlugin $ olcPluginLogFile $ olcReferral $ olcReplica $ olcReplicaArgsFile $ olcReplicaPidFile $ olcReplogFile $ olcRequires $ olcRestrict $ olcRootDSE $ olcRootPW $ olcSaslAuxprops $ olcSaslHost $ olcSaslRealm $ olcSaslSecProps $ olcSecurity $ olcServerID $ olcSizeLimit $ olcSortVals $ olcSubordinate $ olcSyncrepl $ olcTCPBuffer $ olcTimeLimit $ olcTLSCACertificateFile $ olcTLSCACertificatePath $ olcTLSCertificateFile $ olcTLSCertificateKeyFile $ olcTLSCipherSuite $ olcTLSCRLCheck $ olcTLSCRLFile $ olcTLSRandFile $ olcTLSVerifyClient $ olcTLSDHParamFile $ olcTLSProtocolMin $ olcUpdateRef $ olcDbDirectory $ olcDbCheckpoint $ olcDbCryptFile $ olcDbPageSize $ olcDbIndex $ olcDbLockDetect $ olcDbMode $ olcSpCheckpoint $ olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogOld $ olcAccessLogOldAttr $ olcAccessLogBase $ knowledgeInformation $ sn $ serialNumber $ c $ l $ st $ street $ o $ ou $ title $ businessCategory $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ destinationIndicator $ givenName $ initials $ generationQualifier $ dnQualifier $ houseIdentifier $ dmdName $ pseudonym $ textEncodedORAddress $ info $ drink $ roomNumber $ userClass $ host $ documentIdentifier $ documentTitle $ documentVersion $ documentLocation $ personalTitle $ co $ uniqueIdentifier $ organizationalStatus $ buildingName $ documentPublisher $ ipServiceProtocol $ nisMapName $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ preferredLanguage $ nhsMHSPartyKey $ nhsRestricted $ nhsNN4BName $ nhsLeftDate $ nhsJoinDate $ nhsDHSCcode $ nhsCountry $ nhsIDCode $ nhsRoles $ nhsOrgType $ nhsAltOrgNames $ nhsSHAcode $ nhsWorkGroups $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsOrgSubType $ nhsParentOrgCode $ nhsPCTCode $ nhsRA $ nhsJobRole $ nhsAreaOfWork $ nhsBusinessFunctions $ nhsSiteNames $ nhsOCSPredecessor $ nhsOCSSuccessor $ nhsOCSPRCode $ nhsPersonStatus $ nhsSiteCodes $ nhsDeptCodes $ nhsMHSServiceName $ nhsMHSCategoryBag $ nhsMHSActionName $ nhsMHSEndPoint $ nhsMHSServiceDescription $ nhsMHSIsAuthenticated $ nhsMHSPersistDuration $ nhsMHSRetries $ nhsMHSRetryInterval $ nhsMHSSyncReplyMode $ nhsMHSAckRequested $ nhsMHSDuplicateElimination $ nhsMHSActor $ nhsJobRoleCode $ nhsAreaOfWorkCodes $ nhsBusinessFunctionsCodes $ nhsWorkGroupsCodes $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name $ nhsMiddleNames $ nhsPuSecret $ nhsTelUID $ nhsAsACF $ nhsAsSvcIA $ nhsMhsSvcIA $ nhsMhsCPAId $ nhsGNC $ nhsMHsSN $ nhsMHsIN $ nhsWgClosed $ nhsWgRoot $ nhsPwgId $ nhsCwgId $ nhsLegalEst $ nhsWgType $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry $ nhsSupPrescriber $ nhsPrinOcc $ nhsRPSGB $ nhsGMC $ nhsGDP $ nhsRCN $ nhsConsultant $ nhsGMP $ nhsGDC $ nhsNMC $ nhsCreateDate $ nhsStatus $ nhsAsClient $ nhsAsCategoryBag $ nhsWgStatus $ nhsXPwgId $ nhsXCwgId $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved $ nhsDNSApprover $ nhsDateDNSApproved $ nhsProductKey $ nhsEPInteractionType $ nhsContractPropertyTemplateKey $ nhsMhsFQDN $ nhsMhsIPAddress $ nhsMhsNetwork $ nhsMhsSinCode $ nhsLrGPDeregFreeze $ nhsLrGPDeregExpiry $ nhsOrgTypeCode $ nhsSyntheticIndicator $ nhsNN4BCode $ nhsEBS $ firstchangenumber $ lastchangenumber $ changenumber $ nhsAlertMethod $ nhsAlertBlock $ nhsAltAlertRecipient $ nhsOrgMail $ nhsProductName $ nhsProductVersion ) )", + "( 2.5.13.5 NAME 'caseExactMatch' APPLIES ( supportedSASLMechanisms $ vendorName $ vendorVersion $ ref $ name $ cn $ uid $ labeledURI $ description $ olcConfigFile $ olcConfigDir $ olcAccess $ olcAllows $ olcArgsFile $ olcAttributeOptions $ olcAttributeTypes $ olcAuthIDRewrite $ olcAuthzPolicy $ olcAuthzRegexp $ olcBackend $ olcDatabase $ olcDisallows $ olcDitContentRules $ olcExtraAttrs $ olcInclude $ olcLdapSyntaxes $ olcLimits $ olcLogFile $ olcLogLevel $ olcModuleLoad $ olcModulePath $ olcObjectClasses $ olcObjectIdentifier $ olcOverlay $ olcPasswordCryptSaltFormat $ olcPasswordHash $ olcPidFile $ olcPlugin $ olcPluginLogFile $ olcReferral $ olcReplica $ olcReplicaArgsFile $ olcReplicaPidFile $ olcReplogFile $ olcRequires $ olcRestrict $ olcRootDSE $ olcRootPW $ olcSaslAuxprops $ olcSaslHost $ olcSaslRealm $ olcSaslSecProps $ olcSecurity $ olcServerID $ olcSizeLimit $ olcSortVals $ olcSubordinate $ olcSyncrepl $ olcTCPBuffer $ olcTimeLimit $ olcTLSCACertificateFile $ olcTLSCACertificatePath $ olcTLSCertificateFile $ olcTLSCertificateKeyFile $ olcTLSCipherSuite $ olcTLSCRLCheck $ olcTLSCRLFile $ olcTLSRandFile $ olcTLSVerifyClient $ olcTLSDHParamFile $ olcTLSProtocolMin $ olcUpdateRef $ olcDbDirectory $ olcDbCheckpoint $ olcDbCryptFile $ olcDbPageSize $ olcDbIndex $ olcDbLockDetect $ olcDbMode $ olcSpCheckpoint $ olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogOld $ olcAccessLogOldAttr $ olcAccessLogBase $ knowledgeInformation $ sn $ serialNumber $ c $ l $ st $ street $ o $ ou $ title $ businessCategory $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ destinationIndicator $ givenName $ initials $ generationQualifier $ dnQualifier $ houseIdentifier $ dmdName $ pseudonym $ textEncodedORAddress $ info $ drink $ roomNumber $ userClass $ host $ documentIdentifier $ documentTitle $ documentVersion $ documentLocation $ personalTitle $ co $ uniqueIdentifier $ organizationalStatus $ buildingName $ documentPublisher $ ipServiceProtocol $ nisMapName $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ preferredLanguage $ nhsMHSPartyKey $ nhsRestricted $ nhsNN4BName $ nhsLeftDate $ nhsJoinDate $ nhsDHSCcode $ nhsCountry $ nhsIDCode $ nhsRoles $ nhsOrgType $ nhsAltOrgNames $ nhsSHAcode $ nhsWorkGroups $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsOrgSubType $ nhsParentOrgCode $ nhsPCTCode $ nhsRA $ nhsJobRole $ nhsAreaOfWork $ nhsBusinessFunctions $ nhsSiteNames $ nhsOCSPredecessor $ nhsOCSSuccessor $ nhsOCSPRCode $ nhsPersonStatus $ nhsSiteCodes $ nhsDeptCodes $ nhsMHSServiceName $ nhsMHSCategoryBag $ nhsMHSActionName $ nhsMHSEndPoint $ nhsMHSServiceDescription $ nhsMHSIsAuthenticated $ nhsMHSPersistDuration $ nhsMHSRetries $ nhsMHSRetryInterval $ nhsMHSSyncReplyMode $ nhsMHSAckRequested $ nhsMHSDuplicateElimination $ nhsMHSActor $ nhsJobRoleCode $ nhsAreaOfWorkCodes $ nhsBusinessFunctionsCodes $ nhsWorkGroupsCodes $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name $ nhsMiddleNames $ nhsPuSecret $ nhsTelUID $ nhsAsACF $ nhsAsSvcIA $ nhsMhsSvcIA $ nhsMhsCPAId $ nhsGNC $ nhsMHsSN $ nhsMHsIN $ nhsWgClosed $ nhsWgRoot $ nhsPwgId $ nhsCwgId $ nhsLegalEst $ nhsWgType $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry $ nhsSupPrescriber $ nhsPrinOcc $ nhsRPSGB $ nhsGMC $ nhsGDP $ nhsRCN $ nhsConsultant $ nhsGMP $ nhsGDC $ nhsNMC $ nhsCreateDate $ nhsStatus $ nhsAsClient $ nhsAsCategoryBag $ nhsWgStatus $ nhsXPwgId $ nhsXCwgId $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved $ nhsDNSApprover $ nhsDateDNSApproved $ nhsProductKey $ nhsEPInteractionType $ nhsContractPropertyTemplateKey $ nhsMhsFQDN $ nhsMhsIPAddress $ nhsMhsNetwork $ nhsMhsSinCode $ nhsLrGPDeregFreeze $ nhsLrGPDeregExpiry $ nhsOrgTypeCode $ nhsSyntheticIndicator $ nhsNN4BCode $ nhsEBS $ firstchangenumber $ lastchangenumber $ changenumber $ nhsAlertMethod $ nhsAlertBlock $ nhsAltAlertRecipient $ nhsOrgMail $ nhsProductName $ nhsProductVersion ) )", + "( 2.5.13.4 NAME 'caseIgnoreSubstringsMatch' APPLIES ( serialNumber $ destinationIndicator $ dnQualifier ) )", + "( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' APPLIES ( supportedSASLMechanisms $ vendorName $ vendorVersion $ ref $ name $ cn $ uid $ labeledURI $ description $ olcConfigFile $ olcConfigDir $ olcAccess $ olcAllows $ olcArgsFile $ olcAttributeOptions $ olcAttributeTypes $ olcAuthIDRewrite $ olcAuthzPolicy $ olcAuthzRegexp $ olcBackend $ olcDatabase $ olcDisallows $ olcDitContentRules $ olcExtraAttrs $ olcInclude $ olcLdapSyntaxes $ olcLimits $ olcLogFile $ olcLogLevel $ olcModuleLoad $ olcModulePath $ olcObjectClasses $ olcObjectIdentifier $ olcOverlay $ olcPasswordCryptSaltFormat $ olcPasswordHash $ olcPidFile $ olcPlugin $ olcPluginLogFile $ olcReferral $ olcReplica $ olcReplicaArgsFile $ olcReplicaPidFile $ olcReplogFile $ olcRequires $ olcRestrict $ olcRootDSE $ olcRootPW $ olcSaslAuxprops $ olcSaslHost $ olcSaslRealm $ olcSaslSecProps $ olcSecurity $ olcServerID $ olcSizeLimit $ olcSortVals $ olcSubordinate $ olcSyncrepl $ olcTCPBuffer $ olcTimeLimit $ olcTLSCACertificateFile $ olcTLSCACertificatePath $ olcTLSCertificateFile $ olcTLSCertificateKeyFile $ olcTLSCipherSuite $ olcTLSCRLCheck $ olcTLSCRLFile $ olcTLSRandFile $ olcTLSVerifyClient $ olcTLSDHParamFile $ olcTLSProtocolMin $ olcUpdateRef $ olcDbDirectory $ olcDbCheckpoint $ olcDbCryptFile $ olcDbPageSize $ olcDbIndex $ olcDbLockDetect $ olcDbMode $ olcSpCheckpoint $ olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogOld $ olcAccessLogOldAttr $ olcAccessLogBase $ knowledgeInformation $ sn $ serialNumber $ c $ l $ st $ street $ o $ ou $ title $ businessCategory $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ destinationIndicator $ givenName $ initials $ generationQualifier $ dnQualifier $ houseIdentifier $ dmdName $ pseudonym $ textEncodedORAddress $ info $ drink $ roomNumber $ userClass $ host $ documentIdentifier $ documentTitle $ documentVersion $ documentLocation $ personalTitle $ co $ uniqueIdentifier $ organizationalStatus $ buildingName $ documentPublisher $ ipServiceProtocol $ nisMapName $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ preferredLanguage $ nhsMHSPartyKey $ nhsRestricted $ nhsNN4BName $ nhsLeftDate $ nhsJoinDate $ nhsDHSCcode $ nhsCountry $ nhsIDCode $ nhsRoles $ nhsOrgType $ nhsAltOrgNames $ nhsSHAcode $ nhsWorkGroups $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsOrgSubType $ nhsParentOrgCode $ nhsPCTCode $ nhsRA $ nhsJobRole $ nhsAreaOfWork $ nhsBusinessFunctions $ nhsSiteNames $ nhsOCSPredecessor $ nhsOCSSuccessor $ nhsOCSPRCode $ nhsPersonStatus $ nhsSiteCodes $ nhsDeptCodes $ nhsMHSServiceName $ nhsMHSCategoryBag $ nhsMHSActionName $ nhsMHSEndPoint $ nhsMHSServiceDescription $ nhsMHSIsAuthenticated $ nhsMHSPersistDuration $ nhsMHSRetries $ nhsMHSRetryInterval $ nhsMHSSyncReplyMode $ nhsMHSAckRequested $ nhsMHSDuplicateElimination $ nhsMHSActor $ nhsJobRoleCode $ nhsAreaOfWorkCodes $ nhsBusinessFunctionsCodes $ nhsWorkGroupsCodes $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name $ nhsMiddleNames $ nhsPuSecret $ nhsTelUID $ nhsAsACF $ nhsAsSvcIA $ nhsMhsSvcIA $ nhsMhsCPAId $ nhsGNC $ nhsMHsSN $ nhsMHsIN $ nhsWgClosed $ nhsWgRoot $ nhsPwgId $ nhsCwgId $ nhsLegalEst $ nhsWgType $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry $ nhsSupPrescriber $ nhsPrinOcc $ nhsRPSGB $ nhsGMC $ nhsGDP $ nhsRCN $ nhsConsultant $ nhsGMP $ nhsGDC $ nhsNMC $ nhsCreateDate $ nhsStatus $ nhsAsClient $ nhsAsCategoryBag $ nhsWgStatus $ nhsXPwgId $ nhsXCwgId $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved $ nhsDNSApprover $ nhsDateDNSApproved $ nhsProductKey $ nhsEPInteractionType $ nhsContractPropertyTemplateKey $ nhsMhsFQDN $ nhsMhsIPAddress $ nhsMhsNetwork $ nhsMhsSinCode $ nhsLrGPDeregFreeze $ nhsLrGPDeregExpiry $ nhsOrgTypeCode $ nhsSyntheticIndicator $ nhsNN4BCode $ nhsEBS $ firstchangenumber $ lastchangenumber $ changenumber $ nhsAlertMethod $ nhsAlertBlock $ nhsAltAlertRecipient $ nhsOrgMail $ nhsProductName $ nhsProductVersion ) )", + "( 2.5.13.2 NAME 'caseIgnoreMatch' APPLIES ( supportedSASLMechanisms $ vendorName $ vendorVersion $ ref $ name $ cn $ uid $ labeledURI $ description $ olcConfigFile $ olcConfigDir $ olcAccess $ olcAllows $ olcArgsFile $ olcAttributeOptions $ olcAttributeTypes $ olcAuthIDRewrite $ olcAuthzPolicy $ olcAuthzRegexp $ olcBackend $ olcDatabase $ olcDisallows $ olcDitContentRules $ olcExtraAttrs $ olcInclude $ olcLdapSyntaxes $ olcLimits $ olcLogFile $ olcLogLevel $ olcModuleLoad $ olcModulePath $ olcObjectClasses $ olcObjectIdentifier $ olcOverlay $ olcPasswordCryptSaltFormat $ olcPasswordHash $ olcPidFile $ olcPlugin $ olcPluginLogFile $ olcReferral $ olcReplica $ olcReplicaArgsFile $ olcReplicaPidFile $ olcReplogFile $ olcRequires $ olcRestrict $ olcRootDSE $ olcRootPW $ olcSaslAuxprops $ olcSaslHost $ olcSaslRealm $ olcSaslSecProps $ olcSecurity $ olcServerID $ olcSizeLimit $ olcSortVals $ olcSubordinate $ olcSyncrepl $ olcTCPBuffer $ olcTimeLimit $ olcTLSCACertificateFile $ olcTLSCACertificatePath $ olcTLSCertificateFile $ olcTLSCertificateKeyFile $ olcTLSCipherSuite $ olcTLSCRLCheck $ olcTLSCRLFile $ olcTLSRandFile $ olcTLSVerifyClient $ olcTLSDHParamFile $ olcTLSProtocolMin $ olcUpdateRef $ olcDbDirectory $ olcDbCheckpoint $ olcDbCryptFile $ olcDbPageSize $ olcDbIndex $ olcDbLockDetect $ olcDbMode $ olcSpCheckpoint $ olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogOld $ olcAccessLogOldAttr $ olcAccessLogBase $ knowledgeInformation $ sn $ serialNumber $ c $ l $ st $ street $ o $ ou $ title $ businessCategory $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ destinationIndicator $ givenName $ initials $ generationQualifier $ dnQualifier $ houseIdentifier $ dmdName $ pseudonym $ textEncodedORAddress $ info $ drink $ roomNumber $ userClass $ host $ documentIdentifier $ documentTitle $ documentVersion $ documentLocation $ personalTitle $ co $ uniqueIdentifier $ organizationalStatus $ buildingName $ documentPublisher $ ipServiceProtocol $ nisMapName $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ preferredLanguage $ nhsMHSPartyKey $ nhsRestricted $ nhsNN4BName $ nhsLeftDate $ nhsJoinDate $ nhsDHSCcode $ nhsCountry $ nhsIDCode $ nhsRoles $ nhsOrgType $ nhsAltOrgNames $ nhsSHAcode $ nhsWorkGroups $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsOrgSubType $ nhsParentOrgCode $ nhsPCTCode $ nhsRA $ nhsJobRole $ nhsAreaOfWork $ nhsBusinessFunctions $ nhsSiteNames $ nhsOCSPredecessor $ nhsOCSSuccessor $ nhsOCSPRCode $ nhsPersonStatus $ nhsSiteCodes $ nhsDeptCodes $ nhsMHSServiceName $ nhsMHSCategoryBag $ nhsMHSActionName $ nhsMHSEndPoint $ nhsMHSServiceDescription $ nhsMHSIsAuthenticated $ nhsMHSPersistDuration $ nhsMHSRetries $ nhsMHSRetryInterval $ nhsMHSSyncReplyMode $ nhsMHSAckRequested $ nhsMHSDuplicateElimination $ nhsMHSActor $ nhsJobRoleCode $ nhsAreaOfWorkCodes $ nhsBusinessFunctionsCodes $ nhsWorkGroupsCodes $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name $ nhsMiddleNames $ nhsPuSecret $ nhsTelUID $ nhsAsACF $ nhsAsSvcIA $ nhsMhsSvcIA $ nhsMhsCPAId $ nhsGNC $ nhsMHsSN $ nhsMHsIN $ nhsWgClosed $ nhsWgRoot $ nhsPwgId $ nhsCwgId $ nhsLegalEst $ nhsWgType $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry $ nhsSupPrescriber $ nhsPrinOcc $ nhsRPSGB $ nhsGMC $ nhsGDP $ nhsRCN $ nhsConsultant $ nhsGMP $ nhsGDC $ nhsNMC $ nhsCreateDate $ nhsStatus $ nhsAsClient $ nhsAsCategoryBag $ nhsWgStatus $ nhsXPwgId $ nhsXCwgId $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved $ nhsDNSApprover $ nhsDateDNSApproved $ nhsProductKey $ nhsEPInteractionType $ nhsContractPropertyTemplateKey $ nhsMhsFQDN $ nhsMhsIPAddress $ nhsMhsNetwork $ nhsMhsSinCode $ nhsLrGPDeregFreeze $ nhsLrGPDeregExpiry $ nhsOrgTypeCode $ nhsSyntheticIndicator $ nhsNN4BCode $ nhsEBS $ firstchangenumber $ lastchangenumber $ changenumber $ nhsAlertMethod $ nhsAlertBlock $ nhsAltAlertRecipient $ nhsOrgMail $ nhsProductName $ nhsProductVersion ) )", + "( 2.5.13.1 NAME 'distinguishedNameMatch' APPLIES ( creatorsName $ modifiersName $ subschemaSubentry $ entryDN $ namingContexts $ aliasedObjectName $ dynamicSubtrees $ distinguishedName $ seeAlso $ olcDefaultSearchBase $ olcRootDN $ olcSchemaDN $ olcSuffix $ olcUpdateDN $ olcAccessLogDB $ member $ owner $ roleOccupant $ manager $ documentAuthor $ secretary $ associatedName $ dITRedirect ) )", + "( 2.5.13.0 NAME 'objectIdentifierMatch' APPLIES ( supportedControl $ supportedExtension $ supportedFeatures $ supportedApplicationContext ) )" + ], + "matchingRules": [ + "( 1.3.6.1.1.16.3 NAME 'UUIDOrderingMatch' SYNTAX 1.3.6.1.1.16.1 )", + "( 1.3.6.1.1.16.2 NAME 'UUIDMatch' SYNTAX 1.3.6.1.1.16.1 )", + "( 1.2.840.113556.1.4.804 NAME 'integerBitOrMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 1.2.840.113556.1.4.803 NAME 'integerBitAndMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 1.3.6.1.4.1.4203.1.2.1 NAME 'caseExactIA5SubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.4.1.1466.109.114.3 NAME 'caseIgnoreIA5SubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.4.1.1466.109.114.2 NAME 'caseIgnoreIA5Match' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 1.3.6.1.4.1.1466.109.114.1 NAME 'caseExactIA5Match' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )", + "( 2.5.13.38 NAME 'certificateListExactMatch' SYNTAX 1.3.6.1.1.15.5 )", + "( 2.5.13.34 NAME 'certificateExactMatch' SYNTAX 1.3.6.1.1.15.1 )", + "( 2.5.13.30 NAME 'objectIdentifierFirstComponentMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )", + "( 2.5.13.29 NAME 'integerFirstComponentMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", + "( 2.5.13.27 NAME 'generalizedTimeMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", + "( 2.5.13.23 NAME 'uniqueMemberMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )", + "( 2.5.13.21 NAME 'telephoneNumberSubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", + "( 2.5.13.20 NAME 'telephoneNumberMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )", + "( 2.5.13.19 NAME 'octetStringSubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )", + "( 2.5.13.18 NAME 'octetStringOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )", + "( 2.5.13.17 NAME 'octetStringMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )", + "( 2.5.13.16 NAME 'bitStringMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )", + "( 2.5.13.15 NAME 'integerOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 2.5.13.14 NAME 'integerMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", + "( 2.5.13.13 NAME 'booleanMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )", + "( 2.5.13.11 NAME 'caseIgnoreListMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )", + "( 2.5.13.10 NAME 'numericStringSubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", + "( 2.5.13.9 NAME 'numericStringOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )", + "( 2.5.13.8 NAME 'numericStringMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )", + "( 2.5.13.7 NAME 'caseExactSubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", + "( 2.5.13.6 NAME 'caseExactOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.5.13.5 NAME 'caseExactMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.5.13.4 NAME 'caseIgnoreSubstringsMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )", + "( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 2.5.13.2 NAME 'caseIgnoreMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", + "( 1.2.36.79672281.1.13.3 NAME 'rdnMatch' SYNTAX 1.2.36.79672281.1.5.0 )", + "( 2.5.13.1 NAME 'distinguishedNameMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )", + "( 2.5.13.0 NAME 'objectIdentifierMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )" + ], + "modifyTimestamp": [ + "20190120215555Z" + ], + "nameForms": [], + "objectClass": [ + "top", + "subentry", + "subschema", + "extensibleObject" + ], + "objectClasses": [ + "( 2.5.6.0 NAME 'top' DESC 'top of the superclass chain' ABSTRACT MUST objectClass )", + "( 1.3.6.1.4.1.1466.101.120.111 NAME 'extensibleObject' DESC 'RFC4512: extensible object' SUP top AUXILIARY )", + "( 2.5.6.1 NAME 'alias' DESC 'RFC4512: an alias' SUP top STRUCTURAL MUST aliasedObjectName )", + "( 2.16.840.1.113730.3.2.6 NAME 'referral' DESC 'namedref: named subordinate referral' SUP top STRUCTURAL MUST ref )", + "( 1.3.6.1.4.1.4203.1.4.1 NAME ( 'OpenLDAProotDSE' 'LDAProotDSE' ) DESC 'OpenLDAP Root DSE object' SUP top STRUCTURAL MAY cn )", + "( 2.5.17.0 NAME 'subentry' DESC 'RFC3672: subentry' SUP top STRUCTURAL MUST ( cn $ subtreeSpecification ) )", + "( 2.5.20.1 NAME 'subschema' DESC 'RFC4512: controlling subschema (sub)entry' AUXILIARY MAY ( dITStructureRules $ nameForms $ dITContentRules $ objectClasses $ attributeTypes $ matchingRules $ matchingRuleUse ) )", + "( 1.3.6.1.4.1.1466.101.119.2 NAME 'dynamicObject' DESC 'RFC2589: Dynamic Object' SUP top AUXILIARY )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.0 NAME 'olcConfig' DESC 'OpenLDAP configuration object' SUP top ABSTRACT )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.1 NAME 'olcGlobal' DESC 'OpenLDAP Global configuration options' SUP olcConfig STRUCTURAL MAY ( cn $ olcConfigFile $ olcConfigDir $ olcAllows $ olcArgsFile $ olcAttributeOptions $ olcAuthIDRewrite $ olcAuthzPolicy $ olcAuthzRegexp $ olcConcurrency $ olcConnMaxPending $ olcConnMaxPendingAuth $ olcDisallows $ olcGentleHUP $ olcIdleTimeout $ olcIndexSubstrIfMaxLen $ olcIndexSubstrIfMinLen $ olcIndexSubstrAnyLen $ olcIndexSubstrAnyStep $ olcIndexIntLen $ olcLocalSSF $ olcLogFile $ olcLogLevel $ olcPasswordCryptSaltFormat $ olcPasswordHash $ olcPidFile $ olcPluginLogFile $ olcReadOnly $ olcReferral $ olcReplogFile $ olcRequires $ olcRestrict $ olcReverseLookup $ olcRootDSE $ olcSaslAuxprops $ olcSaslHost $ olcSaslRealm $ olcSaslSecProps $ olcSecurity $ olcServerID $ olcSizeLimit $ olcSockbufMaxIncoming $ olcSockbufMaxIncomingAuth $ olcTCPBuffer $ olcThreads $ olcTimeLimit $ olcTLSCACertificateFile $ olcTLSCACertificatePath $ olcTLSCertificateFile $ olcTLSCertificateKeyFile $ olcTLSCipherSuite $ olcTLSCRLCheck $ olcTLSRandFile $ olcTLSVerifyClient $ olcTLSDHParamFile $ olcTLSCRLFile $ olcToolThreads $ olcWriteTimeout $ olcObjectIdentifier $ olcAttributeTypes $ olcObjectClasses $ olcDitContentRules $ olcLdapSyntaxes ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.2 NAME 'olcSchemaConfig' DESC 'OpenLDAP schema object' SUP olcConfig STRUCTURAL MAY ( cn $ olcObjectIdentifier $ olcLdapSyntaxes $ olcAttributeTypes $ olcObjectClasses $ olcDitContentRules ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.3 NAME 'olcBackendConfig' DESC 'OpenLDAP Backend-specific options' SUP olcConfig STRUCTURAL MUST olcBackend )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.4 NAME 'olcDatabaseConfig' DESC 'OpenLDAP Database-specific options' SUP olcConfig STRUCTURAL MUST olcDatabase MAY ( olcHidden $ olcSuffix $ olcSubordinate $ olcAccess $ olcAddContentAcl $ olcLastMod $ olcLimits $ olcMaxDerefDepth $ olcPlugin $ olcReadOnly $ olcReplica $ olcReplicaArgsFile $ olcReplicaPidFile $ olcReplicationInterval $ olcReplogFile $ olcRequires $ olcRestrict $ olcRootDN $ olcRootPW $ olcSchemaDN $ olcSecurity $ olcSizeLimit $ olcSyncUseSubentry $ olcSyncrepl $ olcTimeLimit $ olcUpdateDN $ olcUpdateRef $ olcMirrorMode $ olcMonitoring $ olcExtraAttrs ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.5 NAME 'olcOverlayConfig' DESC 'OpenLDAP Overlay-specific options' SUP olcConfig STRUCTURAL MUST olcOverlay )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.6 NAME 'olcIncludeFile' DESC 'OpenLDAP configuration include file' SUP olcConfig STRUCTURAL MUST olcInclude MAY ( cn $ olcRootDSE ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.7 NAME 'olcFrontendConfig' DESC 'OpenLDAP frontend configuration' AUXILIARY MAY ( olcDefaultSearchBase $ olcPasswordHash $ olcSortVals ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.0.8 NAME 'olcModuleList' DESC 'OpenLDAP dynamic module info' SUP olcConfig STRUCTURAL MAY ( cn $ olcModulePath $ olcModuleLoad ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.2.2.1 NAME 'olcLdifConfig' DESC 'LDIF backend configuration' SUP olcDatabaseConfig STRUCTURAL MUST olcDbDirectory )", + "( 1.3.6.1.4.1.4203.1.12.2.4.2.1.2 NAME 'olcHdbConfig' DESC 'HDB backend configuration' SUP olcDatabaseConfig STRUCTURAL MUST olcDbDirectory MAY ( olcDbCacheSize $ olcDbCheckpoint $ olcDbConfig $ olcDbCryptFile $ olcDbCryptKey $ olcDbNoSync $ olcDbDirtyRead $ olcDbIDLcacheSize $ olcDbIndex $ olcDbLinearIndex $ olcDbLockDetect $ olcDbMode $ olcDbSearchStack $ olcDbShmKey $ olcDbCacheFree $ olcDbDNcacheSize $ olcDbPageSize ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.3.1.1 NAME 'olcSyncProvConfig' DESC 'SyncRepl Provider configuration' SUP olcOverlayConfig STRUCTURAL MAY ( olcSpCheckpoint $ olcSpSessionlog $ olcSpNoPresent $ olcSpReloadHint ) )", + "( 1.3.6.1.4.1.4203.1.12.2.4.3.4.1 NAME 'olcAccessLogConfig' DESC 'Access log configuration' SUP olcOverlayConfig STRUCTURAL MUST olcAccessLogDB MAY ( olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogSuccess $ olcAccessLogOld $ olcAccessLogOldAttr $ olcAccessLogBase ) )", + "( 2.5.6.2 NAME 'country' DESC 'RFC2256: a country' SUP top STRUCTURAL MUST c MAY ( searchGuide $ description ) )", + "( 2.5.6.3 NAME 'locality' DESC 'RFC2256: a locality' SUP top STRUCTURAL MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) )", + "( 2.5.6.4 NAME 'organization' DESC 'RFC2256: an organization' SUP top STRUCTURAL MUST o MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )", + "( 2.5.6.5 NAME 'organizationalUnit' DESC 'RFC2256: an organizational unit' SUP top STRUCTURAL MUST ou MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )", + "( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )", + "( 2.5.6.7 NAME 'organizationalPerson' DESC 'RFC2256: an organizational person' SUP person STRUCTURAL MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) )", + "( 2.5.6.8 NAME 'organizationalRole' DESC 'RFC2256: an organizational role' SUP top STRUCTURAL MUST cn MAY ( x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l $ description ) )", + "( 2.5.6.9 NAME 'groupOfNames' DESC 'RFC2256: a group of names (DNs)' SUP top STRUCTURAL MUST ( member $ cn ) MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )", + "( 2.5.6.10 NAME 'residentialPerson' DESC 'RFC2256: an residential person' SUP person STRUCTURAL MUST l MAY ( businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ preferredDeliveryMethod $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l ) )", + "( 2.5.6.11 NAME 'applicationProcess' DESC 'RFC2256: an application process' SUP top STRUCTURAL MUST cn MAY ( seeAlso $ ou $ l $ description ) )", + "( 2.5.6.12 NAME 'applicationEntity' DESC 'RFC2256: an application entity' SUP top STRUCTURAL MUST ( presentationAddress $ cn ) MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $ description ) )", + "( 2.5.6.13 NAME 'dSA' DESC 'RFC2256: a directory system agent (a server)' SUP applicationEntity STRUCTURAL MAY knowledgeInformation )", + "( 2.5.6.14 NAME 'device' DESC 'RFC2256: a device' SUP top STRUCTURAL MUST cn MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )", + "( 2.5.6.15 NAME 'strongAuthenticationUser' DESC 'RFC2256: a strong authentication user' SUP top AUXILIARY MUST userCertificate )", + "( 2.5.6.16 NAME 'certificationAuthority' DESC 'RFC2256: a certificate authority' SUP top AUXILIARY MUST ( authorityRevocationList $ certificateRevocationList $ cACertificate ) MAY crossCertificatePair )", + "( 2.5.6.17 NAME 'groupOfUniqueNames' DESC 'RFC2256: a group of unique names (DN and Unique Identifier)' SUP top STRUCTURAL MUST ( uniqueMember $ cn ) MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )", + "( 2.5.6.18 NAME 'userSecurityInformation' DESC 'RFC2256: a user security information' SUP top AUXILIARY MAY supportedAlgorithms )", + "( 2.5.6.16.2 NAME 'certificationAuthority-V2' SUP certificationAuthority AUXILIARY MAY deltaRevocationList )", + "( 2.5.6.19 NAME 'cRLDistributionPoint' SUP top STRUCTURAL MUST cn MAY ( certificateRevocationList $ authorityRevocationList $ deltaRevocationList ) )", + "( 2.5.6.20 NAME 'dmd' SUP top STRUCTURAL MUST dmdName MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )", + "( 2.5.6.21 NAME 'pkiUser' DESC 'RFC2587: a PKI user' SUP top AUXILIARY MAY userCertificate )", + "( 2.5.6.22 NAME 'pkiCA' DESC 'RFC2587: PKI certificate authority' SUP top AUXILIARY MAY ( authorityRevocationList $ certificateRevocationList $ cACertificate $ crossCertificatePair ) )", + "( 2.5.6.23 NAME 'deltaCRL' DESC 'RFC2587: PKI user' SUP top AUXILIARY MAY deltaRevocationList )", + "( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject' DESC 'RFC2079: object that contains the URI attribute type' SUP top AUXILIARY MAY labeledURI )", + "( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' DESC 'RFC1274: simple security object' SUP top AUXILIARY MUST userPassword )", + "( 1.3.6.1.4.1.1466.344 NAME 'dcObject' DESC 'RFC2247: domain component object' SUP top AUXILIARY MUST dc )", + "( 1.3.6.1.1.3.1 NAME 'uidObject' DESC 'RFC2377: uid object' SUP top AUXILIARY MUST uid )", + "( 0.9.2342.19200300.100.4.4 NAME ( 'pilotPerson' 'newPilotPerson' ) SUP person STRUCTURAL MAY ( userid $ textEncodedORAddress $ rfc822Mailbox $ favouriteDrink $ roomNumber $ userClass $ homeTelephoneNumber $ homePostalAddress $ secretary $ personalTitle $ preferredDeliveryMethod $ businessCategory $ janetMailbox $ otherMailbox $ mobileTelephoneNumber $ pagerTelephoneNumber $ organizationalStatus $ mailPreferenceOption $ personalSignature ) )", + "( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCTURAL MUST userid MAY ( description $ seeAlso $ localityName $ organizationName $ organizationalUnitName $ host ) )", + "( 0.9.2342.19200300.100.4.6 NAME 'document' SUP top STRUCTURAL MUST documentIdentifier MAY ( commonName $ description $ seeAlso $ localityName $ organizationName $ organizationalUnitName $ documentTitle $ documentVersion $ documentAuthor $ documentLocation $ documentPublisher ) )", + "( 0.9.2342.19200300.100.4.7 NAME 'room' SUP top STRUCTURAL MUST commonName MAY ( roomNumber $ description $ seeAlso $ telephoneNumber ) )", + "( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' SUP top STRUCTURAL MUST commonName MAY ( description $ seeAlso $ telephonenumber $ localityName $ organizationName $ organizationalUnitName ) )", + "( 0.9.2342.19200300.100.4.13 NAME 'domain' SUP top STRUCTURAL MUST domainComponent MAY ( associatedName $ organizationName $ description $ businessCategory $ seeAlso $ searchGuide $ userPassword $ localityName $ stateOrProvinceName $ streetAddress $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ postOfficeBox $ streetAddress $ facsimileTelephoneNumber $ internationalISDNNumber $ telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ preferredDeliveryMethod $ destinationIndicator $ registeredAddress $ x121Address ) )", + "( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart' SUP domain STRUCTURAL MAY ( commonName $ surname $ description $ seeAlso $ telephoneNumber $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ postOfficeBox $ streetAddress $ facsimileTelephoneNumber $ internationalISDNNumber $ telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ preferredDeliveryMethod $ destinationIndicator $ registeredAddress $ x121Address ) )", + "( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain' SUP domain STRUCTURAL MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord ) )", + "( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject' DESC 'RFC1274: an object related to an domain' SUP top AUXILIARY MUST associatedDomain )", + "( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP country STRUCTURAL MUST friendlyCountryName )", + "( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization' SUP ( organization $ organizationalUnit ) STRUCTURAL MAY buildingName )", + "( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA' SUP dsa STRUCTURAL MAY dSAQuality )", + "( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData' SUP top AUXILIARY MUST dsaQuality MAY ( subtreeMinimumQuality $ subtreeMaximumQuality ) )", + "( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction of an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) )", + "( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' DESC 'Additional attributes for shadow passwords' SUP top AUXILIARY MUST uid MAY ( userPassword $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ description ) )", + "( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction of a group of accounts' SUP top STRUCTURAL MUST ( cn $ gidNumber ) MAY ( userPassword $ memberUid $ description ) )", + "( 1.3.6.1.1.1.2.3 NAME 'ipService' DESC 'Abstraction an Internet Protocol service' SUP top STRUCTURAL MUST ( cn $ ipServicePort $ ipServiceProtocol ) MAY description )", + "( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' DESC 'Abstraction of an IP protocol' SUP top STRUCTURAL MUST ( cn $ ipProtocolNumber $ description ) MAY description )", + "( 1.3.6.1.1.1.2.5 NAME 'oncRpc' DESC 'Abstraction of an ONC/RPC binding' SUP top STRUCTURAL MUST ( cn $ oncRpcNumber $ description ) MAY description )", + "( 1.3.6.1.1.1.2.6 NAME 'ipHost' DESC 'Abstraction of a host, an IP device' SUP top AUXILIARY MUST ( cn $ ipHostNumber ) MAY ( l $ description $ manager ) )", + "( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' DESC 'Abstraction of an IP network' SUP top STRUCTURAL MUST ( cn $ ipNetworkNumber ) MAY ( ipNetmaskNumber $ l $ description $ manager ) )", + "( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' DESC 'Abstraction of a netgroup' SUP top STRUCTURAL MUST cn MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )", + "( 1.3.6.1.1.1.2.9 NAME 'nisMap' DESC 'A generic abstraction of a NIS map' SUP top STRUCTURAL MUST nisMapName MAY description )", + "( 1.3.6.1.1.1.2.10 NAME 'nisObject' DESC 'An entry in a NIS map' SUP top STRUCTURAL MUST ( cn $ nisMapEntry $ nisMapName ) MAY description )", + "( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' DESC 'A device with a MAC address' SUP top AUXILIARY MAY macAddress )", + "( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' DESC 'A device with boot parameters' SUP top AUXILIARY MAY ( bootFile $ bootParameter ) )", + "( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC 'RFC2798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL MAY ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ preferredLanguage $ userSMIMECertificate $ userPKCS12 ) )", + "( 1.2.826.0.1285.0.2.0.65 NAME 'nhsPerson' SUP inetOrgPerson STRUCTURAL MUST ( objectClass $ uid $ cn $ sn $ nhsPersonStatus ) MAY ( givenName $ nhsMiddleNames $ initials $ displayName $ personalTitle $ nhsSupPrescriber $ nhsPrinOcc $ nhsRPSGB $ nhsGMC $ nhsGDP $ nhsRCN $ nhsConsultant $ nhsGMP $ nhsGDC $ nhsNMC $ nhsOCSPrCode $ nhsTelUID $ nhsPuSecret $ mail ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.66 NAME 'nhsOrgPerson' SUP inetOrgPerson STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ uid $ cn $ sn $ o $ nhsIdCode ) MAY ( givenName $ nhsMiddleNames $ initials $ displayName $ nhsSiteCodes $ nhsDeptCodes $ nhsSiteNames $ nhsRoles $ nhsOrgCloseDate $ nhsGNC $ nhsOrgOpenDate $ nhsCountry $ mail $ nhsAlertMethod $ nhsAlertBlock $ nhsAltAlertRecipient $ nhsOrgMail ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.67 NAME 'nhsOrgPersonRole' SUP top STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ nhsJobRole ) MAY ( nhsJobRoleCode $ nhsIDcode $ nhsAreaOfWorkCodes $ nhsBusinessFunctionsCodes $ nhsWorkGroupsCodes $ nhsAreaOfWork $ nhsBusinessFunctions $ nhsWorkGroups $ nhsOrgCloseDate $ nhsOrgOpenDate ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.61 NAME 'nhsOrg' SUP organization STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ o $ nhsIDcode $ nhsOrgType $ nhsOrgTypeCode $ postalAddress $ postalCode $ l ) MAY ( nhsOrgSubType $ nhsCountry $ nhsParentOrgCode $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsSHAcode $ nhsSyntheticIndicator $ nhsNN4BName $ nhsNN4BCode $ nhsOcsPredecessor $ nhsOcsSuccessor $ nhsAltOrgNames $ nhsPCTCode $ telephoneNumber $ facsimileTelephoneNumber $ mail $ labeledUri $ nhsDHSCcode $ nhsJoinDate $ nhsLeftDate ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.62 NAME 'nhsSite' SUP organizationalUnit STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ nhsIDcode $ nhsOrgType $ ou $ postalAddress $ postalCode $ l $ nhsOrgTypeCode ) MAY ( nhsOrgOpenDate $ nhsCountry $ nhsOrgCloseDate $ nhsParentOrgCode $ nhsSHAcode $ nhsSyntheticIndicator $ nhsNN4BName $ nhsNN4BCode $ nhsAltOrgNames $ nhsOrgSubType $ nhsOCSpredecessor $ nhsOCSSuccessor $ nhsPCTCode $ telephoneNumber $ facsimileTelephoneNumber $ mail $ nhsDHSCcode $ nhsJoinDate $ nhsLeftDate ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.63 NAME 'nhsDept' SUP organizationalUnit STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ nhsOrgType $ ou $ postalAddress $ postalCode $ l $ nhsOrgTypeCode ) MAY ( nhsIDcode $ nhsCountry $ nhsParentOrgCode $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsSyntheticIndicator $ nhsNN4BName $ nhsNN4BCode $ nhsAltOrgNames $ nhsOrgSubType $ nhsOCSpredecessor $ nhsOCSSuccessor $ telephoneNumber $ facsimileTelephoneNumber $ mail ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.64 NAME 'nhsGPPractice' SUP organization STRUCTURAL MUST ( objectClass $ uniqueIdentifier $ o $ nhsIDcode $ nhsOrgType $ nhsOrgTypeCode $ postalAddress $ postalCode $ l $ nhsPCTCode ) MAY ( nhsOrgSubType $ nhsCountry $ nhsParentOrgCode $ nhsOrgOpenDate $ nhsOrgCloseDate $ nhsSHAcode $ nhsSyntheticIndicator $ nhsNN4BName $ nhsNN4BCode $ nhsOcsPredecessor $ nhsOcsSuccessor $ nhsAltOrgNames $ telephoneNumber $ facsimileTelephoneNumber $ mail $ labeledUri $ nhsDHSCcode $ nhsJoinDate $ nhsLeftDate ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.70 NAME 'nhsMHSService' SUP top STRUCTURAL MUST ( uniqueIdentifier $ nhsMHSServiceName $ nhsMHSPartyKey $ nhsIDCode ) MAY nhsMHSCategoryBag X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.71 NAME 'nhsMHSAction' SUP top STRUCTURAL MUST ( uniqueIdentifier $ nhsMHSActionName $ nhsMHSEndPoint ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.72 NAME 'nhsMHSCP' SUP top STRUCTURAL MUST ( uniqueIdentifier $ nhsMHSActionName $ nhsMHSIsAuthenticated ) MAY ( nhsMHSPersistDuration $ nhsMHSRetries $ nhsMHSRetryInterval $ nhsMHSSyncReplyMode $ nhsMHSAckRequested $ nhsMHSDuplicateElimination $ nhsMHSActor ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.107 NAME 'nhsAs' SUP top STRUCTURAL MUST ( uniqueIdentifier $ nhsIdCode $ nhsMhsPartyKey $ nhsAsSvcIA $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved ) MAY ( description $ nhsAsClient $ nhsAsCategoryBag $ nhsAsACF $ nhsProductKey $ nhsProductName $ nhsProductVersion ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.108 NAME 'nhsMhs' SUP top STRUCTURAL MUST ( uniqueIdentifier $ nhsIdCode $ nhsMhsPartyKey $ nhsMhsSvcIA $ nhsMhsSN $ nhsMhsIN $ nhsMhsEndPoint $ nhsMhsIsAuthenticated $ nhsMhsCPAId $ nhsProductKey $ nhsRequestorURP $ nhsDateRequested $ nhsApproverURP $ nhsDateApproved $ nhsDNSApprover $ nhsDateDNSApproved $ nhsEPInteractionType $ nhsContractPropertyTemplateKey $ nhsMhsFQDN ) MAY ( nhsMhsPersistduration $ nhsMhsRetries $ nhsMhsRetryInterval $ nhsMhsIPAddress $ nhsMhsNetwork $ nhsMhsSinCode $ nhsMhsServiceDescription $ nhsMhsSyncReplyMode $ nhsMhsAckRequested $ nhsMhsDuplicateElimination $ nhsMhsActor $ nhsProductName $ nhsProductVersion ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.104 NAME 'nhsList' SUP top STRUCTURAL MUST ( objectClass $ cn ) MAY ( description $ uniqueIdentifier ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.111 NAME 'nhsRBAC' SUP top AUXILIARY MUST ( uniqueidentifier $ cn $ nhsStatus $ nhsRA $ nhsCreateDate ) MAY ( nhsRestricted $ description ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.112 NAME 'nhsRBACJR' SUP top STRUCTURAL MUST ( uniqueIdentifier $ cn $ nhsStatus $ nhsCreateDate $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name ) MAY description X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.113 NAME 'nhsRBACAoW' SUP top STRUCTURAL MUST ( uniqueIdentifier $ cn $ nhsStatus $ nhsCreateDate $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name ) MAY description X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.114 NAME 'nhsRBACBF' SUP top STRUCTURAL MUST ( uniqueIdentifier $ cn $ nhsStatus $ nhsCreateDate $ nhsList3Code $ nhsList3Name $ nhsList2Code $ nhsList2Name $ nhsList1Code $ nhsList1Name ) MAY description X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.115 NAME 'nhsRBACBL' SUP top STRUCTURAL MUST ( nhsRA $ nhsCreateDate $ uniqueIdentifier $ nhsJobRoleCode $ nhsJobRole ) MAY ( nhsAreaOfWorkCodes $ nhsAreaOfWork $ nhsBusinessFunctionsCodes ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.109 NAME 'nhsWg' SUP top STRUCTURAL MUST ( uniqueIdentifier $ cn $ nhsIdCode ) MAY ( nhsWgStatus $ nhsWgClosed $ nhsWgRoot $ nhsPwgId $ nhsCwgId $ nhsXPwgId $ nhsXCwgId $ nhsLegalEst $ nhsWgType $ nhsOCSPredecessor $ nhsLrGPDeregExpiry $ nhsLrGPDeregFreeze $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.110 NAME 'nhsWgTypes' SUP top STRUCTURAL MUST ( cn $ nhsWgType ) MAY ( nhsLrGPDeregExpiry $ nhsLrGPDeregFreeze $ nhsLrOrderExpiry $ nhsLrExprsExpiry $ nhsLrCpmlnExpiry $ nhsLrRefAbanFreeze $ nhsLrRefDisFreeze $ nhsLrRefAccFreeze $ nhsLrRefExpFreeze $ nhsLrRegFreeze $ nhsLrRegExpiry $ nhsLrSrefFreeze $ nhsLrRefPostAccFreeze $ nhsLrRefAccExpiry $ nhsLrCreateExpiry $ nhsLrCloseExpiry $ nhsLrGrantExpiry $ nhsLrSelfExpiry ) X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.122 NAME 'nhsExternalChangelogEntry' SUP top STRUCTURAL MUST changenumber MAY nhsEBS X-ORIGIN 'nhsSDS' )", + "( 1.2.826.0.1285.0.2.0.124 NAME 'nhsExternalChangelog' SUP top STRUCTURAL MUST ( cn $ firstchangenumber $ lastchangenumber ) X-ORIGIN 'nhsSDS' )" + ], + "structuralObjectClass": [ + "subentry" + ], + "subschemaSubentry": [ + "cn=Subschema" + ] + }, + "schema_entry": "cn=Subschema", + "type": "SchemaInfo" +} diff --git a/mhs-reference-implementation/mhs/routing/tests/ldap_mocks.py b/mhs-reference-implementation/mhs/routing/tests/ldap_mocks.py new file mode 100644 index 000000000..c87b1083c --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/ldap_mocks.py @@ -0,0 +1,30 @@ +from pathlib import Path + +import ldap3 +import mhs.routing.sds as sds +from definitions import ROOT_DIR + +MHS_TEST_DATA_PATH = Path(ROOT_DIR) / 'mhs' / 'routing' / 'tests' / 'data' +SERVER_INFO_PATH = str(MHS_TEST_DATA_PATH / 'my_real_server_info.json') +SCHEMA_PATH = str(MHS_TEST_DATA_PATH / 'my_real_server_schema.json') +SERVER_ENTRIES_PATH = str(MHS_TEST_DATA_PATH / 'my_real_server_entries.json') + + +def fake_ldap_connection() -> ldap3.Connection: + fake_server = ldap3.Server.from_definition('my_fake_server', + SERVER_INFO_PATH, + SCHEMA_PATH) + + # Create a MockSyncStrategy connection to the fake server + fake_connection = ldap3.Connection(fake_server, client_strategy=ldap3.MOCK_ASYNC) + + # Populate the DIT of the fake server + fake_connection.strategy.entries_from_json(SERVER_ENTRIES_PATH) + + fake_connection.bind() + + return fake_connection + + +def mocked_sds_client(): + return sds.SDSClient(fake_ldap_connection()) diff --git a/mhs-reference-implementation/mhs/routing/tests/test_sds.py b/mhs-reference-implementation/mhs/routing/tests/test_sds.py new file mode 100644 index 000000000..acfcdbcdd --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/test_sds.py @@ -0,0 +1,87 @@ +from unittest import TestCase +import mhs.routing.sds as sds +import mhs.routing.tests.ldap_mocks as mocks +from utilities.test_utilities import async_test +import mhs.routing.routing_exception as re + +NHS_SERVICES_BASE = "ou=services, o=nhs" + +MHS_OBJECT_CLASS = "nhsMhs" + +PARTY_KEY = "AP4RTY-K33Y" +INTERACTION_ID = "urn:nhs:names:services:psis:MCCI_IN010000UK13" +ODS_CODE = "ODSCODE1" + + +expected_mhs_attributes = { + 'nhsEPInteractionType': 'HL7', + 'nhsIDCode': 'ODSCODE1', + 'nhsMHSAckRequested': 'always', + 'nhsMHSActor': ['urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH'], + 'nhsMHSDuplicateElimination': 'always', + 'nhsMHSEndPoint': ['https://vpn-client-1411.opentest.hscic.gov.uk/'], + 'nhsMHSIsAuthenticated': 'transient', + 'nhsMHSPartyKey': 'AP4RTY-K33Y', + 'nhsMHSPersistDuration': 'PT5M', + 'nhsMHSRetries': '2', + 'nhsMHSRetryInterval': 'PT1M', + 'nhsMHSSyncReplyMode': 'MSHSignalsOnly', + 'nhsMHsIN': 'MCCI_IN010000UK13', + 'nhsMHsSN': 'urn:nhs:names:services:psis', + 'nhsMhsCPAId': 'S918999410559', + 'nhsMhsFQDN': 'vpn-client-1411.opentest.hscic.gov.uk', + 'nhsMhsSvcIA': 'urn:nhs:names:services:psis:MCCI_IN010000UK13', + 'nhsProductKey': '7374', + 'uniqueIdentifier': ['S918999410559'] +} + + +class TestSDSClient(TestCase): + + @async_test + async def test_mhs_details_lookup(self): + client = mocks.mocked_sds_client() + + result = await client._mhs_details_lookup(PARTY_KEY, INTERACTION_ID) + attributes = result[0]['attributes'] + + # Check attributes contents + for key, value in expected_mhs_attributes.items(): + self.assertEqual(value, attributes[key]) + + # Assert exact number of attributes + self.assertEqual(len(attributes), len(expected_mhs_attributes)) + + @async_test + async def test_accredited(self): + client = mocks.mocked_sds_client() + + result = await client._accredited_system_lookup(ODS_CODE, INTERACTION_ID) + self.assertIsNotNone(result) + self.assertIsNotNone(result[0]['attributes']['nhsMHSPartyKey'] == 'A91461-9199084') + self.assertEqual(len(result[0]['attributes']), 1) + + @async_test + async def test_get_mhs_lookup(self): + client = mocks.mocked_sds_client() + + attributes = await client.get_mhs_details(ODS_CODE, INTERACTION_ID) + + # check values present + for key, value in expected_mhs_attributes.items(): + self.assertEqual(value, attributes[key]) + + # Assert exact number of attributes, minus the unique values + self.assertEqual(len(attributes), len(expected_mhs_attributes)) + + @async_test + async def test_no_results(self): + client = mocks.mocked_sds_client() + with self.assertRaises(re.RoutingException): + await client.get_mhs_details("fake code", "fake interaction") + + @async_test + async def test_no_connection(self): + with self.assertRaises(ValueError): + sds.SDSClient(None) + diff --git a/mhs-reference-implementation/mhs/routing/tests/test_sds_handler.py b/mhs-reference-implementation/mhs/routing/tests/test_sds_handler.py new file mode 100644 index 000000000..b789fc3d0 --- /dev/null +++ b/mhs-reference-implementation/mhs/routing/tests/test_sds_handler.py @@ -0,0 +1,55 @@ +from unittest import TestCase +import mhs.routing.sds_handler as sds + +import mhs.routing.tests.ldap_mocks as mocks +from utilities.test_utilities import async_test + +NHS_SERVICES_BASE = "ou=services, o=nhs" + +MHS_OBJECT_CLASS = "nhsMhs" + +OPENTEST_SDS_URL = "192.168.128.11" +PARTY_KEY = " AP4RTY-K33Y" +INTERACTION_ID = "urn:nhs:names:services:psis:MCCI_IN010000UK13" +ODS_CODE = "ODSCODE1" + + +expected_mhs_attributes = { + 'nhsEPInteractionType': 'HL7', + 'nhsIDCode': 'ODSCODE1', + 'nhsMHSAckRequested': 'always', + 'nhsMHSActor': ['urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH'], + 'nhsMHSDuplicateElimination': 'always', + 'nhsMHSEndPoint': ['https://vpn-client-1411.opentest.hscic.gov.uk/'], + 'nhsMHSIsAuthenticated': 'transient', + 'nhsMHSPartyKey': 'AP4RTY-K33Y', + 'nhsMHSPersistDuration': 'PT5M', + 'nhsMHSRetries': '2', + 'nhsMHSRetryInterval': 'PT1M', + 'nhsMHSSyncReplyMode': 'MSHSignalsOnly', + 'nhsMHsIN': 'MCCI_IN010000UK13', + 'nhsMHsSN': 'urn:nhs:names:services:psis', + 'nhsMhsCPAId': 'S918999410559', + 'nhsMhsFQDN': 'vpn-client-1411.opentest.hscic.gov.uk', + 'nhsMhsSvcIA': 'urn:nhs:names:services:psis:MCCI_IN010000UK13', + 'nhsProductKey': '7374', + 'uniqueIdentifier': ['S918999410559'] +} + + +class TestMHSAttributeLookupHandler(TestCase): + + @async_test + async def test_get_endpoint(self): + handler = sds.MHSAttributeLookupHandler(mocks.mocked_sds_client()) + attributes = await handler.retrieve_mhs_attributes(ODS_CODE, INTERACTION_ID) + for key, value in expected_mhs_attributes.items(): + self.assertEqual(value, attributes[key]) + + # Assert exact number of attributes, minus the unique values + self.assertEqual(len(attributes), len(expected_mhs_attributes)) + + @async_test + async def test_no_client(self): + with self.assertRaises(ValueError): + sds.MHSAttributeLookupHandler(None)