You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by da...@apache.org on 2018/02/16 09:52:46 UTC

[30/30] atlas git commit: ATLAS-2246: OMRS Connector API plus REST and IGC Connector skeleton - 15th February 2018

ATLAS-2246: OMRS Connector API plus REST and IGC Connector skeleton - 15th February 2018

Signed-off-by: David Radley <da...@uk.ibm.com>


Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/8a57e657
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/8a57e657
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/8a57e657

Branch: refs/heads/master
Commit: 8a57e6571c0079c25c147732ad3a6994be8e14ea
Parents: c2be064
Author: Mandy Chessell <ma...@uk.ibm.com>
Authored: Thu Feb 15 12:46:01 2018 +0000
Committer: David Radley <da...@uk.ibm.com>
Committed: Fri Feb 16 09:39:05 2018 +0000

----------------------------------------------------------------------
 .../org/apache/atlas/ocf/ConnectorBase.java     |   40 +
 .../apache/atlas/ocf/ConnectorProviderBase.java |    2 +-
 .../apache/atlas/ocf/properties/Connection.java |    8 +-
 .../apache/atlas/ocf/properties/KeyPattern.java |   18 +-
 omrs/README.md                                  |   43 +
 omrs/pom.xml                                    |   98 +
 .../AtlasOMRSRepositoryEventMapper.java         |   39 +
 .../AtlasOMRSRepositoryEventMapperProvider.java |   45 +
 .../LocalAtlasOMRSMetadataCollection.java       |   61 +
 .../LocalAtlasOMRSRepositoryConnector.java      |   85 +
 ...calAtlasOMRSRepositoryConnectorProvider.java |   45 +
 .../IGCOMRSRepositoryEventMapper.java           |   44 +
 .../IGCOMRSRepositoryEventMapperProvider.java   |   44 +
 .../IGCOMRSMetadataCollection.java              |   60 +
 .../IGCOMRSRepositoryConnector.java             |   84 +
 .../IGCOMRSRepositoryConnectorProvider.java     |   44 +
 .../IGCV2OMRSRepositoryEventMapper.java         |   44 +
 .../IGCV2OMRSRepositoryEventMapperProvider.java |   45 +
 .../IGCV2OMRSMetadataCollection.java            |   60 +
 .../IGCV2OMRSRepositoryConnector.java           |   86 +
 .../IGCV2OMRSRepositoryConnectorProvider.java   |   45 +
 .../omrs/admin/OMRSConfigurationFactory.java    |  228 +
 .../omrs/admin/OMRSOperationalServices.java     |  858 +++
 .../omrs/admin/properties/CohortConfig.java     |  233 +
 .../properties/EnterpriseAccessConfig.java      |  167 +
 .../admin/properties/LocalRepositoryConfig.java |  310 +
 .../OpenMetadataEventProtocolVersion.java       |   28 +
 .../properties/OpenMetadataExchangeRule.java    |  106 +
 .../properties/RepositoryServicesConfig.java    |  207 +
 .../omrs/archivemanager/OMRSArchiveBuilder.java |  338 ++
 .../omrs/archivemanager/OMRSArchiveManager.java |  348 ++
 .../opentypes/OpenMetadataTypesArchive.java     | 5657 ++++++++++++++++++
 .../properties/OpenMetadataArchive.java         |  116 +
 .../OpenMetadataArchiveInstanceStore.java       |   86 +
 .../OpenMetadataArchiveProperties.java          |  222 +
 .../properties/OpenMetadataArchiveType.java     |   79 +
 .../OpenMetadataArchiveTypeStore.java           |  111 +
 .../store/OpenMetadataArchiveStore.java         |   72 +
 .../OpenMetadataArchiveStoreConnectorBase.java  |   27 +
 .../OpenMetadataArchiveStoreProviderBase.java   |   41 +
 .../atlas/omrs/auditlog/OMRSAuditCode.java      |  500 ++
 .../atlas/omrs/auditlog/OMRSAuditLog.java       |  197 +
 .../auditlog/OMRSAuditLogRecordSeverity.java    |  122 +
 .../omrs/auditlog/OMRSAuditingComponent.java    |  261 +
 .../omrs/auditlog/store/OMRSAuditLogRecord.java |  243 +
 .../store/OMRSAuditLogRecordOriginator.java     |  179 +
 .../store/OMRSAuditLogReportingComponent.java   |  145 +
 .../omrs/auditlog/store/OMRSAuditLogStore.java  |  108 +
 .../store/OMRSAuditLogStoreConnectorBase.java   |   27 +
 .../store/OMRSAuditLogStoreProviderBase.java    |   41 +
 .../file/FileBasedAuditLogStoreConnector.java   |  164 +
 .../file/FileBasedAuditLogStoreProvider.java    |   37 +
 .../OMRSConnectionConsumer.java                 |   62 +
 .../connectormanager/OMRSConnectorConsumer.java |   61 +
 .../connectormanager/OMRSConnectorManager.java  |   48 +
 .../OMRSEnterpriseConnectorManager.java         |  539 ++
 .../EnterpriseOMRSConnection.java               |   49 +
 .../EnterpriseOMRSConnectorProperties.java      |   52 +
 .../EnterpriseOMRSConnectorProvider.java        |  153 +
 .../EnterpriseOMRSMetadataCollection.java       | 3995 +++++++++++++
 .../EnterpriseOMRSRepositoryConnector.java      |  357 ++
 .../omrs/eventmanagement/OMRSEventListener.java |  832 +++
 .../eventmanagement/OMRSEventPublisher.java     | 1972 ++++++
 .../OMRSRepositoryEventExchangeRule.java        |  166 +
 .../OMRSRepositoryEventManager.java             | 1608 +++++
 .../OMRSRepositoryEventProcessor.java           |   30 +
 .../omrs/eventmanagement/events/OMRSEvent.java  |  582 ++
 .../events/OMRSEventCategory.java               |  101 +
 .../events/OMRSEventDirection.java              |   84 +
 .../events/OMRSEventErrorCode.java              |   39 +
 .../events/OMRSEventOriginator.java             |  171 +
 .../events/OMRSInstanceEvent.java               |  477 ++
 .../events/OMRSInstanceEventErrorCode.java      |  118 +
 .../events/OMRSInstanceEventProcessor.java      |  667 +++
 .../events/OMRSInstanceEventType.java           |  148 +
 .../events/OMRSRegistryEvent.java               |  289 +
 .../events/OMRSRegistryEventErrorCode.java      |  126 +
 .../events/OMRSRegistryEventProcessor.java      |  159 +
 .../events/OMRSRegistryEventType.java           |  128 +
 .../events/OMRSTypeDefEvent.java                |  453 ++
 .../events/OMRSTypeDefEventErrorCode.java       |  122 +
 .../events/OMRSTypeDefEventProcessor.java       |  262 +
 .../events/OMRSTypeDefEventType.java            |  111 +
 .../eventmanagement/events/v1/OMRSEventV1.java  |  132 +
 .../events/v1/OMRSEventV1ErrorSection.java      |  182 +
 .../events/v1/OMRSEventV1InstanceSection.java   |  149 +
 .../events/v1/OMRSEventV1RegistrySection.java   |   83 +
 .../events/v1/OMRSEventV1TypeDefSection.java    |  127 +
 .../OMRSRepositoryEventMapper.java              |   65 +
 .../OMRSRepositoryEventMapperBase.java          |   92 +
 .../OMRSRepositoryEventMapperProviderBase.java  |   41 +
 .../apache/atlas/omrs/ffdc/OMRSErrorCode.java   |  413 ++
 .../java/org/apache/atlas/omrs/ffdc/README.md   |   47 +
 .../exception/ClassificationErrorException.java |   57 +
 .../ffdc/exception/EntityConflictException.java |   60 +
 .../exception/EntityNotDeletedException.java    |   57 +
 .../ffdc/exception/EntityNotKnownException.java |   57 +
 .../ffdc/exception/HomeEntityException.java     |   57 +
 .../exception/HomeRelationshipException.java    |   57 +
 .../ffdc/exception/InvalidEntityException.java  |   60 +
 .../exception/InvalidParameterException.java    |   57 +
 .../exception/InvalidRelationshipException.java |   60 +
 .../ffdc/exception/InvalidTypeDefException.java |   60 +
 .../NotImplementedRuntimeException.java         |   32 +
 .../exception/OMRSCheckedExceptionBase.java     |  161 +
 .../exception/OMRSConfigErrorException.java     |  185 +
 .../exception/OMRSConnectorErrorException.java  |  184 +
 .../ffdc/exception/OMRSLogicErrorException.java |  185 +
 .../ffdc/exception/OMRSRuntimeException.java    |  181 +
 .../ffdc/exception/PagingErrorException.java    |   57 +
 .../ffdc/exception/PatchErrorException.java     |   60 +
 .../ffdc/exception/PropertyErrorException.java  |   57 +
 .../RelationshipConflictException.java          |   60 +
 .../exception/RelationshipKnownException.java   |   57 +
 .../RelationshipNotDeletedException.java        |   58 +
 .../RelationshipNotKnownException.java          |   61 +
 .../exception/RepositoryErrorException.java     |   61 +
 .../exception/StatusNotSupportedException.java  |   61 +
 .../exception/TypeDefConflictException.java     |   60 +
 .../ffdc/exception/TypeDefInUseException.java   |   60 +
 .../ffdc/exception/TypeDefKnownException.java   |   60 +
 .../exception/TypeDefNotKnownException.java     |   60 +
 .../exception/TypeDefNotSupportedException.java |   60 +
 .../omrs/ffdc/exception/TypeErrorException.java |   57 +
 .../exception/UserNotAuthorizedException.java   |   57 +
 .../localrepository/OMRSLocalRepository.java    |   83 +
 .../LocalOMRSConnectorProvider.java             |  200 +
 .../LocalOMRSInstanceEventProcessor.java        | 1056 ++++
 .../LocalOMRSMetadataCollection.java            | 3157 ++++++++++
 .../LocalOMRSRepositoryConnector.java           |  259 +
 .../OMRSInstanceRetrievalEventProcessor.java    |   78 +
 .../OMRSInstanceHelper.java                     |  149 +
 .../OMRSInstanceValidator.java                  |   69 +
 .../OMRSRepositoryContentManager.java           | 2056 +++++++
 .../OMRSRepositoryHelper.java                   |  551 ++
 .../OMRSRepositoryValidator.java                |  529 ++
 .../OMRSTypeDefHelper.java                      |  101 +
 .../OMRSTypeDefManager.java                     |  181 +
 .../OMRSTypeDefValidator.java                   |  176 +
 .../OMRSMetadataCollection.java                 | 1957 ++++++
 .../OMRSMetadataCollectionBase.java             | 2143 +++++++
 .../properties/MatchCriteria.java               |   80 +
 .../properties/SequencingOrder.java             |  111 +
 .../instances/ArrayPropertyValue.java           |  155 +
 .../properties/instances/Classification.java    |  254 +
 .../instances/ClassificationOrigin.java         |   81 +
 .../properties/instances/EntityDetail.java      |  107 +
 .../properties/instances/EntityProxy.java       |  107 +
 .../properties/instances/EntitySummary.java     |  114 +
 .../properties/instances/EntityUniverse.java    |  115 +
 .../properties/instances/EnumPropertyValue.java |  123 +
 .../instances/InstanceAuditHeader.java          |  266 +
 .../instances/InstanceElementHeader.java        |   53 +
 .../properties/instances/InstanceGraph.java     |  259 +
 .../properties/instances/InstanceHeader.java    |  172 +
 .../instances/InstanceProperties.java           |  196 +
 .../instances/InstancePropertyCategory.java     |   91 +
 .../instances/InstancePropertyValue.java        |  114 +
 .../instances/InstanceProvenanceType.java       |  109 +
 .../properties/instances/InstanceStatus.java    |   91 +
 .../properties/instances/InstanceType.java      |  311 +
 .../properties/instances/MapPropertyValue.java  |  133 +
 .../instances/PrimitivePropertyValue.java       |  172 +
 .../properties/instances/Relationship.java      |  320 +
 .../instances/StructPropertyValue.java          |   95 +
 .../typedefs/AttributeCardinality.java          |  111 +
 .../properties/typedefs/AttributeTypeDef.java   |  215 +
 .../typedefs/AttributeTypeDefCategory.java      |   84 +
 .../properties/typedefs/ClassificationDef.java  |  162 +
 .../typedefs/ClassificationPropagationRule.java |   87 +
 .../properties/typedefs/CollectionDef.java      |  143 +
 .../typedefs/CollectionDefCategory.java         |  101 +
 .../properties/typedefs/EntityDef.java          |   93 +
 .../properties/typedefs/EnumDef.java            |  119 +
 .../properties/typedefs/EnumElementDef.java     |  144 +
 .../typedefs/ExternalStandardMapping.java       |  141 +
 .../properties/typedefs/PrimitiveDef.java       |   83 +
 .../typedefs/PrimitiveDefCategory.java          |  103 +
 .../typedefs/RelationshipCategory.java          |   94 +
 .../typedefs/RelationshipContainerEnd.java      |   75 +
 .../properties/typedefs/RelationshipDef.java    |  217 +
 .../properties/typedefs/RelationshipEndDef.java |  193 +
 .../properties/typedefs/TypeDef.java            |  437 ++
 .../properties/typedefs/TypeDefAttribute.java   |  310 +
 .../properties/typedefs/TypeDefCategory.java    |   84 +
 .../typedefs/TypeDefElementHeader.java          |   51 +
 .../properties/typedefs/TypeDefGallery.java     |  121 +
 .../properties/typedefs/TypeDefLink.java        |  175 +
 .../properties/typedefs/TypeDefPatch.java       |  399 ++
 .../properties/typedefs/TypeDefPatchAction.java |  103 +
 .../properties/typedefs/TypeDefProperties.java  |  154 +
 .../properties/typedefs/TypeDefSummary.java     |  168 +
 .../OMRSMetadataCollectionManager.java          |   46 +
 .../OMRSRepositoryConnector.java                |   29 +
 .../OMRSRepositoryConnectorProviderBase.java    |   43 +
 .../metadatahighway/CohortConnectionStatus.java |  122 +
 .../omrs/metadatahighway/OMRSCohortManager.java |  382 ++
 .../OMRSMetadataHighwayManager.java             |  453 ++
 .../cohortregistry/OMRSCohortRegistry.java      | 1097 ++++
 .../store/OMRSCohortRegistryStore.java          |  114 +
 .../OMRSCohortRegistryStoreConnectorBase.java   |   24 +
 .../OMRSCohortRegistryStoreProviderBase.java    |   41 +
 .../file/FileBasedRegistryStoreConnector.java   |  582 ++
 .../file/FileBasedRegistryStoreProvider.java    |   37 +
 .../store/properties/CohortMembership.java      |   67 +
 .../store/properties/MemberRegistration.java    |  206 +
 .../OMRSRESTMetadataCollection.java             |   59 +
 .../OMRSRESTRepositoryConnector.java            |   87 +
 .../OMRSRESTRepositoryConnectorProvider.java    |   44 +
 .../rest/server/OMRSRepositoryRESTServices.java |   44 +
 .../atlas/omrs/topicconnectors/OMRSTopic.java   |   43 +
 .../topicconnectors/OMRSTopicConnector.java     |  102 +
 .../omrs/topicconnectors/OMRSTopicListener.java |   35 +
 .../kafka/KafkaOMRSTopicConnector.java          |   55 +
 .../kafka/KafkaOMRSTopicProvider.java           |   38 +
 215 files changed, 54323 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorBase.java
----------------------------------------------------------------------
diff --git a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorBase.java b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorBase.java
index cc2e430..38ac964 100644
--- a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorBase.java
+++ b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorBase.java
@@ -18,6 +18,7 @@
 package org.apache.atlas.ocf;
 
 import org.apache.atlas.ocf.ffdc.PropertyServerException;
+import org.apache.atlas.ocf.properties.AdditionalProperties;
 import org.apache.atlas.ocf.properties.ConnectedAssetProperties;
 import org.apache.atlas.ocf.properties.Connection;
 import org.slf4j.Logger;
@@ -51,6 +52,12 @@ public abstract class ConnectorBase extends Connector
     protected Connection                 connection = null;
     protected ConnectedAssetProperties   connectedAssetProperties = null;
 
+    /*
+     * Secured properties are protected properties from the connection.  They are retrieved as a protected
+     * variable to allow subclasses of ConnectorBase to access them.
+     */
+    protected AdditionalProperties       securedProperties = null;
+
     private static final int      hashCode = UUID.randomUUID().hashCode();
     private static final Logger   log = LoggerFactory.getLogger(ConnectorBase.class);
 
@@ -86,6 +93,12 @@ public abstract class ConnectorBase extends Connector
         this.connectorInstanceId = connectorInstanceId;
         this.connection = connection;
 
+        /*
+         * Set up the secured properties
+         */
+        ProtectedConnection  protectedConnection = new ProtectedConnection(connection);
+        this.securedProperties = protectedConnection.getSecuredProperties();
+
         if (log.isDebugEnabled())
         {
             log.debug("New Connector initialized: " + connectorInstanceId + ", " + connection.getConnectionName());
@@ -217,4 +230,31 @@ public abstract class ConnectorBase extends Connector
                 ", connectedAssetProperties=" + connectedAssetProperties +
                 '}';
     }
+
+    private class ProtectedConnection extends Connection
+    {
+        private ProtectedConnection(Connection templateConnection)
+        {
+            super(templateConnection);
+        }
+
+        /**
+         * Return a copy of the secured properties.  Null means no secured properties are available.
+         * This method is protected so only OCF (or subclasses) can access them.  When Connector is passed to calling
+         * OMAS, the secured properties are not available.
+         *
+         * @return secured properties - typically user credentials for the connection
+         */
+        protected AdditionalProperties getSecuredProperties()
+        {
+            if (super.securedProperties == null)
+            {
+                return securedProperties;
+            }
+            else
+            {
+                return new AdditionalProperties(super.getParentAsset(), securedProperties);
+            }
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorProviderBase.java
----------------------------------------------------------------------
diff --git a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorProviderBase.java b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorProviderBase.java
index fafd20c..4e0762a 100644
--- a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorProviderBase.java
+++ b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/ConnectorProviderBase.java
@@ -65,7 +65,7 @@ public abstract class ConnectorProviderBase extends ConnectorProvider
      *
      * @return guid for a new connector instance
      */
-    private String  getNewConnectorGUID()
+    protected String  getNewConnectorGUID()
     {
         UUID     newUUID = UUID.randomUUID();
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/Connection.java
----------------------------------------------------------------------
diff --git a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/Connection.java b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/Connection.java
index d34e6f4..0d5cfdb 100644
--- a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/Connection.java
+++ b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/Connection.java
@@ -77,10 +77,10 @@ public class Connection extends Referenceable
     /*
      * Attributes of a connector
      */
-    private String                    displayName = null;
-    private String                    description = null;
-    private ConnectorType             connectorType = null;
-    private Endpoint                  endpoint = null;
+    protected String                    displayName = null;
+    protected String                    description = null;
+    protected ConnectorType             connectorType = null;
+    protected Endpoint                  endpoint = null;
 
     /*
      * Secured properties are protected so they can only be accessed by subclassing this object.

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/KeyPattern.java
----------------------------------------------------------------------
diff --git a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/KeyPattern.java b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/KeyPattern.java
index ce6dae1..7cfd30c 100644
--- a/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/KeyPattern.java
+++ b/om-fwk-ocf/src/main/java/org/apache/atlas/ocf/properties/KeyPattern.java
@@ -20,19 +20,19 @@ package org.apache.atlas.ocf.properties;
 import java.io.Serializable;
 
 /**
- * A KeyPattern defines the type of External Identifier in use of an asset, or the type of Primary Key used within an
+ * A KeyPattern defines the type of External Identifier in use for an asset, or the type of Primary Key used within an
  * asset.
  */
 public enum KeyPattern implements Serializable
 {
-    LOCAL_KEY(0, "Local Key", "Unique key allocated and used within the scope of a single system."),
-    RECYCLED_KEY(1, "Recycled Key", "Key allocated and used within the scope of a single system that is periodically reused for different records."),
-    NATURAL_KEY(2, "Natural Key", "Key derived from an attribute of the entity, such as email address, passport number."),
-    MIRROR_KEY(3, "Mirror Key", "Key value copied from another system."),
-    AGGREGATE_KEY(4, "Aggregate Key", "Key formed by combining keys from multiple systems."),
-    CALLERS_KEY(5, "Caller's Key", "Key from another system can bey used if system name provided."),
-    STABLE_KEY(6, "Stable Key", "Key value will remain active even if records are merged."),
-    OTHER(99, "Other", "Another key pattern.");
+    LOCAL_KEY     (0,  "Local Key", "Unique key allocated and used within the scope of a single system."),
+    RECYCLED_KEY  (1,  "Recycled Key", "Key allocated and used within the scope of a single system that is periodically reused for different records."),
+    NATURAL_KEY   (2,  "Natural Key", "Key derived from an attribute of the entity, such as email address, passport number."),
+    MIRROR_KEY    (3,  "Mirror Key", "Key value copied from another system."),
+    AGGREGATE_KEY (4,  "Aggregate Key", "Key formed by combining keys from multiple systems."),
+    CALLERS_KEY   (5,  "Caller's Key", "Key from another system can bey used if system name provided."),
+    STABLE_KEY    (6,  "Stable Key", "Key value will remain active even if records are merged."),
+    OTHER         (99, "Other", "Another key pattern.");
 
     private static final long     serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/README.md
----------------------------------------------------------------------
diff --git a/omrs/README.md b/omrs/README.md
new file mode 100644
index 0000000..e219288
--- /dev/null
+++ b/omrs/README.md
@@ -0,0 +1,43 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+# Open Metadata Repository Service (OMRS)
+
+The Open Metadata Repository Services (OMRS) enable metadata repositories to exchange metadata.
+Traditional metadata management technology tends to centralize metadata into a single repository.
+An organization often begins with a single metadata repository, typically deployed to support a
+single project or initiative.
+However, over time, depending on the tools they buy, the projects they run or the political structures
+within the organization, the number of deployed metadata repositories grows, creating multiple metadata silos.
+So for example, an organization may have:
+
+* a metadata repository and tools for its governance team.
+This metadata repository may host the canonical glossary, and the governance policies, rules and classifications.
+
+* a metadata repository for its data lake.
+This metadata repository has the details of the data repositories in the data lake and the
+movement of data between them.
+
+* a metadata repository for its data integration tools that continuously extract data
+from the operational systems and sends them to the data lake.
+
+The role of the OMRS is to bring these metadata repositories together so this metadata can be linked
+and used together across the organization.
+It enables these metadata repositories to act as a aggregated source of metadata.
+The metadata repositories using OMRS may be instances of Apache Atlas and they may
+include a mixture of repositories from different vendors that support the OMRS integration interfaces.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/pom.xml
----------------------------------------------------------------------
diff --git a/omrs/pom.xml b/omrs/pom.xml
new file mode 100644
index 0000000..4861499
--- /dev/null
+++ b/omrs/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>apache-atlas</artifactId>
+        <groupId>org.apache.atlas</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>omrs</artifactId>
+
+    <name>Open Metadata Repository Services (OMRS)</name>
+    <description>Open Metadata Repository Services (OMRS) interfaces and implementation for linking metadata repositories into a cohort</description>
+
+    <packaging>jar</packaging>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.jaxrs</groupId>
+            <artifactId>jackson-jaxrs-base</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.jaxrs</groupId>
+            <artifactId>jackson-jaxrs-json-provider</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+            <version>${javax-inject.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.atlas</groupId>
+            <artifactId>om-fwk-ocf</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.4</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapper.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapper.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapper.java
new file mode 100644
index 0000000..62b1d2f
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapper.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.atlas.eventmapper;
+
+import org.apache.atlas.omrs.eventmanagement.repositoryeventmapper.OMRSRepositoryEventMapperBase;
+
+public class AtlasOMRSRepositoryEventMapper extends OMRSRepositoryEventMapperBase
+{
+    /**
+     * Default constructor
+     */
+    public AtlasOMRSRepositoryEventMapper()
+    {
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     */
+    public void disconnect()
+    {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapperProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapperProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapperProvider.java
new file mode 100644
index 0000000..28b79ed
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/eventmapper/AtlasOMRSRepositoryEventMapperProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.atlas.eventmapper;
+
+import org.apache.atlas.omrs.adapters.igc.v1.eventmapper.IGCOMRSRepositoryEventMapper;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The IGCOMRSRepositoryEventMapperProvider is the connector provider for the IGCOMRSRepositoryEventMapper.
+ * It extends OMRSRepositoryEventMapperProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The OMRSRESTRepositoryConnectorProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class AtlasOMRSRepositoryEventMapperProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public AtlasOMRSRepositoryEventMapperProvider()
+    {
+        Class    connectorClass = IGCOMRSRepositoryEventMapper.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSMetadataCollection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSMetadataCollection.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSMetadataCollection.java
new file mode 100644
index 0000000..f14caf6
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSMetadataCollection.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.atlas.repositoryconnector;
+
+import org.apache.atlas.omrs.ffdc.exception.NotImplementedRuntimeException;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollectionBase;
+
+/**
+ * The OMRSRESTMetadataCollection represents a remote metadata repository that supports the OMRS REST API.
+ * Requests to this metadata collection are translated one-for-one to requests to the remote repository since
+ * the OMRS REST API has a one-to-one correspondence with the metadata collection.
+ */
+public class LocalAtlasOMRSMetadataCollection extends OMRSMetadataCollectionBase
+{
+    private LocalAtlasOMRSRepositoryConnector parentConnector = null;
+    private String                            metadataCollectionId = null;
+
+    /**
+     * Default constructor.
+     *
+     * @param parentConnector - connector that this metadata collection supports.  The connector has the information
+     *                        to call the metadata repository.
+     * @param metadataCollectionId - unique Identifier of the metadata collection Id.
+     */
+    public LocalAtlasOMRSMetadataCollection(LocalAtlasOMRSRepositoryConnector parentConnector,
+                                            String                            metadataCollectionId)
+    {
+        /*
+         * The metadata collection Id is the unique Id for the metadata collection.  It is managed by the super class.
+         */
+        super(metadataCollectionId);
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Save parentConnector since this has the connection information and access to the metadata about the
+         * metadata cluster.
+         */
+        this.parentConnector = parentConnector;
+
+        /*
+         * This is a temporary implementation to allow the structural implementation of the connectors to
+         * be committed before the metadata collection implementation is complete.
+         */
+        throw new NotImplementedRuntimeException("LocalAtlasMetadataCollection", "constructor", "ATLAS-1773");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnector.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnector.java
new file mode 100644
index 0000000..8f331be
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnector.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.atlas.repositoryconnector;
+
+import org.apache.atlas.ocf.ffdc.ConnectorCheckedException;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+
+/**
+ * The OMRSRESTRepositoryConnector is a connector to a remote Apache Atlas repository (or any other metadata repository
+ * that supports the OMRS REST APIs).  This is the connector used by the EnterpriseOMRSRepositoryConnector to make a direct call
+ * to another open metadata repository.
+ */
+public class LocalAtlasOMRSRepositoryConnector extends OMRSRepositoryConnector
+{
+    private LocalAtlasOMRSMetadataCollection metadataCollection   = null;
+    private String                           metadataCollectionId = null;
+
+    /**
+     * Default constructor used by the OCF Connector Provider.
+     */
+    public LocalAtlasOMRSRepositoryConnector()
+    {
+        /*
+         * Nothing to do (yet !)
+         */
+    }
+
+
+    /**
+     * Set up the unique Id for this metadata collection.
+     *
+     * @param metadataCollectionId - String unique Id
+     */
+    public void setMetadataCollectionId(String     metadataCollectionId)
+    {
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Initialize the metadata collection only once the connector is properly set up.
+         */
+        metadataCollection = new LocalAtlasOMRSMetadataCollection(this, metadataCollectionId);
+    }
+
+
+    /**
+     * Returns the metadata collection object that provides an OMRS abstraction of the metadata within
+     * a metadata repository.
+     *
+     * @return OMRSMetadataCollection - metadata information retrieved from the metadata repository.
+     */
+    public OMRSMetadataCollection getMetadataCollection()
+    {
+        if (metadataCollection == null)
+        {
+            // TODO Throw exception since it means the local metadata collection id is not set up.
+        }
+        return metadataCollection;
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     *
+     * @throws ConnectorCheckedException - there is a problem disconnecting the connector.
+     */
+    public void disconnect() throws ConnectorCheckedException
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnectorProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnectorProvider.java
new file mode 100644
index 0000000..ca7d086
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/atlas/repositoryconnector/LocalAtlasOMRSRepositoryConnectorProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.atlas.repositoryconnector;
+
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+import org.apache.atlas.omrs.rest.repositoryconnector.OMRSRESTRepositoryConnector;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The OMRSRESTRepositoryConnectorProvider is the connector provider for the OMRSRESTRepositoryConnector.
+ * It extends OMRSRepositoryConnectorProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The OMRSRESTRepositoryConnectorProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class LocalAtlasOMRSRepositoryConnectorProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public LocalAtlasOMRSRepositoryConnectorProvider()
+    {
+        Class    connectorClass = OMRSRESTRepositoryConnector.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapper.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapper.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapper.java
new file mode 100644
index 0000000..3eef8c8
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapper.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v1.eventmapper;
+
+import org.apache.atlas.omrs.eventmanagement.repositoryeventmapper.OMRSRepositoryEventMapperBase;
+
+
+/**
+ * IGCOMRSRepositoryEventMapper provides an implementation of a repository event mapper for the
+ * IBM Governance Catalog (IGC).
+ */
+public class IGCOMRSRepositoryEventMapper extends OMRSRepositoryEventMapperBase
+{
+    /**
+     * Default constructor
+     */
+    public IGCOMRSRepositoryEventMapper()
+    {
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     */
+    public void disconnect()
+    {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapperProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapperProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapperProvider.java
new file mode 100644
index 0000000..f51fb06
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/eventmapper/IGCOMRSRepositoryEventMapperProvider.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v1.eventmapper;
+
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The IGCOMRSRepositoryEventMapperProvider is the connector provider for the IGCOMRSRepositoryEventMapper.
+ * It extends OMRSRepositoryEventMapperProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The OMRSRESTRepositoryConnectorProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class IGCOMRSRepositoryEventMapperProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public IGCOMRSRepositoryEventMapperProvider()
+    {
+        Class    connectorClass = IGCOMRSRepositoryEventMapper.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSMetadataCollection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSMetadataCollection.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSMetadataCollection.java
new file mode 100644
index 0000000..77afe02
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSMetadataCollection.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v1.repositoryconnector;
+
+import org.apache.atlas.omrs.ffdc.exception.NotImplementedRuntimeException;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollectionBase;
+
+/**
+ * The IGCOMRSMetadataCollection represents a remote IBM Information Governance Catalog (IGC)
+ * metadata repository.  IGC supports its own native REST APIs.
+ * Requests to this metadata collection are translated to the IGC REST API calls and the results are
+ * transformed to OMRS objects before returning to the caller.
+ */
+public class IGCOMRSMetadataCollection extends OMRSMetadataCollectionBase
+{
+    private IGCOMRSRepositoryConnector parentConnector = null;
+
+    /**
+     * Default constructor.
+     *
+     * @param parentConnector - connector that this metadata collection supports.  The connector has the information
+     *                        to call the metadata repository.
+     * @param metadataCollectionId  - unique identifier for the repository.
+     */
+    public IGCOMRSMetadataCollection(IGCOMRSRepositoryConnector parentConnector,
+                                     String                     metadataCollectionId)
+    {
+        /*
+         * The metadata collection Id is the unique Id for the metadata collection.  It is managed by the super class.
+         */
+        super(metadataCollectionId);
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Save parentConnector since this has the connection information.
+         */
+        this.parentConnector = parentConnector;
+
+        /*
+         * This is a temporary implementation to allow the structural implementation of the connectors to
+         * be committed before the metadata collection implementation is complete.
+         */
+        throw new NotImplementedRuntimeException("IGCOMRSMetadataCollection", "constructor", "ATLAS-1774");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnector.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnector.java
new file mode 100644
index 0000000..89a2c95
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnector.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v1.repositoryconnector;
+
+import org.apache.atlas.ocf.ffdc.ConnectorCheckedException;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+
+
+/**
+ * The IGCOMRSRepositoryConnector is a connector to a remote IBM Information Governance Catalog (IGC) repository.
+ */
+public class IGCOMRSRepositoryConnector extends OMRSRepositoryConnector
+{
+    private IGCOMRSMetadataCollection  metadataCollection   = null;
+    private String                     metadataCollectionId = null;
+
+    /**
+     * Default constructor used by the OCF Connector Provider.
+     */
+    public IGCOMRSRepositoryConnector()
+    {
+        /*
+         * Nothing to do (yet !)
+         */
+    }
+
+
+    /**
+     * Set up the unique Id for this metadata collection.
+     *
+     * @param metadataCollectionId - String unique Id
+     */
+    public void setMetadataCollectionId(String     metadataCollectionId)
+    {
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Initialize the metadata collection only once the connector is properly set up.
+         */
+        metadataCollection = new IGCOMRSMetadataCollection(this, metadataCollectionId);
+    }
+
+
+    /**
+     * Returns the metadata collection object that provides an OMRS abstraction of the metadata within
+     * a metadata repository.
+     *
+     * @return OMRSMetadataCollection - metadata information retrieved from the metadata repository.
+     */
+    public OMRSMetadataCollection getMetadataCollection()
+    {
+        if (metadataCollection == null)
+        {
+            // TODO Throw exception since it means the local metadata collection id is not set up.
+        }
+        return metadataCollection;
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     *
+     * @throws ConnectorCheckedException - there is a problem disconnecting the connector.
+     */
+    public void disconnect() throws ConnectorCheckedException
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnectorProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnectorProvider.java
new file mode 100644
index 0000000..00aed67
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v1/repositoryconnector/IGCOMRSRepositoryConnectorProvider.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v1.repositoryconnector;
+
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The IGCOMRSRepositoryConnectorProvider is the connector provider for the IGCOMRSRepositoryConnector.
+ * It extends OMRSRepositoryConnectorProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The IGCOMRSRepositoryConnectorProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class IGCOMRSRepositoryConnectorProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public IGCOMRSRepositoryConnectorProvider()
+    {
+        Class    connectorClass = IGCOMRSRepositoryConnector.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapper.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapper.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapper.java
new file mode 100644
index 0000000..d72aec9
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapper.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v2.eventmapper;
+
+import org.apache.atlas.omrs.eventmanagement.repositoryeventmapper.OMRSRepositoryEventMapperBase;
+
+
+/**
+ * IGCOMRSRepositoryEventMapper provides an implementation of a repository event mapper for the
+ * IBM Governance Catalog (IGC) for relaeave following 11.7.
+ */
+public class IGCV2OMRSRepositoryEventMapper extends OMRSRepositoryEventMapperBase
+{
+    /**
+     * Default constructor
+     */
+    public IGCV2OMRSRepositoryEventMapper()
+    {
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     */
+    public void disconnect()
+    {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapperProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapperProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapperProvider.java
new file mode 100644
index 0000000..730f5aa
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/eventmapper/IGCV2OMRSRepositoryEventMapperProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v2.eventmapper;
+
+import org.apache.atlas.omrs.adapters.igc.v1.eventmapper.IGCOMRSRepositoryEventMapper;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The IGCOMRSRepositoryEventMapperProvider is the connector provider for the IGCOMRSRepositoryEventMapper.
+ * It extends OMRSRepositoryEventMapperProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The IGCV2OMRSRepositoryEventMapperProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class IGCV2OMRSRepositoryEventMapperProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public IGCV2OMRSRepositoryEventMapperProvider()
+    {
+        Class    connectorClass = IGCV2OMRSRepositoryEventMapper.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSMetadataCollection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSMetadataCollection.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSMetadataCollection.java
new file mode 100644
index 0000000..4fe1330
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSMetadataCollection.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v2.repositoryconnector;
+
+import org.apache.atlas.omrs.ffdc.exception.NotImplementedRuntimeException;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollectionBase;
+
+/**
+ * The IGCV2OMRSMetadataCollection represents a remote IBM Information Governance Catalog (IGC)
+ * metadata repository.  IGC supports its own native REST APIs.
+ * Requests to this metadata collection are translated to the IGC REST API calls and the results are
+ * transformed to OMRS objects before returning to the caller.
+ */
+public class IGCV2OMRSMetadataCollection extends OMRSMetadataCollectionBase
+{
+    private IGCV2OMRSRepositoryConnector parentConnector = null;
+
+    /**
+     * Default constructor.
+     *
+     * @param parentConnector - connector that this metadata collection supports.  The connector has the information
+     *                        to call the metadata repository.
+     * @param metadataCollectionId  - unique identifier for the repository.
+     */
+    public IGCV2OMRSMetadataCollection(IGCV2OMRSRepositoryConnector parentConnector,
+                                       String                       metadataCollectionId)
+    {
+        /*
+         * The metadata collection Id is the unique Id for the metadata collection.  It is managed by the super class.
+         */
+        super(metadataCollectionId);
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Save parentConnector since this has the connection information.
+         */
+        this.parentConnector = parentConnector;
+
+        /*
+         * This is a temporary implementation to allow the structural implementation of the connectors to
+         * be committed before the metadata collection implementation is complete.
+         */
+        throw new NotImplementedRuntimeException("IGCV2OMRSMetadataCollection", "constructor", "ATLAS-1774");
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnector.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnector.java
new file mode 100644
index 0000000..5b68cb4
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnector.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v2.repositoryconnector;
+
+import org.apache.atlas.ocf.ffdc.ConnectorCheckedException;
+import org.apache.atlas.omrs.adapters.igc.v1.repositoryconnector.IGCOMRSMetadataCollection;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+
+
+/**
+ * The IGCV2OMRSRepositoryConnector is a connector to a remote IBM Information Governance Catalog (IGC) repository
+ * for releases after 11.7.
+ */
+public class IGCV2OMRSRepositoryConnector extends OMRSRepositoryConnector
+{
+    private IGCV2OMRSMetadataCollection metadataCollection   = null;
+    private String                      metadataCollectionId = null;
+
+    /**
+     * Default constructor used by the OCF Connector Provider.
+     */
+    public IGCV2OMRSRepositoryConnector()
+    {
+        /*
+         * Nothing to do (yet !)
+         */
+    }
+
+
+    /**
+     * Set up the unique Id for this metadata collection.
+     *
+     * @param metadataCollectionId - String unique Id
+     */
+    public void setMetadataCollectionId(String     metadataCollectionId)
+    {
+        this.metadataCollectionId = metadataCollectionId;
+
+        /*
+         * Initialize the metadata collection only once the connector is properly set up.
+         */
+        metadataCollection = new IGCV2OMRSMetadataCollection(this, metadataCollectionId);
+    }
+
+
+    /**
+     * Returns the metadata collection object that provides an OMRS abstraction of the metadata within
+     * a metadata repository.
+     *
+     * @return OMRSMetadataCollection - metadata information retrieved from the metadata repository.
+     */
+    public OMRSMetadataCollection getMetadataCollection()
+    {
+        if (metadataCollection == null)
+        {
+            // TODO Throw exception since it means the local metadata collection id is not set up.
+        }
+        return metadataCollection;
+    }
+
+
+    /**
+     * Free up any resources held since the connector is no longer needed.
+     *
+     * @throws ConnectorCheckedException - there is a problem disconnecting the connector.
+     */
+    public void disconnect() throws ConnectorCheckedException
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnectorProvider.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnectorProvider.java b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnectorProvider.java
new file mode 100644
index 0000000..717f99d
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/adapters/igc/v2/repositoryconnector/IGCV2OMRSRepositoryConnectorProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.adapters.igc.v2.repositoryconnector;
+
+import org.apache.atlas.omrs.adapters.igc.v1.repositoryconnector.IGCOMRSRepositoryConnector;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnectorProviderBase;
+
+/**
+ * In the Open Connector Framework (OCF), a ConnectorProvider is a factory for a specific type of connector.
+ * The IGCV2OMRSRepositoryConnectorProvider is the connector provider for the IGCV2OMRSRepositoryConnector.
+ * It extends OMRSRepositoryConnectorProviderBase which in turn extends the OCF ConnectorProviderBase.
+ * ConnectorProviderBase supports the creation of connector instances.
+ *
+ * The IGCV2OMRSRepositoryConnectorProvider must initialize ConnectorProviderBase with the Java class
+ * name of the OMRS Connector implementation (by calling super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class IGCV2OMRSRepositoryConnectorProvider extends OMRSRepositoryConnectorProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java class name of the specific
+     * OMRS Connector implementation.
+     */
+    public IGCV2OMRSRepositoryConnectorProvider()
+    {
+        Class    connectorClass = IGCV2OMRSRepositoryConnector.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSConfigurationFactory.java b/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSConfigurationFactory.java
new file mode 100644
index 0000000..c626fa0
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSConfigurationFactory.java
@@ -0,0 +1,228 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.admin;
+
+import org.apache.atlas.ocf.properties.*;
+import org.apache.atlas.omrs.admin.properties.*;
+import org.apache.atlas.omrs.metadatahighway.cohortregistry.store.file.FileBasedRegistryStoreProvider;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+import org.apache.atlas.omrs.topicconnectors.kafka.KafkaOMRSTopicProvider;
+
+import java.util.ArrayList;
+import java.util.UUID;
+
+
+/**
+ * OMRSConfigurationFactory sets up default configuration for the OMRS components and manages the changes made
+ * by the server administrator.
+ */
+public class OMRSConfigurationFactory
+{
+    /*
+     * Default property fillers
+     */
+    private static final String  defaultEnterpriseMetadataCollectionName = "Enterprise Metadata Collection";
+
+    private static final String  defaultTopicRootName                    = "omag";
+    private static final String  defaultTopicLeafName                    = "OMRSTopic";
+
+    private static final String  defaultTopicConnectorLeafName           = "OMRS Topic Connector";
+    private static final String  defaultEnterpriseTopicConnectorRootName = "Enterprise";
+
+    private static final String  defaultTopicConnectorName               = "OMRS Kafka Topic Connector";
+    private static final String  defaultTopicConnectorDescription        = "Kafka Topic used to exchange event between members of an open metadata repository cluster.";
+    private static final String  defaultTopicConnectorProviderClassName  = KafkaOMRSTopicProvider.class.getName();
+
+    private static final String  defaultCohortName                       = "defaultCohort";
+
+    private static final String  defaultRegistryStoreFQName              = "OMRS Cohort Registry Store: cohort.registry";
+    private static final String  defaultRegistryStoreDisplayName         = "Cohort Registry Store";
+    private static final String  defaultRegistryStoreDescription         = "File-based Store use by the cohort registry to store information about the members of the open metadata repository cluster.";
+    private static final String  defaultRegistryStoreAddress             = "cohort.registry";
+    private static final String  defaultRegistryStoreProviderClassName   = FileBasedRegistryStoreProvider.class.getName();
+
+
+
+    private String                     localServerName = null;
+    private String                     localServerType = null;
+    private String                     localServerURL = null;
+    private String                     localOrganizationName = null;
+    private RepositoryServicesConfig   repositoryServicesConfig = null;
+
+
+    /**
+     * Constructor used when the server is being configured.  Any parameter may be null.
+     *
+     * @param localServerName - name of the local server
+     * @param localServerType - type of the local server
+     * @param localServerURL - URL of the local server
+     * @param localOrganizationName - name of the organization that owns the local server
+     */
+    public OMRSConfigurationFactory(String                   localServerName,
+                                    String                   localServerType,
+                                    String                   localServerURL,
+                                    String                   localOrganizationName)
+    {
+        this.localServerName = localServerName;
+        this.localServerType = localServerType;
+        this.localServerURL = localServerURL;
+        this.localOrganizationName = localOrganizationName;
+    }
+
+    public  Connection  getGenericConnection()
+    {
+        return null;
+    }
+
+    public  Connection  getDefaultAuditLogConnection()
+    {
+        return null;
+    }
+
+    public  Connection  getDefaultOpenMetadataTypesArchiveConnection()
+    {
+        return null;
+    }
+
+    private Connection  getGenericArchiveConnection()
+    {
+        return null;
+    }
+
+    private Connection  getGenericRepositoryConnection()
+    {
+        return null;
+    }
+
+    private Connection  getDefaultLocalRepositoryLocalConnection()
+    {
+        return null;
+    }
+
+    private Connection  getAtlasLocalRepositoryLocalConnection()
+    {
+        return null;
+    }
+
+    private Connection  getDefaultLocalRepositoryRemoteConnection(String    localServerURL)
+    {
+        return null;
+    }
+
+    private Connection  getDefaultEventMapperConnection()
+    {
+        return null;
+    }
+
+    public  Connection  getGenericEventMapperConnection()
+    {
+        return null;
+    }
+
+    private Connection  getDefaultEnterpriseOMRSTopicConnection()  { return null; }
+
+    private Connection  getDefaultCohortOMRSTopicConnection () { return null; }
+
+    private Connection  getDefaultCohortRegistryConnection ()
+    {
+        return null;
+    }
+
+    private OpenMetadataEventProtocolVersion getDefaultEnterpriseOMRSTopicProtocolVersion() { return OpenMetadataEventProtocolVersion.V1; }
+
+    private OpenMetadataEventProtocolVersion getDefaultCohortOMRSTopicProtocolVersion() { return OpenMetadataEventProtocolVersion.V1; }
+
+    private OpenMetadataExchangeRule  getDefaultEventsToSendRule()
+    {
+        return OpenMetadataExchangeRule.ALL;
+    }
+
+    private ArrayList<TypeDefSummary> getDefaultSelectedTypesToSend() { return null; }
+
+    private OpenMetadataExchangeRule  getDefaultEventsToSaveRule()
+    {
+        return OpenMetadataExchangeRule.ALL;
+    }
+
+    private ArrayList<TypeDefSummary> getDefaultSelectedTypesToSave() { return null; }
+
+    private OpenMetadataExchangeRule getDefaultEventsToProcessRule()
+    {
+        return OpenMetadataExchangeRule.ALL;
+    }
+
+    private ArrayList<TypeDefSummary> getDefaultSelectedTypesToProcess() { return null; }
+
+    private ArrayList<Connection> getDefaultOpenMetadataArchiveList()
+    {
+        ArrayList<Connection> openMetadataArchiveList = new ArrayList<>();
+
+        openMetadataArchiveList.add(this.getDefaultOpenMetadataTypesArchiveConnection());
+
+        return openMetadataArchiveList;
+    }
+
+    public LocalRepositoryConfig getDefaultLocalRepositoryConfig(String    localServerURL)
+    {
+        LocalRepositoryConfig  localRepositoryConfig = new LocalRepositoryConfig();
+
+        localRepositoryConfig.setMetadataCollectionId(UUID.randomUUID().toString());
+        localRepositoryConfig.setLocalRepositoryLocalConnection(this.getDefaultLocalRepositoryLocalConnection());
+        localRepositoryConfig.setLocalRepositoryRemoteConnection(this.getDefaultLocalRepositoryRemoteConnection(localServerURL));
+        localRepositoryConfig.setEventsToSaveRule(this.getDefaultEventsToSaveRule());
+        localRepositoryConfig.setSelectedTypesToSave(this.getDefaultSelectedTypesToSave());
+        localRepositoryConfig.setEventsToSendRule(this.getDefaultEventsToSendRule());
+        localRepositoryConfig.setSelectedTypesToSend(this.getDefaultSelectedTypesToSend());
+        localRepositoryConfig.setEventMapperConnection(this.getDefaultEventMapperConnection());
+
+        return localRepositoryConfig;
+    }
+
+    public EnterpriseAccessConfig getDefaultEnterpriseAccessConfig()
+    {
+        EnterpriseAccessConfig  enterpriseAccessConfig = new EnterpriseAccessConfig();
+
+        enterpriseAccessConfig.setEnterpriseMetadataCollectionId(UUID.randomUUID().toString());
+        enterpriseAccessConfig.setEnterpriseMetadataCollectionName(defaultEnterpriseMetadataCollectionName);
+        enterpriseAccessConfig.setEnterpriseOMRSTopicConnection(this.getDefaultEnterpriseOMRSTopicConnection());
+        enterpriseAccessConfig.setEnterpriseOMRSTopicProtocolVersion(this.getDefaultEnterpriseOMRSTopicProtocolVersion());
+
+        return enterpriseAccessConfig;
+    }
+
+
+    /**
+     * Return a CohortConfig object that is pre-configured with default values.
+     *
+     * @return default values in a CohortConfig object
+     */
+    public CohortConfig  getDefaultCohortConfig()
+    {
+        CohortConfig    cohortConfig = new CohortConfig();
+
+        cohortConfig.setCohortName(defaultCohortName);
+        cohortConfig.setCohortRegistryConnection(this.getDefaultCohortRegistryConnection());
+        cohortConfig.setCohortOMRSTopicConnection(this.getDefaultCohortOMRSTopicConnection());
+        cohortConfig.setCohortOMRSTopicProtocolVersion(this.getDefaultCohortOMRSTopicProtocolVersion());
+        cohortConfig.setEventsToProcessRule(this.getDefaultEventsToProcessRule());
+        cohortConfig.setSelectedTypesToProcess(this.getDefaultSelectedTypesToProcess());
+
+        return cohortConfig;
+    }
+
+}