The final version of the Service Directory specification is published at the OpenO&M website and is being maintained by the OpenO&M JWG. This page is being kept for historical purposes and is non-normative.

A Service Directory in the OIIE Architecture is intended to simplify configuration management of the ecosystem by centralizing the ws-ISBM configuration of individual systems. Thus administrators can see the configuration and data flows of the entire ecosystem from a single, central console.

The functional requirements below are the minimum set of requirements that a Service Directory needs to fulfill to provide value in an OIIE Architecture. Software vendors MAY identify additional functional requirements to provide added value for their products, as long as these added requirements do not conflict with the requirements below.

Functional Requirements

1 Allow a user to identify a service configuration: an association between a system and the ws-ISBM configuration

A Service Directory MUST provide a way for a user to identify a service configuration by specifying an association between a system (e.g. software application) and the corresponding ws-ISBM configuration.

The ws-ISBM configuration MUST consist of:

  • Endpoint type (e.g. Provider Publication, Consumer Request)
  • Web Service endpoint for the endpoint type
  • Channel
  • Topic
  • Security Token

As per the ws-ISBM specification, the UsernameToken form of security tokens MUST be supported when defining a ws-ISBM configuration. Additional security token types MAY be supported.

A Service Directory MAY also allow the association of timeframe validity and status metadata (these are supported by the data exchange format detailed below).

2 Allow synchronization of the ws-ISBM configuration for a service configuration with a ws-ISBM Service Provider

For the service configurations identified by requirement 1, a Service Directory MUST allow synchronization of the ws-ISBM configuration of the service configuration with a ws-ISBM Service Provider.

If the service configuration is available for query by a system from the Service Directory (see requirement 3), the corresponding ws-ISBM configuration MUST already be synchronized with the ws-ISBM Service Provider. This is to ensure the Service Directory is not providing unusable ws-ISBM configuration details.

Synchronization MUST include:

  • Creating channels where necessary
  • Adding security tokens for valid services
  • Removing security tokens for invalid services

3 Respond to queries by other systems for service configuration details using the ws-ISBM as a transport mechanism

A Service Directory MUST allow other systems to query the service configurations using the GetIsbmService Business Object Document (BOD). A Service Directory MUST respond to a GetIsbmService query with a ShowIsbmService response. The Service Register MUST use a query-by-example approach where the generated response is matched against the filters provided in the query.

A Service Directory MUST support communication using the above BODs on a ws-ISBM Request channel using the Provider Request Service. For a GetIsbmService message received by the ReadRequest Web Service, the Service Directory MUST send a corresponding ShowIsbmService response using the PostResponse Web Service.

The GetIsbmService and ShowIsbmService BODs are defined by XML Schema below. The referenced OAGIS files have been omitted from this document, but all XML Schema files and examples are available for download.

BODs/GetIsbmService.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:sr="https://www.mimosa.org/service-directory"
  targetNamespace="https://www.mimosa.org/service-directory"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  version="1.0">

  <xs:import schemaLocation="../OAGIS/Meta.xsd" namespace="http://www.openapplications.org/oagis/9"/>
  <xs:include schemaLocation="../Nouns/IsbmService.xsd"/>

  <xs:element name="GetIsbmService">
    <xs:annotation>
      <xs:documentation>Used to request retrieval of a ws-ISBM service configuration.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="oa:BusinessObjectDocumentType">
          <xs:sequence>
            <xs:element name="DataArea" type="sr:GetIsbmServiceDataArea"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="GetIsbmServiceDataArea">
    <xs:sequence>
      <xs:element ref="oa:Get"/>
      <xs:element ref="sr:IsbmService" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

BODs/ShowIsbmService.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:sr="https://www.mimosa.org/service-directory"
  targetNamespace="https://www.mimosa.org/service-directory"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  version="1.0">

  <xs:import schemaLocation="../OAGIS/Meta.xsd" namespace="http://www.openapplications.org/oagis/9"/>
  <xs:include schemaLocation="../Nouns/IsbmService.xsd"/>

  <xs:element name="ShowIsbmService">
    <xs:annotation>
      <xs:documentation>Used to send a ws-ISBM service configuration in response to a GetIsbmService request.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="oa:BusinessObjectDocumentType">
          <xs:sequence>
            <xs:element name="DataArea" type="sr:ShowIsbmServiceDataArea"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ShowIsbmServiceDataArea">
    <xs:sequence>
      <xs:element ref="oa:Show"/>
      <xs:element ref="sr:IsbmService" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Nouns/IsbmService.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:sr="https://www.mimosa.org/service-directory"
  targetNamespace="https://www.mimosa.org/service-directory"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  version="1.0">

  <xs:element name="IsbmService">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Id" type="xs:string" minOccurs="0"/>
        <xs:element name="System" type="xs:string"/>
        <xs:element name="EndpointType" minOccurs="0">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="ProviderPublication"/>
              <xs:enumeration value="ConsumerPublication"/>
              <xs:enumeration value="ProviderRequest"/>
              <xs:enumeration value="ConsumerRequest"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="Endpoint" type="xs:string" minOccurs="0"/>
        <xs:element name="Channel" type="xs:string" minOccurs="0"/>
        <xs:element name="Topic" type="xs:string" minOccurs="0"/>
        <xs:element name="Token" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:any namespace="##any" processContents="lax"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Valid" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="From" type="xs:date" minOccurs="0"/>
              <xs:element name="To" type="xs:date" minOccurs="0"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Status" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

GetIsbmService Request Example

<?xml version="1.0" encoding="utf-8"?>
<sr:GetIsbmService xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:sr="https://www.mimosa.org/service-directory"
  releaseID="1.2.1" versionID="1.0">
  <oa:ApplicationArea>
    <oa:Sender>
      <oa:LogicalID>cc555257-b7ed-434d-b216-2f7fb2b3b870</oa:LogicalID>
    </oa:Sender>
    <oa:CreationDateTime>2014-07-01T10:00:00Z</oa:CreationDateTime>
    <oa:BODID>aaf29423-bc83-4680-962c-ddf1bb313ba7</oa:BODID>
  </oa:ApplicationArea>
  <sr:DataArea>
    <oa:Get>
      <oa:Expression />
    </oa:Get>
    <sr:IsbmService>
      <sr:System>cc555257-b7ed-434d-b216-2f7fb2b3b870</sr:System>
      <sr:Channel>\Enterprise\Site A\AssetSegmentEvent\Sync\Checkpoint</sr:Channel>
    </sr:IsbmService>
  </sr:DataArea>
</sr:GetIsbmService>

ShowIsbmService Response Example

<?xml version="1.0" encoding="utf-8"?>
<sr:ShowIsbmService xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:sr="https://www.mimosa.org/service-directory"
  releaseID="1.2.1" versionID="1.0">
  <oa:ApplicationArea>
    <oa:Sender>
      <oa:LogicalID>977c4b70-7080-48be-a500-8beb6bc2057f</oa:LogicalID>
    </oa:Sender>
    <oa:CreationDateTime>2014-07-01T10:00:00Z</oa:CreationDateTime>
    <oa:BODID>64270c90-73b2-4a28-ae95-720c2d329933</oa:BODID>
  </oa:ApplicationArea>
  <sr:DataArea>
    <oa:Show />
    <sr:IsbmService>
      <sr:Id>459d71e2-5050-4af6-b81b-35f7c05790d2</sr:Id>
      <sr:System>cc555257-b7ed-434d-b216-2f7fb2b3b870</sr:System>
      <sr:EndpointType>ProviderPublication</sr:EndpointType>
      <sr:Endpoint>http://example.com/ProviderPublicationService</sr:Endpoint>
      <sr:Channel>\Enterprise\Site A\AssetSegmentEvent\Sync\Checkpoint</sr:Channel>
      <sr:Topic>OIIE:S10:V1.0\CCOM:SyncAssetInstall:V1.0</sr:Topic>
      <sr:Token>
        <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
          <wsse:Username>PwWcKn33</wsse:Username>
          <wsse:Password>TzW3V$qgCSZm%pdL</wsse:Password>
        </wsse:UsernameToken>
      </sr:Token>
      <sr:Valid>
        <sr:To>2014-09-08T00:00:00Z</sr:To>
      </sr:Valid>
      <sr:Status>Active</sr:Status>
    </sr:IsbmService>
  </sr:DataArea>
</sr:ShowIsbmService>