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:32 UTC

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

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEvent.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEvent.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEvent.java
new file mode 100644
index 0000000..c12752a
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEvent.java
@@ -0,0 +1,453 @@
+/*
+ * 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.eventmanagement.events;
+
+import org.apache.atlas.omrs.eventmanagement.events.v1.OMRSEventV1;
+import org.apache.atlas.omrs.eventmanagement.events.v1.OMRSEventV1TypeDefSection;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.AttributeTypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDef;
+
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefPatch;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class OMRSTypeDefEvent extends OMRSEvent
+{
+    /*
+     * The type of the TypeDef event that defines how the rest of the values should be interpreted.
+     */
+    private OMRSTypeDefEventType typeDefEventType = OMRSTypeDefEventType.UNKNOWN_TYPEDEF_EVENT;
+
+    /*
+     * TypeDef specific properties.
+     */
+    private AttributeTypeDef attributeTypeDef = null;
+    private TypeDef          typeDef          = null;
+    private String           typeDefGUID      = null;
+    private String           typeDefName      = null;
+    private TypeDefPatch     typeDefPatch     = null;
+
+    /*
+     * TypeDef specific properties for events related to correcting conflicts in the open metadata repository
+     * cohort.
+     */
+    private TypeDefSummary   originalTypeDefSummary   = null;
+    private AttributeTypeDef originalAttributeTypeDef = null;
+
+    /*
+     * Specific variables only used in error reporting.  It defines the subset of error codes from OMRSEvent
+     * that are specific to TypeDef events.
+     */
+    private OMRSTypeDefEventErrorCode   errorCode                  = OMRSTypeDefEventErrorCode.NOT_IN_USE;
+
+
+    private static final Logger log = LoggerFactory.getLogger(OMRSTypeDefEvent.class);
+
+    /**
+     * Inbound event constructor that takes the object created by the Jackson JSON mapper and unpacks the
+     * properties into the instance event.
+     *
+     * @param inboundEvent - incoming Event.
+     */
+    public OMRSTypeDefEvent(OMRSEventV1 inboundEvent)
+    {
+        super(inboundEvent);
+
+        OMRSEventV1TypeDefSection typeDefSection = inboundEvent.getTypeDefEventSection();
+
+        if (typeDefSection != null)
+        {
+            this.typeDefEventType = typeDefSection.getTypeDefEventType();
+            this.attributeTypeDef = typeDefSection.getAttributeTypeDef();
+            this.typeDef = typeDefSection.getTypeDef();
+            this.typeDefGUID = typeDefSection.getTypeDefGUID();
+            this.typeDefName = typeDefSection.getTypeDefName();
+            this.typeDefPatch = typeDefSection.getTypeDefPatch();
+            this.originalTypeDefSummary = typeDefSection.getOriginalTypeDefSummary();
+            this.originalAttributeTypeDef = typeDefSection.getOriginalAttributeTypeDef();
+        }
+
+        if (super.genericErrorCode != null)
+        {
+            switch(genericErrorCode)
+            {
+                case CONFLICTING_TYPEDEFS:
+                    errorCode = OMRSTypeDefEventErrorCode.CONFLICTING_TYPEDEFS;
+                    break;
+
+                case CONFLICTING_ATTRIBUTE_TYPEDEFS:
+                    errorCode = OMRSTypeDefEventErrorCode.CONFLICTING_ATTRIBUTE_TYPEDEFS;
+
+                case TYPEDEF_PATCH_MISMATCH:
+                    errorCode = OMRSTypeDefEventErrorCode.TYPEDEF_PATCH_MISMATCH;
+                    break;
+
+                default:
+                    errorCode = OMRSTypeDefEventErrorCode.UNKNOWN_ERROR_CODE;
+                    break;
+            }
+        }
+    }
+
+    /**
+     * Outbound event constructor for events such as newTypeDef.
+     *
+     * @param typeDefEventType - type of event
+     * @param typeDef - Complete details of the TypeDef that is the subject of the event.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            TypeDef              typeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.typeDef = typeDef;
+    }
+
+
+    /**
+     * Outbound event constructor for events such as newAttributeTypeDef.
+     *
+     * @param typeDefEventType - type of event
+     * @param attributeTypeDef - Complete details of the AttributeTypeDef that is the subject of the event.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            AttributeTypeDef     attributeTypeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.attributeTypeDef = attributeTypeDef;
+    }
+
+
+    /**
+     * Outbound event constructor for events such as updates.
+     *
+     * @param typeDefEventType - type of event
+     * @param typeDefPatch - Complete details of the TypeDef that is the subject of the event.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            TypeDefPatch         typeDefPatch)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.typeDefPatch = typeDefPatch;
+    }
+
+
+    /**
+     * Outbound event constructor for events such as deletes.
+     *
+     * @param typeDefEventType - type of event
+     * @param typeDefGUID - Unique identifier of the TypeDef that is the subject of the event.
+     * @param typeDefName - Unique name of the TypeDef that is the subject of the event.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            String               typeDefGUID,
+                            String               typeDefName)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.typeDefGUID = typeDefGUID;
+        this.typeDefName = typeDefName;
+    }
+
+
+    /**
+     * Outbound event constructor for changing the identifiers associated with TypeDefs.
+     *
+     * @param typeDefEventType - type of event
+     * @param originalTypeDefSummary - description of the original TypeDef that is the subject of the event.
+     * @param typeDef - updated TypeDef with new identifiers
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            TypeDefSummary       originalTypeDefSummary,
+                            TypeDef              typeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.originalTypeDefSummary = originalTypeDefSummary;
+        this.typeDef = typeDef;
+    }
+
+
+    /**
+     * Outbound event constructor for changing the identifiers associated with AttributeTypeDefs.
+     *
+     * @param typeDefEventType - type of event
+     * @param originalAttributeTypeDef - description of the original AttributeTypeDef that is the subject of the event.
+     * @param attributeTypeDef - updated AttributeTypeDef with new identifiers
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventType typeDefEventType,
+                            AttributeTypeDef     originalAttributeTypeDef,
+                            AttributeTypeDef     attributeTypeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF);
+
+        this.typeDefEventType = typeDefEventType;
+        this.originalAttributeTypeDef = originalAttributeTypeDef;
+        this.attributeTypeDef = attributeTypeDef;
+    }
+
+
+    /**
+     * Outbound event constructor for conflicting typedef errors.
+     *
+     * @param errorCode - code enum indicating the cause of the error.
+     * @param errorMessage - descriptive message about the error.
+     * @param targetMetadataCollectionId - identifier of the cohort member that issued the event in error.
+     * @param targetTypeDefSummary - details of the TypeDef in the remote repository.
+     * @param otherTypeDefSummary - details of the TypeDef in the local repository.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventErrorCode errorCode,
+                            String                    errorMessage,
+                            String                    targetMetadataCollectionId,
+                            TypeDefSummary            targetTypeDefSummary,
+                            TypeDefSummary            otherTypeDefSummary)
+    {
+        super(OMRSEventCategory.TYPEDEF,
+              errorCode.getErrorCodeEncoding(),
+              errorMessage,
+              targetMetadataCollectionId,
+              targetTypeDefSummary,
+              otherTypeDefSummary);
+
+        this.typeDefEventType = OMRSTypeDefEventType.TYPEDEF_ERROR_EVENT;
+    }
+
+
+    /**
+     * Outbound event constructor for conflicting attribute typedef errors.
+     *
+     * @param errorCode - code enum indicating the cause of the error.
+     * @param errorMessage - descriptive message about the error.
+     * @param targetMetadataCollectionId - identifier of the cohort member that issued the event in error.
+     * @param targetAttributeTypeDef - details of the TypeDef in the remote repository.
+     * @param otherAttributeTypeDef - details of the TypeDef in the local repository.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventErrorCode errorCode,
+                            String                    errorMessage,
+                            String                    targetMetadataCollectionId,
+                            AttributeTypeDef          targetAttributeTypeDef,
+                            AttributeTypeDef          otherAttributeTypeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF,
+              errorCode.getErrorCodeEncoding(),
+              errorMessage,
+              targetMetadataCollectionId,
+              targetAttributeTypeDef,
+              targetAttributeTypeDef);
+
+        this.typeDefEventType = OMRSTypeDefEventType.TYPEDEF_ERROR_EVENT;
+    }
+
+
+
+    /**
+     * Outbound event constructor for typedef mismatch errors.
+     *
+     * @param errorCode - code enum indicating the cause of the error.
+     * @param errorMessage - descriptive message about the error.
+     * @param targetMetadataCollectionId - identifier of the cohort member that issued the event in error.
+     * @param targetTypeDefSummary - details of the TypeDef in the remote repository.
+     * @param otherTypeDef - details of the TypeDef in the local repository.
+     */
+    public OMRSTypeDefEvent(OMRSTypeDefEventErrorCode errorCode,
+                            String                    errorMessage,
+                            String                    targetMetadataCollectionId,
+                            TypeDefSummary            targetTypeDefSummary,
+                            TypeDef                   otherTypeDef)
+    {
+        super(OMRSEventCategory.TYPEDEF,
+              errorCode.getErrorCodeEncoding(),
+              errorMessage,
+              targetMetadataCollectionId,
+              targetTypeDefSummary,
+              otherTypeDef);
+
+        this.typeDefEventType = OMRSTypeDefEventType.TYPEDEF_ERROR_EVENT;
+    }
+
+
+    /**
+     * Return the code for this event's type.
+     *
+     * @return OMRSTypeDefEventType enum
+     */
+    public OMRSTypeDefEventType getTypeDefEventType()
+    {
+        return typeDefEventType;
+    }
+
+
+    /**
+     * Return the complete TypeDef object.
+     *
+     * @return TypeDef object
+     */
+    public TypeDef getTypeDef()
+    {
+        return typeDef;
+    }
+
+
+    /**
+     * Return the complete AttributeTypeDef object.
+     *
+     * @return AttributeTypeDef object
+     */
+    public AttributeTypeDef getAttributeTypeDef()
+    {
+        return attributeTypeDef;
+    }
+
+    /**
+     * Return the unique id of the TypeDef.
+     *
+     * @return String guid
+     */
+    public String getTypeDefGUID()
+    {
+        return typeDefGUID;
+    }
+
+
+    /**
+     * Return the unique name of the TypeDef.
+     *
+     * @return String name
+     */
+    public String getTypeDefName()
+    {
+        return typeDefName;
+    }
+
+
+    /**
+     * Return a patch for the TypeDef.
+     *
+     * @return TypeDefPatch object
+     */
+    public TypeDefPatch getTypeDefPatch()
+    {
+        return typeDefPatch;
+    }
+
+
+    /**
+     * Return the details of the TypeDef before it was changed.
+     *
+     * @return TypeDefSummary containing identifiers, category and version
+     */
+    public TypeDefSummary getOriginalTypeDefSummary()
+    {
+        return originalTypeDefSummary;
+    }
+
+
+    /**
+     * Return the details of the AttributeTypeDef before it was changed.
+     *
+     * @return AttributeTypeDef object
+     */
+    public AttributeTypeDef getOriginalAttributeTypeDef()
+    {
+        return originalAttributeTypeDef;
+    }
+
+    /**
+     * Return the TypeDef error code for error events.
+     *
+     * @return OMRSTypeDefEventErrorCode enum
+     */
+    public OMRSTypeDefEventErrorCode getErrorCode()
+    {
+        return errorCode;
+    }
+
+
+    /**
+     * Returns an OMRSEvent populated with details from this TypeDefEvent
+     *
+     * @return OMRSEvent (Version 1) object
+     */
+    public OMRSEventV1  getOMRSEventV1()
+    {
+        OMRSEventV1     omrsEvent = super.getOMRSEventV1();
+
+        OMRSEventV1TypeDefSection typeDefSection  = new OMRSEventV1TypeDefSection();
+
+        typeDefSection.setTypeDefEventType(this.typeDefEventType);
+        typeDefSection.setTypeDef(this.typeDef);
+        typeDefSection.setAttributeTypeDef(this.attributeTypeDef);
+        typeDefSection.setTypeDefPatch(this.typeDefPatch);
+        typeDefSection.setTypeDefGUID(this.typeDefGUID);
+        typeDefSection.setTypeDefName(this.typeDefName);
+        typeDefSection.setOriginalTypeDefSummary(this.originalTypeDefSummary);
+        typeDefSection.setOriginalAttributeTypeDef(this.originalAttributeTypeDef);
+
+        omrsEvent.setTypeDefEventSection(typeDefSection);
+
+        return omrsEvent;
+    }
+
+
+    /**
+     * Standard toString method.
+     *
+     * @return JSON style description of variables.
+     */
+    @Override
+    public String toString()
+    {
+        return "OMRSTypeDefEvent{" +
+                "typeDefEventType=" + typeDefEventType +
+                ", attributeTypeDef=" + attributeTypeDef +
+                ", typeDef=" + typeDef +
+                ", typeDefGUID='" + typeDefGUID + '\'' +
+                ", typeDefName='" + typeDefName + '\'' +
+                ", typeDefPatch=" + typeDefPatch +
+                ", originalTypeDefSummary=" + originalTypeDefSummary +
+                ", originalAttributeTypeDef=" + originalAttributeTypeDef +
+                ", errorCode=" + errorCode +
+                ", eventTimestamp=" + eventTimestamp +
+                ", eventDirection=" + eventDirection +
+                ", eventCategory=" + eventCategory +
+                ", eventOriginator=" + eventOriginator +
+                ", genericErrorCode=" + genericErrorCode +
+                ", errorMessage='" + errorMessage + '\'' +
+                ", targetMetadataCollectionId='" + targetMetadataCollectionId + '\'' +
+                ", targetRemoteConnection=" + targetRemoteConnection +
+                ", targetTypeDefSummary=" + targetTypeDefSummary +
+                ", targetAttributeTypeDef=" + targetAttributeTypeDef +
+                ", targetInstanceGUID='" + targetInstanceGUID + '\'' +
+                ", otherOrigin=" + otherOrigin +
+                ", otherMetadataCollectionId='" + otherMetadataCollectionId + '\'' +
+                ", otherTypeDefSummary=" + otherTypeDefSummary +
+                ", otherTypeDef=" + otherTypeDef +
+                ", otherAttributeTypeDef=" + otherAttributeTypeDef +
+                ", otherInstanceGUID='" + otherInstanceGUID + '\'' +
+                '}';
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventErrorCode.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventErrorCode.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventErrorCode.java
new file mode 100644
index 0000000..fd36108
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventErrorCode.java
@@ -0,0 +1,122 @@
+/*
+ * 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.eventmanagement.events;
+
+import org.apache.atlas.omrs.eventmanagement.events.OMRSEventErrorCode;
+
+/**
+ * OMRSTypeDefEventErrorCode defines the list of error codes that are used to record errors in the TypeDef
+ * synchronization process that is used by the repository connectors within the open metadata repository cluster.
+ * <ul>
+ *     <li>
+ *         NOT_IN_USE - There has been no error detected and so the error code is not in use.
+ *     </li>
+ * </ul>
+ */
+public enum OMRSTypeDefEventErrorCode
+{
+    NOT_IN_USE                     (0,  "No Error",
+                                        "There has been no error detected and so the error code is not in use.",
+                                        null),
+    CONFLICTING_TYPEDEFS           (1,  "ConflictingTypeDefs",
+                                        "There are conflicting type definitions (TypeDefs) detected between two " +
+                                        "repositories in the open metadata repository cohort.",
+                                        OMRSEventErrorCode.CONFLICTING_TYPEDEFS),
+    CONFLICTING_ATTRIBUTE_TYPEDEFS (2,  "ConflictingAttributeTypeDefs",
+                                        "There are conflicting attribute type definitions (AttributeTypeDefs) detected between two " +
+                                        "repositories in the open metadata repository cohort.",
+                                        OMRSEventErrorCode.CONFLICTING_ATTRIBUTE_TYPEDEFS),
+    TYPEDEF_PATCH_MISMATCH         (3,  "TypeDefPatchMismatch",
+                                        "There are different versions of a TypeDef in use in the cohort",
+                                        OMRSEventErrorCode.TYPEDEF_PATCH_MISMATCH),
+    UNKNOWN_ERROR_CODE             (99, "Unknown Error Code",
+                                        "Unrecognized error code from incoming event.",
+                                        null);
+
+
+    private int                errorCodeId;
+    private String             errorCodeName;
+    private String             errorCodeDescription;
+    private OMRSEventErrorCode errorCodeEncoding;
+
+
+    /**
+     * Default constructor sets up the values for this enum instance.
+     *
+     * @param errorCodeId - int identifier for the enum, used for indexing arrays etc with the enum.
+     * @param errorCodeName - String name for the enum, used for message content.
+     * @param errorCodeDescription - String default description for the enum, used when there is not natural
+     *                             language resource bundle available.
+     * @param errorCodeEncoding - code value to use in OMRSEvents
+     */
+    OMRSTypeDefEventErrorCode(int                errorCodeId,
+                              String             errorCodeName,
+                              String             errorCodeDescription,
+                              OMRSEventErrorCode errorCodeEncoding)
+    {
+        this.errorCodeId = errorCodeId;
+        this.errorCodeName = errorCodeName;
+        this.errorCodeDescription = errorCodeDescription;
+        this.errorCodeEncoding = errorCodeEncoding;
+    }
+
+
+    /**
+     * Return the identifier for the enum, used for indexing arrays etc with the enum.
+     *
+     * @return int identifier
+     */
+    public int getErrorCodeId()
+    {
+        return errorCodeId;
+    }
+
+
+    /**
+     * Return the name for the enum, used for message content.
+     *
+     * @return String name
+     */
+    public String getErrorCodeName()
+    {
+        return errorCodeName;
+    }
+
+
+    /**
+     * Return the default description for the enum, used when there is not natural
+     * language resource bundle available.
+     *
+     * @return String default description
+     */
+    public String getErrorCodeDescription()
+    {
+        return errorCodeDescription;
+    }
+
+
+    /**
+     * Return the encoding to use in OMRSEvents.
+     *
+     * @return String OMRSEvent encoding for this errorCode
+     */
+    public OMRSEventErrorCode getErrorCodeEncoding()
+    {
+        return errorCodeEncoding;
+    }
+}
\ 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/eventmanagement/events/OMRSTypeDefEventProcessor.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventProcessor.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventProcessor.java
new file mode 100644
index 0000000..7cb2338
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventProcessor.java
@@ -0,0 +1,262 @@
+/*
+ * 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.eventmanagement.events;
+
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.AttributeTypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefPatch;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+
+/**
+ * OMRSTypeDefEventProcessor is an interface implemented by a component that is able to process incoming
+ * TypeDef events for an Open Metadata Repository.  TypeDef events are used to synchronize TypeDefs across
+ * an Open Metadata Repository Cohort.
+ */
+public interface OMRSTypeDefEventProcessor
+{
+    /**
+     * A new TypeDef has been defined in an open metadata repository.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param typeDef - details of the new TypeDef.
+     */
+    void processNewTypeDefEvent(String      sourceName,
+                                String      originatorMetadataCollectionId,
+                                String      originatorServerName,
+                                String      originatorServerType,
+                                String      originatorOrganizationName,
+                                TypeDef     typeDef);
+
+
+    /**
+     * A new AttributeTypeDef has been defined in an open metadata repository.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param attributeTypeDef - details of the new AttributeTypeDef.
+     */
+    void processNewAttributeTypeDefEvent(String           sourceName,
+                                         String           originatorMetadataCollectionId,
+                                         String           originatorServerName,
+                                         String           originatorServerType,
+                                         String           originatorOrganizationName,
+                                         AttributeTypeDef attributeTypeDef);
+
+
+    /**
+     * An existing TypeDef has been updated in an open metadata repository.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param typeDefPatch - details of the new version of the TypeDef
+     */
+    void processUpdatedTypeDefEvent(String       sourceName,
+                                    String       originatorMetadataCollectionId,
+                                    String       originatorServerName,
+                                    String       originatorServerType,
+                                    String       originatorOrganizationName,
+                                    TypeDefPatch typeDefPatch);
+
+
+    /**
+     * An existing TypeDef has been deleted in an open metadata repository.  Both the name and the
+     * GUID are provided to ensure the right TypeDef is deleted in other cohort member repositories.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param typeDefGUID - unique identifier of the TypeDef
+     * @param typeDefName - unique name of the TypeDef
+     */
+    void processDeletedTypeDefEvent(String      sourceName,
+                                    String      originatorMetadataCollectionId,
+                                    String      originatorServerName,
+                                    String      originatorServerType,
+                                    String      originatorOrganizationName,
+                                    String      typeDefGUID,
+                                    String      typeDefName);
+
+
+    /**
+     * An existing AttributeTypeDef has been deleted in an open metadata repository.  Both the name and the
+     * GUID are provided to ensure the right AttributeTypeDef is deleted in other cohort member repositories.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param attributeTypeDefGUID - unique identifier of the AttributeTypeDef
+     * @param attributeTypeDefName - unique name of the AttributeTypeDef
+     */
+    void processDeletedAttributeTypeDefEvent(String      sourceName,
+                                             String      originatorMetadataCollectionId,
+                                             String      originatorServerName,
+                                             String      originatorServerType,
+                                             String      originatorOrganizationName,
+                                             String      attributeTypeDefGUID,
+                                             String      attributeTypeDefName);
+
+
+    /**
+     * Process an event that changes either the name or guid of a TypeDef.  It is resolving a Conflicting TypeDef Error.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param originalTypeDef - description of original TypeDef
+     * @param typeDef - updated TypeDef with new identifiers inside.
+     */
+    void processReIdentifiedTypeDefEvent(String         sourceName,
+                                         String         originatorMetadataCollectionId,
+                                         String         originatorServerName,
+                                         String         originatorServerType,
+                                         String         originatorOrganizationName,
+                                         TypeDefSummary originalTypeDef,
+                                         TypeDef        typeDef);
+
+
+    /**
+     * Process an event that changes either the name or guid of an AttributeTypeDef.
+     * It is resolving a Conflicting AttributeTypeDef Error.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param originalAttributeTypeDef - description of original AttributeTypeDef
+     * @param attributeTypeDef - updated AttributeTypeDef with new identifiers inside.
+     */
+    void processReIdentifiedAttributeTypeDefEvent(String           sourceName,
+                                                  String           originatorMetadataCollectionId,
+                                                  String           originatorServerName,
+                                                  String           originatorServerType,
+                                                  String           originatorOrganizationName,
+                                                  AttributeTypeDef originalAttributeTypeDef,
+                                                  AttributeTypeDef attributeTypeDef);
+
+
+    /**
+     * Process a detected conflict in the type definitions (TypeDefs) used in the cohort.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param originatorTypeDef- description of the TypeDef in the event originator.
+     * @param otherMetadataCollectionId - the metadataCollection using the conflicting TypeDef.
+     * @param conflictingTypeDef - description of the TypeDef in the other metadata collection.
+     * @param errorMessage - details of the error that occurs when the connection is used.
+     */
+    void processTypeDefConflictEvent(String         sourceName,
+                                     String         originatorMetadataCollectionId,
+                                     String         originatorServerName,
+                                     String         originatorServerType,
+                                     String         originatorOrganizationName,
+                                     TypeDefSummary originatorTypeDef,
+                                     String         otherMetadataCollectionId,
+                                     TypeDefSummary conflictingTypeDef,
+                                     String         errorMessage);
+
+
+    /**
+     * Process a detected conflict in the attribute type definitions (AttributeTypeDefs) used in the cohort.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param originatorAttributeTypeDef- description of the AttributeTypeDef in the event originator.
+     * @param otherMetadataCollectionId - the metadataCollection using the conflicting AttributeTypeDef.
+     * @param conflictingAttributeTypeDef - description of the AttributeTypeDef in the other metadata collection.
+     * @param errorMessage - details of the error that occurs when the connection is used.
+     */
+    void processAttributeTypeDefConflictEvent(String           sourceName,
+                                              String           originatorMetadataCollectionId,
+                                              String           originatorServerName,
+                                              String           originatorServerType,
+                                              String           originatorOrganizationName,
+                                              AttributeTypeDef originatorAttributeTypeDef,
+                                              String           otherMetadataCollectionId,
+                                              AttributeTypeDef conflictingAttributeTypeDef,
+                                              String           errorMessage);
+
+
+    /**
+     * A TypeDef from another member in the cohort is at a different version than the local repository.  This may
+     * create some inconsistencies in the different copies of instances of this type in different members of the
+     * cohort.  The recommended action is to update all TypeDefs to the latest version.
+     *
+     * @param sourceName - name of the source of the event.  It may be the cohort name for incoming events or the
+     *                   local repository, or event mapper name.
+     * @param originatorMetadataCollectionId - unique identifier for the metadata collection hosted by the server that
+     *                                       sent the event.
+     * @param originatorServerName - name of the server that the event came from.
+     * @param originatorServerType - type of server that the event came from.
+     * @param originatorOrganizationName - name of the organization that owns the server that sent the event.
+     * @param targetMetadataCollectionId - identifier of the metadata collection that is reporting a TypeDef at a
+     *                                   different level to the reporting repository.
+     * @param targetTypeDef - details of the TypeDef in the target repository.
+     * @param otherTypeDef - details of the TypeDef in the other repository.
+     * @param errorMessage - details of the error that occurs when the connection is used.
+     */
+    void processTypeDefPatchMismatchEvent(String         sourceName,
+                                          String         originatorMetadataCollectionId,
+                                          String         originatorServerName,
+                                          String         originatorServerType,
+                                          String         originatorOrganizationName,
+                                          String         targetMetadataCollectionId,
+                                          TypeDefSummary targetTypeDef,
+                                          TypeDef        otherTypeDef,
+                                          String         errorMessage);
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventType.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventType.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventType.java
new file mode 100644
index 0000000..e1db23d
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/OMRSTypeDefEventType.java
@@ -0,0 +1,111 @@
+/*
+ * 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.eventmanagement.events;
+
+/**
+ * OMRSTypeDefEventType defines the different types of TypeDef events in the open metadata repository services
+ * protocol:
+ * <ul>
+ *     <li>
+ *         UNKNOWN_TYPEDEF_EVENT - the event is not recognized by this local server, probably because it is back-level
+ *         from other servers in the cluster.  It is logged in the audit log and then ignored.  The metadata exchange
+ *         protocol should evolve so that new message types can be ignored by back-level servers without damage
+ *         to the cluster's integrity.
+ *     </li>
+ *     <li>
+ *         NEW_TYPEDEF - A new TypeDef has been defined.
+ *     </li>
+ *     <li>
+ *         UPDATED_TYPEDEF - An existing TypeDef has been updated.
+ *     </li>
+ *     <li>
+ *         DELETED_TYPEDEF_EVENT - An existing TypeDef has been deleted.
+ *     </li>
+ *     <li>
+ *         RE_IDENTIFIED_TYPEDEF_EVENT - the guid has been changed for a TypeDef.
+ *     </li>
+ * </ul>
+ */
+public enum OMRSTypeDefEventType
+{
+    UNKNOWN_TYPEDEF_EVENT                 (0,  "UnknownTypeDefEvent",          "An TypeDef event that is not recognized by the local server."),
+    NEW_TYPEDEF_EVENT                     (1,  "NewTypeDef",                   "A new TypeDef has been defined."),
+    NEW_ATTRIBUTE_TYPEDEF_EVENT           (2,  "NewAttributeTypeDef",          "A new AttributeTypeDef has been defined."),
+    UPDATED_TYPEDEF_EVENT                 (3,  "UpdatedTypeDef",               "An existing TypeDef has been updated."),
+    DELETED_TYPEDEF_EVENT                 (4,  "DeletedTypeDef",               "An existing TypeDef has been deleted."),
+    DELETED_ATTRIBUTE_TYPEDEF_EVENT       (5,  "DeletedAttributeTypeDef",      "An existing AttributeTypeDef has been deleted."),
+    RE_IDENTIFIED_TYPEDEF_EVENT           (6,  "ReIdentifiedTypeDef",          "An existing TypeDef has changed either it guid or its name."),
+    RE_IDENTIFIED_ATTRIBUTE_TYPEDEF_EVENT (7,  "ReIdentifiedAttributeTypeDef", "An existing AttributeTypeDef has changed either it guid or its name."),
+    TYPEDEF_ERROR_EVENT                   (99, "InstanceErrorEvent",
+                                               "An error has been detected in the exchange of TypeDefs between members of the cohort.");
+
+
+    private  int      eventTypeCode;
+    private  String   eventTypeName;
+    private  String   eventTypeDescription;
+
+
+    /**
+     * Default Constructor - sets up the specific values for this instance of the enum.
+     *
+     * @param eventTypeCode - int identifier used for indexing based on the enum.
+     * @param eventTypeName - string name used for messages that include the enum.
+     * @param eventTypeDescription - default description for the enum value - used when natural resource
+     *                                     bundle is not available.
+     */
+    OMRSTypeDefEventType(int eventTypeCode, String eventTypeName, String eventTypeDescription)
+    {
+        this.eventTypeCode = eventTypeCode;
+        this.eventTypeName = eventTypeName;
+        this.eventTypeDescription = eventTypeDescription;
+    }
+
+
+    /**
+     * Return the int identifier used for indexing based on the enum.
+     *
+     * @return int identifier code
+     */
+    public int getTypeDefEventTypeCode()
+    {
+        return eventTypeCode;
+    }
+
+
+    /**
+     * Return the string name used for messages that include the enum.
+     *
+     * @return String name
+     */
+    public String getTypeDefEventTypeName()
+    {
+        return eventTypeName;
+    }
+
+
+    /**
+     * Return the default description for the enum value - used when natural resource
+     * bundle is not available.
+     *
+     * @return String default description
+     */
+    public String getTypeDefEventTypeDescription()
+    {
+        return eventTypeDescription;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1.java
new file mode 100644
index 0000000..8d20042
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1.java
@@ -0,0 +1,132 @@
+/*
+ * 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.eventmanagement.events.v1;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import org.apache.atlas.omrs.eventmanagement.events.OMRSEventCategory;
+import org.apache.atlas.omrs.eventmanagement.events.OMRSEventOriginator;
+
+
+import java.io.Serializable;
+import java.util.Date;
+
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+
+
+/**
+ * OMRSEventV1 is the OMRSEvent payload for versionName 1 of the open metadata and governance message exchange.
+ */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class OMRSEventV1 implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private final String                     protocolVersionId    = "OMRS V1.0";
+    private       Date                       timestamp            = null;
+    private       OMRSEventOriginator        originator           = null;
+    private       OMRSEventCategory          eventCategory        = null;
+    private       OMRSEventV1RegistrySection registryEventSection = null;
+    private       OMRSEventV1TypeDefSection  typeDefEventSection  = null;
+    private       OMRSEventV1InstanceSection instanceEventSection = null;
+    private       OMRSEventV1ErrorSection    errorSection         = null;
+
+    public OMRSEventV1()
+    {
+    }
+
+    public String getProtocolVersionId()
+    {
+        return protocolVersionId;
+    }
+
+    public Date getTimestamp()
+    {
+        return timestamp;
+    }
+
+    public void setTimestamp(Date timestamp)
+    {
+        this.timestamp = timestamp;
+    }
+
+    public OMRSEventOriginator getOriginator()
+    {
+        return originator;
+    }
+
+    public void setOriginator(OMRSEventOriginator originator)
+    {
+        this.originator = originator;
+    }
+
+    public OMRSEventCategory getEventCategory()
+    {
+        return eventCategory;
+    }
+
+    public void setEventCategory(OMRSEventCategory eventCategory)
+    {
+        this.eventCategory = eventCategory;
+    }
+
+    public OMRSEventV1RegistrySection getRegistryEventSection()
+    {
+        return registryEventSection;
+    }
+
+    public void setRegistryEventSection(OMRSEventV1RegistrySection registryEventSection)
+    {
+        this.registryEventSection = registryEventSection;
+    }
+
+    public OMRSEventV1TypeDefSection getTypeDefEventSection()
+    {
+        return typeDefEventSection;
+    }
+
+    public void setTypeDefEventSection(OMRSEventV1TypeDefSection typeDefEventSection)
+    {
+        this.typeDefEventSection = typeDefEventSection;
+    }
+
+    public OMRSEventV1InstanceSection getInstanceEventSection()
+    {
+        return instanceEventSection;
+    }
+
+    public void setInstanceEventSection(OMRSEventV1InstanceSection instanceEventSection)
+    {
+        this.instanceEventSection = instanceEventSection;
+    }
+
+    public OMRSEventV1ErrorSection getErrorSection()
+    {
+        return errorSection;
+    }
+
+    public void setErrorSection(OMRSEventV1ErrorSection errorSection)
+    {
+        this.errorSection = errorSection;
+    }
+}
\ 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/eventmanagement/events/v1/OMRSEventV1ErrorSection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1ErrorSection.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1ErrorSection.java
new file mode 100644
index 0000000..8926491
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1ErrorSection.java
@@ -0,0 +1,182 @@
+/*
+ * 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.eventmanagement.events.v1;
+
+import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.omrs.eventmanagement.events.OMRSEventErrorCode;
+import org.apache.atlas.omrs.metadatacollection.properties.instances.InstanceProvenanceType;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.AttributeTypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefCategory;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+
+import java.io.Serializable;
+
+/**
+ * OMRSEventV1ErrorSection describes the properties used to record errors detected by one of the members of the
+ * open metadata repository cohort.
+ */
+public class OMRSEventV1ErrorSection implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private OMRSEventErrorCode     errorCode                  = null;
+    private String                 errorMessage               = null;
+    private String                 targetMetadataCollectionId = null;
+    private Connection             targetRemoteConnection     = null;
+    private TypeDefSummary         targetTypeDefSummary       = null;
+    private AttributeTypeDef       targetAttributeTypeDef     = null;
+    private String                 targetInstanceGUID         = null;
+    private InstanceProvenanceType otherOrigin                = null;
+    private String                 otherMetadataCollectionId  = null;
+    private TypeDefSummary         otherTypeDefSummary        = null;
+    private TypeDef                otherTypeDef               = null;
+    private AttributeTypeDef       otherAttributeTypeDef      = null;
+    private String                 otherInstanceGUID          = null;
+
+    public OMRSEventV1ErrorSection()
+    {
+    }
+
+    public OMRSEventErrorCode getErrorCode()
+    {
+        return errorCode;
+    }
+
+    public void setErrorCode(OMRSEventErrorCode errorCode)
+    {
+        this.errorCode = errorCode;
+    }
+
+    public String getErrorMessage()
+    {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage)
+    {
+        this.errorMessage = errorMessage;
+    }
+
+    public String getTargetMetadataCollectionId()
+    {
+        return targetMetadataCollectionId;
+    }
+
+    public void setTargetMetadataCollectionId(String targetMetadataCollectionId)
+    {
+        this.targetMetadataCollectionId = targetMetadataCollectionId;
+    }
+
+    public Connection getTargetRemoteConnection()
+    {
+        return targetRemoteConnection;
+    }
+
+    public void setTargetRemoteConnection(Connection targetRemoteConnection)
+    {
+        this.targetRemoteConnection = targetRemoteConnection;
+    }
+
+    public TypeDefSummary getTargetTypeDefSummary()
+    {
+        return targetTypeDefSummary;
+    }
+
+    public void setTargetTypeDefSummary(TypeDefSummary targetTypeDefSummary)
+    {
+        this.targetTypeDefSummary = targetTypeDefSummary;
+    }
+
+    public AttributeTypeDef getTargetAttributeTypeDef()
+    {
+        return targetAttributeTypeDef;
+    }
+
+    public void setTargetAttributeTypeDef(AttributeTypeDef targetAttributeTypeDef)
+    {
+        this.targetAttributeTypeDef = targetAttributeTypeDef;
+    }
+
+    public String getTargetInstanceGUID()
+    {
+        return targetInstanceGUID;
+    }
+
+    public void setTargetInstanceGUID(String targetInstanceGUID)
+    {
+        this.targetInstanceGUID = targetInstanceGUID;
+    }
+
+    public InstanceProvenanceType getOtherOrigin()
+    {
+        return otherOrigin;
+    }
+
+    public void setOtherOrigin(InstanceProvenanceType otherOrigin)
+    {
+        this.otherOrigin = otherOrigin;
+    }
+
+    public String getOtherMetadataCollectionId()
+    {
+        return otherMetadataCollectionId;
+    }
+
+    public void setOtherMetadataCollectionId(String otherMetadataCollectionId)
+    {
+        this.otherMetadataCollectionId = otherMetadataCollectionId;
+    }
+
+    public TypeDefSummary getOtherTypeDefSummary() { return otherTypeDefSummary; }
+
+    public void setOtherTypeDefSummary(TypeDefSummary otherTypeDefSummary)
+    {
+        this.otherTypeDefSummary = otherTypeDefSummary;
+    }
+
+    public TypeDef getOtherTypeDef()
+    {
+        return otherTypeDef;
+    }
+
+    public void setOtherTypeDef(TypeDef otherTypeDef)
+    {
+        this.otherTypeDef = otherTypeDef;
+    }
+
+    public AttributeTypeDef getOtherAttributeTypeDef()
+    {
+        return otherAttributeTypeDef;
+    }
+
+    public void setOtherAttributeTypeDef(AttributeTypeDef otherAttributeTypeDef)
+    {
+        this.otherAttributeTypeDef = otherAttributeTypeDef;
+    }
+
+    public String getOtherInstanceGUID()
+    {
+        return otherInstanceGUID;
+    }
+
+    public void setOtherInstanceGUID(String otherInstanceGUID)
+    {
+        this.otherInstanceGUID = otherInstanceGUID;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1InstanceSection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1InstanceSection.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1InstanceSection.java
new file mode 100644
index 0000000..f5d55fa
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1InstanceSection.java
@@ -0,0 +1,149 @@
+/*
+ * 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.eventmanagement.events.v1;
+
+import org.apache.atlas.omrs.eventmanagement.events.OMRSInstanceEventType;
+import org.apache.atlas.omrs.metadatacollection.properties.instances.EntityDetail;
+import org.apache.atlas.omrs.metadatacollection.properties.instances.Relationship;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+
+import java.io.Serializable;
+
+/**
+ * OMRSEventV1InstanceSection describes the properties specific to instance events
+ */
+public class OMRSEventV1InstanceSection implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private OMRSInstanceEventType eventType = null;
+
+    private String         typeDefGUID                      = null;
+    private String         typeDefName                      = null;
+    private String         instanceGUID                     = null;
+    private EntityDetail   entity                           = null;
+    private Relationship   relationship                     = null;
+    private String         homeMetadataCollectionId         = null;
+    private String         originalHomeMetadataCollectionId = null;
+    private TypeDefSummary originalTypeDefSummary           = null;
+    private String         originalInstanceGUID             = null;
+
+    public OMRSEventV1InstanceSection()
+    {
+    }
+
+    public OMRSInstanceEventType getEventType()
+    {
+        return eventType;
+    }
+
+    public void setEventType(OMRSInstanceEventType eventType)
+    {
+        this.eventType = eventType;
+    }
+
+    public String getTypeDefGUID()
+    {
+        return typeDefGUID;
+    }
+
+    public void setTypeDefGUID(String typeDefGUID)
+    {
+        this.typeDefGUID = typeDefGUID;
+    }
+
+    public String getTypeDefName()
+    {
+        return typeDefName;
+    }
+
+    public void setTypeDefName(String typeDefName)
+    {
+        this.typeDefName = typeDefName;
+    }
+
+    public String getInstanceGUID()
+    {
+        return instanceGUID;
+    }
+
+    public void setInstanceGUID(String instanceGUID)
+    {
+        this.instanceGUID = instanceGUID;
+    }
+
+    public EntityDetail getEntity()
+    {
+        return entity;
+    }
+
+    public void setEntity(EntityDetail entity)
+    {
+        this.entity = entity;
+    }
+
+    public Relationship getRelationship()
+    {
+        return relationship;
+    }
+
+    public void setRelationship(Relationship relationship)
+    {
+        this.relationship = relationship;
+    }
+
+    public String getHomeMetadataCollectionId()
+    {
+        return homeMetadataCollectionId;
+    }
+
+    public void setHomeMetadataCollectionId(String homeMetadataCollectionId)
+    {
+        this.homeMetadataCollectionId = homeMetadataCollectionId;
+    }
+
+    public String getOriginalHomeMetadataCollectionId()
+    {
+        return originalHomeMetadataCollectionId;
+    }
+
+    public void setOriginalHomeMetadataCollectionId(String originalHomeMetadataCollectionId)
+    {
+        this.originalHomeMetadataCollectionId = originalHomeMetadataCollectionId;
+    }
+
+    public TypeDefSummary getOriginalTypeDefSummary()
+    {
+        return originalTypeDefSummary;
+    }
+
+    public void setOriginalTypeDefSummary(TypeDefSummary originalTypeDefSummary)
+    {
+        this.originalTypeDefSummary = originalTypeDefSummary;
+    }
+
+    public String getOriginalInstanceGUID()
+    {
+        return originalInstanceGUID;
+    }
+
+    public void setOriginalInstanceGUID(String originalInstanceGUID)
+    {
+        this.originalInstanceGUID = originalInstanceGUID;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1RegistrySection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1RegistrySection.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1RegistrySection.java
new file mode 100644
index 0000000..0fb5f6c
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1RegistrySection.java
@@ -0,0 +1,83 @@
+/*
+ * 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.eventmanagement.events.v1;
+
+import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.omrs.eventmanagement.events.OMRSRegistryEventType;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ * OMRSEventV1RegistrySection describes properties that are used exclusively for registry events.
+ */
+public class OMRSEventV1RegistrySection implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private OMRSRegistryEventType     registryEventType     = null;
+    private Date                      registrationTimestamp = null;
+    private Connection                remoteConnection      = null;
+    private ArrayList<TypeDefSummary> TypeDefList           = null;
+
+    public OMRSEventV1RegistrySection()
+    {
+    }
+
+    public OMRSRegistryEventType getRegistryEventType()
+    {
+        return registryEventType;
+    }
+
+    public void setRegistryEventType(OMRSRegistryEventType registryEventType)
+    {
+        this.registryEventType = registryEventType;
+    }
+
+    public Date getRegistrationTimestamp()
+    {
+        return registrationTimestamp;
+    }
+
+    public void setRegistrationTimestamp(Date registrationTimestamp)
+    {
+        this.registrationTimestamp = registrationTimestamp;
+    }
+
+    public Connection getRemoteConnection()
+    {
+        return remoteConnection;
+    }
+
+    public void setRemoteConnection(Connection remoteConnection)
+    {
+        this.remoteConnection = remoteConnection;
+    }
+
+    public ArrayList<TypeDefSummary> getTypeDefList()
+    {
+        return TypeDefList;
+    }
+
+    public void setTypeDefList(ArrayList<TypeDefSummary> typeDefList)
+    {
+        TypeDefList = typeDefList;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1TypeDefSection.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1TypeDefSection.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1TypeDefSection.java
new file mode 100644
index 0000000..fc75df5
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/events/v1/OMRSEventV1TypeDefSection.java
@@ -0,0 +1,127 @@
+/*
+ * 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.eventmanagement.events.v1;
+
+import org.apache.atlas.omrs.eventmanagement.events.OMRSTypeDefEventType;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.AttributeTypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDef;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefPatch;
+import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
+
+import java.io.Serializable;
+
+/**
+ * OMRSEventV1TypeDefSection describes the properties specific to TypeDef related events
+ */
+public class OMRSEventV1TypeDefSection implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private OMRSTypeDefEventType typeDefEventType         = null;
+    private String               typeDefGUID              = null;
+    private String               typeDefName              = null;
+    private AttributeTypeDef     attributeTypeDef         = null;
+    private TypeDef              typeDef                  = null;
+    private TypeDefPatch         typeDefPatch             = null;
+    private TypeDefSummary       originalTypeDefSummary   = null;
+    private AttributeTypeDef     originalAttributeTypeDef = null;
+
+    public OMRSEventV1TypeDefSection()
+    {
+    }
+
+    public OMRSTypeDefEventType getTypeDefEventType()
+    {
+        return typeDefEventType;
+    }
+
+    public void setTypeDefEventType(OMRSTypeDefEventType typeDefEventType)
+    {
+        this.typeDefEventType = typeDefEventType;
+    }
+
+    public String getTypeDefGUID()
+    {
+        return typeDefGUID;
+    }
+
+    public void setTypeDefGUID(String typeDefGUID)
+    {
+        this.typeDefGUID = typeDefGUID;
+    }
+
+    public String getTypeDefName()
+    {
+        return typeDefName;
+    }
+
+    public void setTypeDefName(String typeDefName)
+    {
+        this.typeDefName = typeDefName;
+    }
+
+    public AttributeTypeDef getAttributeTypeDef()
+    {
+        return attributeTypeDef;
+    }
+
+    public void setAttributeTypeDef(AttributeTypeDef attributeTypeDef)
+    {
+        this.attributeTypeDef = attributeTypeDef;
+    }
+
+    public TypeDef getTypeDef()
+    {
+        return typeDef;
+    }
+
+    public void setTypeDef(TypeDef typeDef)
+    {
+        this.typeDef = typeDef;
+    }
+
+    public TypeDefPatch getTypeDefPatch()
+    {
+        return typeDefPatch;
+    }
+
+    public void setTypeDefPatch(TypeDefPatch typeDefPatch)
+    {
+        this.typeDefPatch = typeDefPatch;
+    }
+
+    public TypeDefSummary getOriginalTypeDefSummary()
+    {
+        return originalTypeDefSummary;
+    }
+
+    public void setOriginalTypeDefSummary(TypeDefSummary originalTypeDefSummary)
+    {
+        this.originalTypeDefSummary = originalTypeDefSummary;
+    }
+
+    public AttributeTypeDef getOriginalAttributeTypeDef()
+    {
+        return originalAttributeTypeDef;
+    }
+
+    public void setOriginalAttributeTypeDef(AttributeTypeDef originalAttributeTypeDef)
+    {
+        this.originalAttributeTypeDef = originalAttributeTypeDef;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapper.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapper.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapper.java
new file mode 100644
index 0000000..99a8569
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapper.java
@@ -0,0 +1,65 @@
+/*
+ * 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.eventmanagement.repositoryeventmapper;
+
+import org.apache.atlas.omrs.eventmanagement.OMRSRepositoryEventProcessor;
+import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+
+/**
+ * OMRSRepositoryEventMapper is the interface to a connector that is converting events received from
+ * a non-native local metadata repository into OMRS compliant repository events.  It is used when the Open Metadata
+ * and Governance Server is being used as a RepositoryProxy, or if the local metadata repository has
+ * additional APIs that mean metadata can be changed without going through the OMRS Repository Connectors.
+ */
+public interface OMRSRepositoryEventMapper
+{
+    /**
+     * Pass additional information to the connector needed to process events.
+     *
+     * @param repositoryEventMapperName - repository event mapper name used for the source of the OMRS events.
+     * @param repositoryConnector - this is the connector to the local repository that the event mapper is processing
+     *                            events from.  The repository connector is used to retrieve additional information
+     *                            necessary to fill out the OMRS Events.
+     * @param repositoryHelper - provides helper methods for building TypeDefs and metadata instances such as
+     *                         entities and relationships.
+     * @param localMetadataCollectionId - unique identifier for the local repository's metadata collection.
+     * @param localServerName - name of the local server.
+     * @param localServerType - type of local repository/server.
+     * @param localOrganizationName - name of the organization that owns the local metadata repository.
+     */
+    void initialize(String                      repositoryEventMapperName,
+                    OMRSRepositoryConnector     repositoryConnector,
+                    OMRSRepositoryHelper        repositoryHelper,
+                    String                      localMetadataCollectionId,
+                    String                      localServerName,
+                    String                      localServerType,
+                    String                      localOrganizationName);
+
+
+    /**
+     * Set up the repository event processor for this connector to use.  The connector should pass
+     * each typeDef or instance metadata change reported by its metadata repository's metadata on to the
+     * repository event processor.
+     *
+     * @param repositoryEventProcessor - listener responsible for distributing notifications of local
+     *                                changes to metadata types and instances to the rest of the
+     *                                open metadata repository cohort.
+     */
+    void setRepositoryEventProcessor(OMRSRepositoryEventProcessor repositoryEventProcessor);
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperBase.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperBase.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperBase.java
new file mode 100644
index 0000000..4d9db96
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperBase.java
@@ -0,0 +1,92 @@
+/*
+ * 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.eventmanagement.repositoryeventmapper;
+
+import org.apache.atlas.ocf.ConnectorBase;
+import org.apache.atlas.omrs.eventmanagement.OMRSRepositoryEventProcessor;
+import org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper;
+import org.apache.atlas.omrs.metadatacollection.repositoryconnector.OMRSRepositoryConnector;
+
+/**
+ * OMRSRepositoryEventMapperBase provides a base class for implementors of OMRSRepositoryEventMapper.
+ */
+public abstract class OMRSRepositoryEventMapperBase extends ConnectorBase implements OMRSRepositoryEventMapper
+{
+    protected OMRSRepositoryEventProcessor repositoryEventProcessor  = null;
+    protected String                       repositoryEventMapperName = null;
+    protected OMRSRepositoryConnector      repositoryConnector       = null;
+    protected OMRSRepositoryHelper         repositoryHelper          = null;
+    protected String                       localMetadataCollectionId = null;
+    protected String                       localServerName           = null;
+    protected String                       localServerType           = null;
+    protected String                       localOrganizationName     = null;
+
+    /**
+     * Default constructor for OCF ConnectorBase.
+     */
+    public OMRSRepositoryEventMapperBase()
+    {
+        super();
+    }
+
+
+    /**
+     * Set up the repository event listener for this connector to use.  The connector should pass
+     * each type or instance metadata change reported by its metadata repository's metadata on to the
+     * repository event listener.
+     *
+     * @param repositoryEventProcessor - listener responsible for distributing notifications of local
+     *                                changes to metadata types and instances to the rest of the
+     *                                open metadata repository cluster.
+     */
+    public void setRepositoryEventProcessor(OMRSRepositoryEventProcessor repositoryEventProcessor)
+    {
+        this.repositoryEventProcessor = repositoryEventProcessor;
+    }
+
+
+    /**
+     * Pass additional information to the connector needed to process events.
+     *
+     * @param repositoryEventMapperName - repository event mapper name used for the source of the OMRS events.
+     * @param repositoryConnector - ths is the connector to the local repository that the event mapper is processing
+     *                            events from.  The repository connector is used to retrieve additional information
+     *                            necessary to fill out the OMRS Events.
+     * @param repositoryHelper - the TypeDef helper is used to create metadata instances that are
+     * @param localMetadataCollectionId - unique identifier for the local repository's metadata collection.
+     * @param localServerName - name of the local server.
+     * @param localServerType - type of local repository/server.
+     * @param localOrganizationName - name of the organization that owns the local metadata repository.
+     */
+    public void initialize(String                      repositoryEventMapperName,
+                           OMRSRepositoryConnector     repositoryConnector,
+                           OMRSRepositoryHelper        repositoryHelper,
+                           String                      localMetadataCollectionId,
+                           String                      localServerName,
+                           String                      localServerType,
+                           String                      localOrganizationName)
+    {
+        this.repositoryEventMapperName = repositoryEventMapperName;
+        this.repositoryConnector = repositoryConnector;
+        this.repositoryHelper = repositoryHelper;
+        this.localMetadataCollectionId = localMetadataCollectionId;
+        this.localServerName = localServerName;
+        this.localServerType = localServerType;
+        this.localOrganizationName = localOrganizationName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperProviderBase.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperProviderBase.java b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperProviderBase.java
new file mode 100644
index 0000000..b4895b1
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/eventmanagement/repositoryeventmapper/OMRSRepositoryEventMapperProviderBase.java
@@ -0,0 +1,41 @@
+/*
+ * 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.eventmanagement.repositoryeventmapper;
+
+import org.apache.atlas.ocf.ConnectorProviderBase;
+
+/**
+ * OMRSRepositoryEventMapperProviderBase provides a base class for the connector provider supporting
+ * OMRSRepositoryEventMapper connectors.  It extends ConnectorProviderBase which does the creation of connector instances.
+ *
+ * The subclasses of OMRSRepositoryEventMapperProviderBase 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 abstract class OMRSRepositoryEventMapperProviderBase extends ConnectorProviderBase
+{
+    /**
+     * Default Constructor
+     */
+    public OMRSRepositoryEventMapperProviderBase()
+    {
+        /*
+         * Nothing to do
+         */
+    }
+}