http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/AccessServiceConfig.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/AccessServiceConfig.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/AccessServiceConfig.java
new file mode 100644
index 0000000..b74bfd3
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/AccessServiceConfig.java
@@ -0,0 +1,429 @@
+/*
+ * 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.omag.configuration.properties;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.apache.atlas.ocf.properties.ElementOrigin;
+import org.apache.atlas.ocf.properties.beans.Connection;
+import org.apache.atlas.ocf.properties.beans.ConnectorType;
+import org.apache.atlas.ocf.properties.beans.ElementType;
+import org.apache.atlas.ocf.properties.beans.Endpoint;
+import 
org.apache.atlas.omag.configuration.registration.AccessServiceDescription;
+import 
org.apache.atlas.omag.configuration.registration.AccessServiceOperationalStatus;
+import org.apache.atlas.omrs.topicconnectors.kafka.KafkaOMRSTopicProvider;
+
+import java.io.Serializable;
+import java.util.Map;
+
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
+/**
+ * AccessServiceConfig provides the configuration for a single Open Metadata 
Access Service (OMAS)
+ */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class AccessServiceConfig implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    private static final String      defaultInTopicName = "InTopic";
+    private static final String      defaultOutTopicName = "OutTopic";
+
+    private int                            accessServiceId                = 0;
+    private String                         accessServiceAdminClass        = 
null;
+    private String                         accessServiceName              = 
null;
+    private String                         accessServiceDescription       = 
null;
+    private String                         accessServiceWiki              = 
null;
+    private AccessServiceOperationalStatus accessServiceOperationalStatus = 
null;
+    private Connection                     accessServiceInTopic           = 
null;
+    private Connection                     accessServiceOutTopic          = 
null;
+    private Map<String, String>            accessServiceOptions           = 
null;
+
+
+    /**
+     * Default constructor for use with Jackson libraries
+     */
+    public AccessServiceConfig()
+    {
+    }
+
+
+    /**
+     * Set up the default values for an access service using an access service 
description.
+     *
+     * @param accessServiceDescription - AccessServiceDescription enum
+     */
+    public AccessServiceConfig(AccessServiceDescription    
accessServiceDescription)
+    {
+        this.accessServiceId = accessServiceDescription.getAccessServiceCode();
+        this.accessServiceAdminClass = 
accessServiceDescription.getAccessServiceAdminClassName();
+        this.accessServiceName = 
accessServiceDescription.getAccessServiceDescription();
+        this.accessServiceWiki = 
accessServiceDescription.getAccessServiceWiki();
+        this.accessServiceOperationalStatus = 
accessServiceDescription.getAccessServiceOperationalStatus();
+        this.accessServiceInTopic = 
this.getDefaultTopicConnection(defaultInTopicName,
+                                                                   
accessServiceDescription.getAccessServiceInTopic());
+        this.accessServiceOutTopic = 
this.getDefaultTopicConnection(defaultOutTopicName,
+                                                                    
accessServiceDescription.getAccessServiceOutTopic());
+    }
+
+
+    /**
+     * Return the code number (ordinal) for this access service.
+     *
+     * @return int ordinal
+     */
+    public int getAccessServiceId()
+    {
+        return accessServiceId;
+    }
+
+
+    /**
+     * Set up the code number (ordinal) for this access service.
+     *
+     * @param accessServiceId int ordinal
+     */
+    public void setAccessServiceId(int accessServiceId)
+    {
+        this.accessServiceId = accessServiceId;
+    }
+
+
+    /**
+     * Return the Java class name of the admin interface for this access 
service.
+     *
+     * @return String class name implementing the 
org.apache.atlas.omag.configuration.registration.AccessServiceAdmin
+     * interface.
+     */
+    public String getAccessServiceAdminClass()
+    {
+        return accessServiceAdminClass;
+    }
+
+
+    /**
+     * Set up the Java class name of the admin interface for this access 
service.
+     *
+     * @param accessServiceAdminClass - String class name implementing the
+     *                                
org.apache.atlas.omag.configuration.registration.AccessServiceAdmin interface.
+     */
+    public void setAccessServiceAdminClass(String accessServiceAdminClass)
+    {
+        this.accessServiceAdminClass = accessServiceAdminClass;
+    }
+
+
+    /**
+     * Return the name of the access service.
+     *
+     * @return String name
+     */
+    public String getAccessServiceName()
+    {
+        return accessServiceName;
+    }
+
+
+    /**
+     * Set up the name of the access service.
+     *
+     * @param accessServiceName - String name
+     */
+    public void setAccessServiceName(String accessServiceName)
+    {
+        this.accessServiceName = accessServiceName;
+    }
+
+
+    /**
+     * Return the short description of the access service.  The default value 
is in English but this can be changed.
+     *
+     * @return String description
+     */
+    public String getAccessServiceDescription()
+    {
+        return accessServiceDescription;
+    }
+
+
+    /**
+     * Set up the short description of the access service.
+     *
+     * @param accessServiceDescription - String description
+     */
+    public void setAccessServiceDescription(String accessServiceDescription)
+    {
+        this.accessServiceDescription = accessServiceDescription;
+    }
+
+
+    /**
+     * Return the wiki page link for the access service.  The default value 
points to a page on the Atlas
+     * confluence wiki.
+     *
+     * @return String url
+     */
+    public String getAccessServiceWiki()
+    {
+        return accessServiceWiki;
+    }
+
+
+    /**
+     * Set up the wiki page link for the access service.
+     *
+     * @param accessServiceWiki - String url
+     */
+    public void setAccessServiceWiki(String accessServiceWiki)
+    {
+        this.accessServiceWiki = accessServiceWiki;
+    }
+
+
+    /**
+     * Return the status of this access service.
+     *
+     * @return AccessServiceOperationalStatus enum
+     */
+    public AccessServiceOperationalStatus getAccessServiceOperationalStatus()
+    {
+        return accessServiceOperationalStatus;
+    }
+
+
+    /**
+     * Set up the status of the access service.
+     *
+     * @param accessServiceOperationalStatus - AccessServiceOperationalStatus 
enum
+     */
+    public void 
setAccessServiceOperationalStatus(AccessServiceOperationalStatus 
accessServiceOperationalStatus)
+    {
+        this.accessServiceOperationalStatus = accessServiceOperationalStatus;
+    }
+
+
+    /**
+     * Return the OCF Connection for the topic used to pass requests to this 
access service.
+     * The default values are constructed from the access service name.
+     *
+     * @return Connection for InTopic
+     */
+    public Connection getAccessServiceInTopic()
+    {
+        return accessServiceInTopic;
+    }
+
+
+    /**
+     * Set up the OCF Connection for the topic used to pass requests to this 
access service.
+     *
+     * @param accessServiceInTopic - Connection properties
+     */
+    public void setAccessServiceInTopic(Connection accessServiceInTopic)
+    {
+        this.accessServiceInTopic = accessServiceInTopic;
+    }
+
+
+    /**
+     * Return the OCF Connection for the topic used by this access service to 
publish events.
+     * The default values are constructed from the access service name.
+     *
+     * @return Connection for OutTopic
+     */
+    public Connection getAccessServiceOutTopic()
+    {
+        return accessServiceOutTopic;
+    }
+
+
+    /**
+     * Set up the OCF Connection of the topic used by this access service to 
publish events.
+     *
+     * @param accessServiceOutTopic - Connection properties
+     */
+    public void setAccessServiceOutTopic(Connection accessServiceOutTopic)
+    {
+        this.accessServiceOutTopic = accessServiceOutTopic;
+    }
+
+
+    /**
+     * Return the options for this access service. These are properties that 
are specific to the access service.
+     *
+     * @return Map from String to String
+     */
+    public Map<String, String> getAccessServiceOptions()
+    {
+        return accessServiceOptions;
+    }
+
+
+    /**
+     * Set up the options for this access service.  These are properties that 
are specific to the access service.
+     *
+     * @param accessServiceOptions - Map from String to String
+     */
+    public void setAccessServiceOptions(Map<String, String> 
accessServiceOptions)
+    {
+        this.accessServiceOptions = accessServiceOptions;
+    }
+
+
+    /**
+     * Return default values for the topic connection.
+     *
+     * @param connectionName - name to use in the connection object
+     * @param topicName - name of the topic
+     * @return Connection object
+     */
+    private Connection getDefaultTopicConnection(String    connectionName,
+                                                 String    topicName)
+    {
+        String  description = connectionName + " for " + accessServiceName;
+
+        final String endpointGUID = "f6e296ae-d001-44b2-80c9-b8240a246d61";
+        final String connectorTypeGUID = 
"1db88a02-475f-43f9-b226-3b807f0caba5";
+        final String connectionGUID = "bb32263c-a9ce-4262-98b0-b629a9d08614";
+
+        final String endpointDescription = "OMRS default cohort registry 
endpoint.";
+
+        Endpoint endpoint = new Endpoint();
+
+        endpoint.setType(this.getEndpointType());
+        endpoint.setGUID(endpointGUID);
+        endpoint.setQualifiedName(topicName);
+        endpoint.setDisplayName(topicName);
+        endpoint.setDescription(description);
+        endpoint.setAddress(topicName);
+
+        final String connectorTypeJavaClassName = 
KafkaOMRSTopicProvider.class.getName();
+
+        ConnectorType connectorType = new ConnectorType();
+
+        connectorType.setType(this.getConnectorTypeType());
+        connectorType.setGUID(connectorTypeGUID);
+        connectorType.setQualifiedName(topicName);
+        connectorType.setDisplayName(topicName);
+        connectorType.setDescription(description);
+        
connectorType.setConnectorProviderClassName(connectorTypeJavaClassName);
+
+        Connection connection = new Connection();
+
+        connection.setType(this.getConnectionType());
+        connection.setGUID(connectionGUID);
+        connection.setQualifiedName(connectionName);
+        connection.setDisplayName(connectionName);
+        connection.setDescription(description);
+        connection.setEndpoint(endpoint);
+        connection.setConnectorType(connectorType);
+
+        return connection;
+    }
+
+
+    /**
+     * Return the standard type for an endpoint.
+     *
+     * @return ElementType object
+     */
+    public ElementType getEndpointType()
+    {
+        final String        elementTypeId                   = 
"dbc20663-d705-4ff0-8424-80c262c6b8e7";
+        final String        elementTypeName                 = "Endpoint";
+        final long          elementTypeVersion              = 1;
+        final String        elementTypeDescription          = "Description of 
the network address and related information needed to call a software service.";
+        final String        elementAccessServiceURL         = null;
+        final ElementOrigin elementOrigin                   = 
ElementOrigin.LOCAL_COHORT;
+        final String        elementHomeMetadataCollectionId = null;
+
+        ElementType elementType = new ElementType();
+
+        elementType.setElementTypeId(elementTypeId);
+        elementType.setElementTypeName(elementTypeName);
+        elementType.setElementTypeVersion(elementTypeVersion);
+        elementType.setElementTypeDescription(elementTypeDescription);
+        elementType.setElementAccessServiceURL(elementAccessServiceURL);
+        elementType.setElementOrigin(elementOrigin);
+        
elementType.setElementHomeMetadataCollectionId(elementHomeMetadataCollectionId);
+
+        return elementType;
+    }
+
+
+    /**
+     * Return the standard type for a connector type.
+     *
+     * @return ElementType object
+     */
+    public ElementType getConnectorTypeType()
+    {
+        final String        elementTypeId                   = 
"954421eb-33a6-462d-a8ca-b5709a1bd0d4";
+        final String        elementTypeName                 = "ConnectorType";
+        final long          elementTypeVersion              = 1;
+        final String        elementTypeDescription          = "A set of 
properties describing a type of connector.";
+        final String        elementAccessServiceURL         = null;
+        final ElementOrigin elementOrigin                   = 
ElementOrigin.LOCAL_COHORT;
+        final String        elementHomeMetadataCollectionId = null;
+
+        ElementType elementType = new ElementType();
+
+        elementType.setElementTypeId(elementTypeId);
+        elementType.setElementTypeName(elementTypeName);
+        elementType.setElementTypeVersion(elementTypeVersion);
+        elementType.setElementTypeDescription(elementTypeDescription);
+        elementType.setElementAccessServiceURL(elementAccessServiceURL);
+        elementType.setElementOrigin(elementOrigin);
+        
elementType.setElementHomeMetadataCollectionId(elementHomeMetadataCollectionId);
+
+        return elementType;
+    }
+
+
+    /**
+     * Return the standard type for a connection type.
+     *
+     * @return ElementType object
+     */
+    public ElementType getConnectionType()
+    {
+        final String        elementTypeId                   = 
"114e9f8f-5ff3-4c32-bd37-a7eb42712253";
+        final String        elementTypeName                 = "Connection";
+        final long          elementTypeVersion              = 1;
+        final String        elementTypeDescription          = "A set of 
properties to identify and configure a connector instance.";
+        final String        elementAccessServiceURL         = null;
+        final ElementOrigin elementOrigin                   = 
ElementOrigin.LOCAL_COHORT;
+        final String        elementHomeMetadataCollectionId = null;
+
+        ElementType elementType = new ElementType();
+
+        elementType.setElementTypeId(elementTypeId);
+        elementType.setElementTypeName(elementTypeName);
+        elementType.setElementTypeVersion(elementTypeVersion);
+        elementType.setElementTypeDescription(elementTypeDescription);
+        elementType.setElementAccessServiceURL(elementAccessServiceURL);
+        elementType.setElementOrigin(elementOrigin);
+        
elementType.setElementHomeMetadataCollectionId(elementHomeMetadataCollectionId);
+
+        return elementType;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/OMAGServerConfig.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/OMAGServerConfig.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/OMAGServerConfig.java
new file mode 100644
index 0000000..86b4672
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/properties/OMAGServerConfig.java
@@ -0,0 +1,256 @@
+/*
+ * 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.omag.configuration.properties;
+
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import org.apache.atlas.omrs.admin.properties.RepositoryServicesConfig;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
+/**
+ * OMAGServerConfig provides the properties used to initialize an open 
metadata and governance (OMAG) server.
+ *
+ * The OMAG server configuration has the following properties:
+ * <ul>
+ *     <li>
+ *         localServerName - meaningful name for the server for use in 
messages and UIs.
+ *         Ideally this value is unique to aid administrators in understanding 
the behavior of the local
+ *         server/repository in the open metadata cluster.
+ *
+ *         The default value is "Default Server".
+ *     </li>
+ *     <li>
+ *         localServerType - descriptive type name for the local server.  
Again this is useful information for the
+ *         administrator to understand which vendor implementation, or 
versionName of the vendor implementation, is
+ *         in operation.
+ *
+ *         The default value is "Open Metadata and Governance Server".
+ *     </li>
+ *     <li>
+ *         organizationName - descriptive name for the organization that owns 
the local server/repository.
+ *         This is useful when the open metadata repository cluster consists 
of metadata servers from different
+ *         organizations, or different departments of an enterprise.
+ *
+ *         The default value is null.
+ *     </li>
+ *     <li>
+ *         localServerURL - network address of the server (typically URL and 
port number).
+ *     </li>
+ * </ul>
+ */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class OMAGServerConfig implements Serializable
+{
+    /*
+     * Default values used when the server configuration does not provide a 
value.
+     */
+    private static final String  defaultLocalServerType                   = 
"Open Metadata and Governance Server";
+    private static final String  defaultLocalOrganizationName             = 
null;
+    private static final String  defaultLocalServerURL                    = 
"http://localhost:8080";;
+    private static final int     defaultMaxPageSize                       = 
1000;
+
+
+    /*
+     * Values in use by this server.
+     */
+    private String                    localServerName          = null;
+    private String                    localServerType          = 
defaultLocalServerType;
+    private String                    organizationName         = 
defaultLocalOrganizationName;
+    private String                    localServerURL           = 
defaultLocalServerURL;
+    private int                       maxPageSize              = 
defaultMaxPageSize;
+    private List<AccessServiceConfig> accessServicesConfig     = new 
ArrayList<>();
+    private RepositoryServicesConfig  repositoryServicesConfig = null;
+
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * Default constructor used to set all properties to their default value.  
This means the server can connect to the
+     * cluster (assuming the default topic name is used by the cluster) and 
replicate metadata, but it will not be
+     * remotely callable through an OMRS connector.
+     */
+    public OMAGServerConfig()
+    {
+
+    }
+
+
+    /**
+     * Return the name of the local server.
+     *
+     * @return String server name
+     */
+    public String getLocalServerName()
+    {
+        return localServerName;
+    }
+
+
+    /**
+     * Set up the name of the local server.
+     *
+     * @param localServerName - String local server name
+     */
+    public void setLocalServerName(String localServerName)
+    {
+        this.localServerName = localServerName;
+    }
+
+
+    /**
+     * Return the descriptive name for the server type.
+     *
+     * @return String server type
+     */
+    public String getLocalServerType()
+    {
+        return localServerType;
+    }
+
+
+    /**
+     * Set up the descriptive name for the server type.
+     *
+     * @param localServerType - String server type
+     */
+    public void setLocalServerType(String localServerType)
+    {
+        this.localServerType = localServerType;
+    }
+
+
+    /**
+     * Return the name of the organization that is running the server.
+     *
+     * @return String organization name
+     */
+    public String getOrganizationName()
+    {
+        return organizationName;
+    }
+
+
+    /**
+     * Set up the name of the organization that is running the server.
+     *
+     * @param organizationName - String organization name
+     */
+    public void setOrganizationName(String organizationName)
+    {
+        this.organizationName = organizationName;
+    }
+
+
+    /**
+     * Return the base URL for calling the local server.
+     *
+     * @return String URL
+     */
+    public String getLocalServerURL()
+    {
+        return localServerURL;
+    }
+
+
+    /**
+     * Set up the base URL for calling the local server.
+     *
+     * @param localServerURL - String URL
+     */
+    public void setLocalServerURL(String localServerURL)
+    {
+        this.localServerURL = localServerURL;
+    }
+
+
+    /**
+     * Return the maximum page size supported by this server.
+     *
+     * @return int number of elements
+     */
+    public int getMaxPageSize()
+    {
+        return maxPageSize;
+    }
+
+
+    /**
+     * Set up the  maximum page size supported by this server.
+     *
+     * @param maxPageSize - int number of elements
+     */
+    public void setMaxPageSize(int maxPageSize)
+    {
+        this.maxPageSize = maxPageSize;
+    }
+
+
+    /**
+     * Return the configuration for the registered Open Metadata Access 
Services (OMAS).
+     *
+     * @return array of configuration properties - one for each OMAS
+     */
+    public List<AccessServiceConfig> getAccessServicesConfig()
+    {
+        return accessServicesConfig;
+    }
+
+
+    /**
+     * Set up the configuration for the registered Open Metadata Access 
Services (OMAS).
+     *
+     * @param accessServicesConfig - array of configuration properties - one 
for each OMAS
+     */
+    public void setAccessServicesConfig(List<AccessServiceConfig> 
accessServicesConfig)
+    {
+        this.accessServicesConfig = accessServicesConfig;
+    }
+
+
+    /**
+     * Return the Open Metadata Repository Services (OMRS) config.
+     *
+     * @return configuration properties that control OMRS
+     */
+    public RepositoryServicesConfig getRepositoryServicesConfig()
+    {
+        return repositoryServicesConfig;
+    }
+
+
+    /**
+     * Set up the Open Metadata Repository Services (OMRS) config.
+     *
+     * @param repositoryServicesConfig - configuration properties that control 
OMRS
+     */
+    public void setRepositoryServicesConfig(RepositoryServicesConfig 
repositoryServicesConfig)
+    {
+        this.repositoryServicesConfig = repositoryServicesConfig;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceAdmin.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceAdmin.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceAdmin.java
new file mode 100644
index 0000000..360d38f
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceAdmin.java
@@ -0,0 +1,56 @@
+/*
+ * 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.omag.configuration.registration;
+
+import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.omag.configuration.properties.AccessServiceConfig;
+import org.apache.atlas.omag.ffdc.exception.OMAGConfigurationErrorException;
+
+/**
+ * AccessServiceAdmin is the interface that an access service implements to 
receive its configuration.
+ * The java class that implements this interface is created with a default 
constructor and then
+ * the initialize method is called.  It is configured in the 
AccessServiceDescription enumeration.
+ */
+public interface AccessServiceAdmin
+{
+    /**
+     * Initialize the access service.
+     *
+     * @param configurationProperties - specific configuration properties for 
this access service.
+     * @throws OMAGConfigurationErrorException - invalid parameters in the 
configuration properties.
+
+     */
+    void initialize(AccessServiceConfig configurationProperties,
+                    Connection          enterpriseOMRSTopicConnector) throws 
OMAGConfigurationErrorException;
+
+
+    /**
+     * Refresh the configuration in the access service.
+     *
+     * @param configurationProperties - specific configuration properties for 
this access service.
+     * @throws OMAGConfigurationErrorException - invalid parameters in the 
configuration properties.
+     */
+    void refreshConfiguration(AccessServiceConfig configurationProperties,
+                              Connection          
enterpriseOMRSTopicConnector) throws OMAGConfigurationErrorException;
+
+
+    /**
+     * Shutdown the access service.
+     */
+    void shutdown();
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceDescription.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceDescription.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceDescription.java
new file mode 100644
index 0000000..59c3ca9
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceDescription.java
@@ -0,0 +1,277 @@
+/*
+ * 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.omag.configuration.registration;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * AccessServiceDescription provides a list of registered OMAS services.
+ */
+public enum AccessServiceDescription implements Serializable
+{
+    ASSET_CATALOG_OMAS               (0,   "AssetCatalog", "Search and 
understand your assets",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Asset+Catalog+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    ASSET_CONSUMER_OMAS              (1,   "AssetConsumer", "Access assets 
through connectors",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Asset+Consumer+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    ASSET_OWNER_OMAS                 (2,   "AssetOwner", "Manage an asset",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Asset+Owner+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    COMMUNITY_PROFILE_OMAS           (3,   "CommunityProfile", "Define 
personal profile and collaborate",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Community+Profile+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    CONNECTED_ASSET_OMAS             (4,   "ConnectedAsset", "Understand an 
asset",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Connected+Asset+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    DATA_PLATFORM_OMAS               (5,   "DataPlatform", "Capture changes in 
the types of data stored in a data platform",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Data+Platform+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    DATA_SCIENCE_OMAS                (6,   "DataScience", "Create and manage 
data science definitions and models",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Data+Science+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    DEVOPS_OMAS                      (7,   "DevOps", "Manage a DevOps 
pipeline",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/DevOps+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    GOVERNANCE_ENGINE_OMAS           (8,   "GovernanceEngine", "Set up an 
operational governance engine",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Governance+Engine+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    GOVERNANCE_PROGRAM_OMAS          (9,   "GovernanceProgram", "Manage the 
governance program",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Governance+Program+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    INFORMATION_INFRASTRUCTURE_OMAS  (10,  "InformationInfrastructure", 
"Describe and plan IT infrastructure",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Information+Infrastructure+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    INFORMATION_LANDSCAPE_OMAS       (11,  "InformationLandscape", "Design the 
information landscape",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Information+Landscape+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    INFORMATION_PROCESS_OMAS         (12,  "InformationProcess", "Manage 
process definitions and lineage tracking",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Information+Process+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    INFORMATION_PROTECTION_OMAS      (13,  "InformationProtection", "Manage 
information protection definitions and compliance",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Information+Protection+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    INFORMATION_VIEW_OMAS            (14,  "InformationView", "Support 
information virtualization and data set definitions",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Information+View+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    METADATA_DISCOVERY_OMAS          (15,  "MetadataDiscovery", "Support 
automated metadata discovery",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Metadata+Discovery+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    PRIVACY_OFFICE_OMAS             (16,   "PrivacyOffice", "Manage privacy 
compliance",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Privacy+Office+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    PROJECT_MANAGEMENT_OMAS          (17,  "ProjectManagement", "Manage data 
projects",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Project+Management+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    SOFTWARE_DEVELOPMENT_OMAS        (18,  "SoftwareDevelopment", "Develop 
software with best practices",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Software+Development+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    STEWARDSHIP_ACTION_OMAS          (19,  "StewardshipAction", "Manage 
exceptions and actions from open governance",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Stewardship+Action+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null),
+    SUBJECT_AREA_OMAS                (20,  "SubjectArea", "Document knowledge 
about a subject area",
+                                           
"https://cwiki.apache.org/confluence/display/ATLAS/Subject+Area+OMAS";,
+                                           
AccessServiceOperationalStatus.NOT_IMPLEMENTED,
+                                           null)
+    ;
+
+    private static final long     serialVersionUID    = 1L;
+    private static final String   defaultTopicRoot    = "omag/omas/";
+    private static final String   defaultInTopicLeaf  = "/inTopic";
+    private static final String   defaultOutTopicLeaf = "/outTopic";
+
+    private int                            accessServiceCode;
+    private String                         accessServiceName;
+    private String                         accessServiceDescription;
+    private String                         accessServiceWiki;
+    private AccessServiceOperationalStatus accessServiceOperationalStatus;
+    private String                         accessServiceAdminClassName;
+
+
+    /**
+     * Return a list containing each of the access service descriptions 
defined in this enum class.
+     *
+     * @return ArrayList of enums
+     */
+    public static ArrayList<AccessServiceDescription> 
getAccessServiceDescriptionList()
+    {
+        ArrayList<AccessServiceDescription>  accessServiceDescriptionList = 
new ArrayList<>();
+
+        
accessServiceDescriptionList.add(AccessServiceDescription.ASSET_CATALOG_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.ASSET_CONSUMER_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.ASSET_OWNER_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.COMMUNITY_PROFILE_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.CONNECTED_ASSET_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.DATA_PLATFORM_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.DATA_SCIENCE_OMAS);
+        accessServiceDescriptionList.add(AccessServiceDescription.DEVOPS_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.GOVERNANCE_ENGINE_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.GOVERNANCE_PROGRAM_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.INFORMATION_INFRASTRUCTURE_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.INFORMATION_LANDSCAPE_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.INFORMATION_PROCESS_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.INFORMATION_PROTECTION_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.INFORMATION_VIEW_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.METADATA_DISCOVERY_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.PRIVACY_OFFICE_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.PROJECT_MANAGEMENT_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.SOFTWARE_DEVELOPMENT_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.STEWARDSHIP_ACTION_OMAS);
+        
accessServiceDescriptionList.add(AccessServiceDescription.SUBJECT_AREA_OMAS);
+
+        return accessServiceDescriptionList;
+    }
+
+
+    /**
+     * Default Constructor
+     *
+     * @param accessServiceCode - ordinal for this access service
+     * @param accessServiceName - symbolic name for this access service
+     * @param accessServiceDescription - short description for this access 
service
+     * @param accessServiceWiki - wiki page for the access service for this 
access service
+     * @param accessServiceOperationalStatus - default initial operational 
status for the access service
+     */
+    AccessServiceDescription(int                            accessServiceCode,
+                             String                         accessServiceName,
+                             String                         
accessServiceDescription,
+                             String                         accessServiceWiki,
+                             AccessServiceOperationalStatus 
accessServiceOperationalStatus,
+                             String                         
accessServiceAdminClassName)
+    {
+        /*
+         * Save the values supplied
+         */
+        this.accessServiceCode = accessServiceCode;
+        this.accessServiceName = accessServiceName;
+        this.accessServiceDescription = accessServiceDescription;
+        this.accessServiceWiki = accessServiceWiki;
+        this.accessServiceOperationalStatus = accessServiceOperationalStatus;
+        this.accessServiceAdminClassName = accessServiceAdminClassName;
+    }
+
+
+    /**
+     * Return the code for this enum instance
+     *
+     * @return int - type code
+     */
+    public int getAccessServiceCode()
+    {
+        return accessServiceCode;
+    }
+
+
+    /**
+     * Return the default name for this enum instance.
+     *
+     * @return String - default name
+     */
+    public String getAccessServiceName()
+    {
+        return accessServiceName;
+    }
+
+
+    /**
+     * Return the default description for the type for this enum instance.
+     *
+     * @return String - default description
+     */
+    public String getAccessServiceDescription()
+    {
+        return accessServiceDescription;
+    }
+
+
+    /**
+     * Return the URL for the wiki page describing this access service.
+     *
+     * @return String URL name for the wiki page
+     */
+    public String getAccessServiceWiki()
+    {
+        return accessServiceWiki;
+    }
+
+
+    /**
+     * Return the default initial operational status for the service.
+     *
+     * @return AccessServiceOperationalStatus enum
+     */
+    public AccessServiceOperationalStatus getAccessServiceOperationalStatus()
+    {
+        return accessServiceOperationalStatus;
+    }
+
+
+    /**
+     * Return the InTopic name for the access service.
+     *
+     * @return String topic name
+     */
+    public String getAccessServiceInTopic()
+    {
+        return defaultTopicRoot + accessServiceName + defaultInTopicLeaf;
+    }
+
+
+    /**
+     * Return the OutTopic name for the access service.
+     *
+     * @return String topic name
+     */
+    public String getAccessServiceOutTopic()
+    {
+        return defaultTopicRoot + accessServiceName + defaultOutTopicLeaf;
+    }
+
+
+    /**
+     * Return the name of the java class that implements the admin class for 
the access service.
+     *
+     * @return Name of Java class implementing the AccessServiceAdmin 
interface.
+     */
+    public String getAccessServiceAdminClassName()
+    {
+        return accessServiceAdminClassName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceOperationalStatus.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceOperationalStatus.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceOperationalStatus.java
new file mode 100644
index 0000000..bf9e6b5
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/registration/AccessServiceOperationalStatus.java
@@ -0,0 +1,88 @@
+/*
+ * 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.omag.configuration.registration;
+
+
+import java.io.Serializable;
+
+/**
+ * AccessServiceOperationalStatus sets up whether an open metadata access 
service (OMAS) is enabled or not.
+ */
+public enum AccessServiceOperationalStatus implements Serializable
+{
+    NOT_IMPLEMENTED  (0, "Not Implemented", "Code for this access server is 
not available."),
+    ENABLED          (1, "Enabled",         "The access service is available 
and running."),
+    DISABLED         (2, "Disabled",        "The access service has been 
disabled.");
+
+    private static final long serialVersionUID = 1L;
+
+    private int            typeCode;
+    private String         typeName;
+    private String         typeDescription;
+
+
+    /**
+     * Default Constructor
+     *
+     * @param typeCode - ordinal for this enum
+     * @param typeName - symbolic name for this enum
+     * @param typeDescription - short description for this enum
+     */
+    AccessServiceOperationalStatus(int     typeCode, String   typeName, String 
  typeDescription)
+    {
+        /*
+         * Save the values supplied
+         */
+        this.typeCode = typeCode;
+        this.typeName = typeName;
+        this.typeDescription = typeDescription;
+    }
+
+
+    /**
+     * Return the code for this enum instance
+     *
+     * @return int - type code
+     */
+    public int getTypeCode()
+    {
+        return typeCode;
+    }
+
+
+    /**
+     * Return the default name for this enum instance.
+     *
+     * @return String - default name
+     */
+    public String getTypeName()
+    {
+        return typeName;
+    }
+
+
+    /**
+     * Return the default description for the type for this enum instance.
+     *
+     * @return String - default description
+     */
+    public String getTypeDescription()
+    {
+        return typeDescription;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStore.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStore.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStore.java
new file mode 100644
index 0000000..cb179cd
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStore.java
@@ -0,0 +1,48 @@
+/*
+ * 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.omag.configuration.store;
+
+import org.apache.atlas.omag.configuration.properties.OMAGServerConfig;
+
+/**
+ * OMAGServerConfigStore provides the interface to the configuration for an 
OMAG Server.  This is accessed
+ * through a connector.
+ */
+public interface OMAGServerConfigStore
+{
+    /**
+     * Save the server configuration.
+     *
+     * @param configuration - configuration properties to save
+     */
+    void saveServerConfig(OMAGServerConfig   configuration);
+
+
+    /**
+     * Retrieve the configuration saved from a previous run of the server.
+     *
+     * @return server configuration
+     */
+    OMAGServerConfig  retrieveServerConfig();
+
+
+    /**
+     * Remove the server configuration.
+     */
+    void removeServerConfig();
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreConnectorBase.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreConnectorBase.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreConnectorBase.java
new file mode 100644
index 0000000..2de0776
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreConnectorBase.java
@@ -0,0 +1,28 @@
+/*
+ * 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.omag.configuration.store;
+
+import org.apache.atlas.ocf.ConnectorBase;
+
+/**
+ * OMAGServerConfigStoreConnectorBase provides the base class for an OMAG 
Server's configuration store.  It defines the
+ * specific interface for this type of connector.
+ */
+public abstract class OMAGServerConfigStoreConnectorBase extends ConnectorBase 
implements OMAGServerConfigStore
+{
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreProviderBase.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreProviderBase.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreProviderBase.java
new file mode 100644
index 0000000..f7899e3
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/OMAGServerConfigStoreProviderBase.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.omag.configuration.store;
+
+
+import org.apache.atlas.ocf.ConnectorProviderBase;
+
+/**
+ * The OMAGServerConfigStoreProviderBase provides a base class for the 
connector provider supporting the OMAG
+ * server configuration stores.  It extends ConnectorProviderBase which does 
the creation of connector instances.
+ * The subclasses of OMAGServerConfigStoreProviderBase must initialize 
ConnectorProviderBase with the Java class
+ * name of the registry store connector implementation (by calling 
super.setConnectorClassName(className)).
+ * Then the connector provider will work.
+ */
+public class OMAGServerConfigStoreProviderBase extends ConnectorProviderBase
+{
+    /**
+     * Default Constructor
+     */
+    public OMAGServerConfigStoreProviderBase()
+    {
+        /*
+         * Nothing to do
+         */
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreConnector.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreConnector.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreConnector.java
new file mode 100644
index 0000000..56550b2
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreConnector.java
@@ -0,0 +1,178 @@
+/*
+ * 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.omag.configuration.store.file;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.ocf.properties.Endpoint;
+import org.apache.atlas.omag.configuration.properties.OMAGServerConfig;
+import 
org.apache.atlas.omag.configuration.store.OMAGServerConfigStoreConnectorBase;
+import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+
+public class FileBasedServerConfigStoreConnector extends 
OMAGServerConfigStoreConnectorBase
+{
+    /*
+     * This is the name of the configuration file that is used if there is no 
file name in the connection.
+     */
+    private static final String defaultFilename = "omag.server.config";
+
+    /*
+     * Variables used in writing to the file.
+     */
+    private String           configStoreName  = null;
+
+    /*
+     * Variables used for logging and debug.
+     */
+    private static final Logger log = 
LoggerFactory.getLogger(FileBasedServerConfigStoreConnector.class);
+
+
+    /**
+     * Default constructor
+     */
+    public FileBasedServerConfigStoreConnector()
+    {
+    }
+
+
+    @Override
+    public void initialize(String connectorInstanceId, Connection connection)
+    {
+        super.initialize(connectorInstanceId, connection);
+
+        Endpoint endpoint = connection.getEndpoint();
+
+        if (endpoint != null)
+        {
+            configStoreName = endpoint.getAddress();
+        }
+
+        if (configStoreName == null)
+        {
+            configStoreName = defaultFilename;
+        }
+    }
+
+
+    /**
+     * Save the server configuration.
+     *
+     * @param omagServerConfig - configuration properties to save
+     */
+    public void saveServerConfig(OMAGServerConfig omagServerConfig)
+    {
+        File    configStoreFile = new File(configStoreName);
+
+        try
+        {
+            if (log.isDebugEnabled())
+            {
+                log.debug("Writing server config store properties", 
omagServerConfig);
+            }
+
+            if (omagServerConfig == null)
+            {
+                configStoreFile.delete();
+            }
+            else
+            {
+                ObjectMapper objectMapper = new ObjectMapper();
+
+                String configStoreFileContents = 
objectMapper.writeValueAsString(omagServerConfig);
+
+                FileUtils.writeStringToFile(configStoreFile, 
configStoreFileContents, false);
+            }
+        }
+        catch (IOException   ioException)
+        {
+            if (log.isDebugEnabled())
+            {
+                log.debug("Unusable Server config Store :(", ioException);
+            }
+        }
+    }
+
+
+    /**
+     * Retrieve the configuration saved from a previous run of the server.
+     *
+     * @return server configuration
+     */
+    public OMAGServerConfig  retrieveServerConfig()
+    {
+        File             configStoreFile     = new File(configStoreName);
+        OMAGServerConfig newConfigProperties;
+
+        try
+        {
+            if (log.isDebugEnabled())
+            {
+                log.debug("Retrieving server configuration properties");
+            }
+
+            String configStoreFileContents = 
FileUtils.readFileToString(configStoreFile, "UTF-8");
+
+            ObjectMapper objectMapper = new ObjectMapper();
+
+            newConfigProperties = 
objectMapper.readValue(configStoreFileContents, OMAGServerConfig.class);
+        }
+        catch (IOException ioException)
+        {
+            /*
+             * The config file is not found, create a new one ...
+             */
+
+            if (log.isDebugEnabled())
+            {
+                log.debug("New server config Store", ioException);
+            }
+
+            newConfigProperties = new OMAGServerConfig();
+        }
+
+        return newConfigProperties;
+    }
+
+
+    /**
+     * Remove the server configuration.
+     */
+    public void removeServerConfig()
+    {
+        File    configStoreFile = new File(configStoreName);
+
+        configStoreFile.delete();
+    }
+
+
+    /**
+     * Close the config file
+     */
+    public void disconnect()
+    {
+        if (log.isDebugEnabled())
+        {
+            log.debug("Closing Config Store.");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreProvider.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreProvider.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreProvider.java
new file mode 100644
index 0000000..26f5d3d
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/configuration/store/file/FileBasedServerConfigStoreProvider.java
@@ -0,0 +1,37 @@
+/*
+ * 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.omag.configuration.store.file;
+
+import 
org.apache.atlas.omag.configuration.store.OMAGServerConfigStoreProviderBase;
+
+/**
+ * FileBasedServerConfigStoreProvider is the OCF connector provider for the 
file based server configuration store.
+ */
+public class FileBasedServerConfigStoreProvider extends 
OMAGServerConfigStoreProviderBase
+{
+    /**
+     * Constructor used to initialize the ConnectorProviderBase with the Java 
class name of the specific
+     * configuration store implementation.
+     */
+    public FileBasedServerConfigStoreProvider()
+    {
+        Class    connectorClass = FileBasedServerConfigStoreConnector.class;
+
+        super.setConnectorClassName(connectorClass.getName());
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/ffdc/OMAGErrorCode.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/ffdc/OMAGErrorCode.java 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/OMAGErrorCode.java
new file mode 100644
index 0000000..114dc40
--- /dev/null
+++ b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/OMAGErrorCode.java
@@ -0,0 +1,229 @@
+/*
+ * 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.omag.ffdc;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+
+/**
+ * The OMAGErrorCode is used to define first failure data capture (FFDC) for 
errors that occur within the OMAG Server
+ * It is used in conjunction with OMAG Exceptions, both Checked and Runtime 
(unchecked).
+ *
+ * The 5 fields in the enum are:
+ * <ul>
+ *     <li>HTTP Error Code - for translating between REST and JAVA - Typically 
the numbers used are:</li>
+ *     <li><ul>
+ *         <li>500 - internal error</li>
+ *         <li>501 - not implemented </li>
+ *         <li>503 - Service not available</li>
+ *         <li>400 - invalid parameters</li>
+ *         <li>401 - unauthorized</li>
+ *         <li>404 - not found</li>
+ *         <li>405 - method not allowed</li>
+ *         <li>409 - data conflict errors - eg item already defined</li>
+ *     </ul></li>
+ *     <li>Error Message Id - to uniquely identify the message</li>
+ *     <li>Error Message Text - includes placeholder to allow additional 
values to be captured</li>
+ *     <li>SystemAction - describes the result of the error</li>
+ *     <li>UserAction - describes how a user should correct the error</li>
+ * </ul>
+ */
+public enum OMAGErrorCode
+{
+    NULL_LOCAL_SERVER_NAME(400, "OMAG-ADMIN-400-001 ",
+            "OMAG server has been called with a null local server name",
+            "The system is unable to configure the local server.",
+            "The local server name is supplied by the caller to the OMAG 
server. This call needs to be corrected before the server can operate 
correctly."),
+
+    BAD_LOCAL_SERVER_NAME(400, "OMAG-ADMIN-400-002 ",
+            "OMAG server has been called with server name {0} and in previous 
calls, the server name was {1}",
+            "The system is unable to configure the local server.",
+            "The local server name is supplied by the caller to the OMAG 
server. This call needs to be corrected before the server can operate 
correctly."),
+
+    NULL_USER_NAME(400, "OMAG-ADMIN-400-003 ",
+            "OMAG server {0} has been called with a null user name (userId)",
+            "The system is unable to configure the local server.",
+            "The user name name is supplied by the caller to the OMAG server. 
This call needs to be corrected before the server can operate correctly."),
+
+    NULL_SERVICE_MODE(400, "OMAG-ADMIN-400-004 ",
+            "OMAG server {0} has been configured with a null service mode",
+            "The system is unable to configure the local server.",
+            "The service mode is supplied by the caller to the OMAG server. 
This call needs to be corrected before the server can operate correctly."),
+
+    NULL_LOCAL_REPOSITORY_MODE(400, "OMAG-ADMIN-400-005 ",
+            "OMAG server {0} has been configured with a null local repository 
service mode",
+            "The system is unable to configure the local server.",
+            "The service mode is supplied by the caller to the OMAG server. 
This call needs to be corrected before the server can operate correctly."),
+
+    NULL_COHORT_NAME(400, "OMAG-ADMIN-400-006 ",
+            "OMAG server {0} has been configured with a null cohort name",
+            "The system is unable to configure the local server.",
+            "The service mode is supplied by the caller to the OMAG server. 
This call needs to be corrected before the server can operate correctly."),
+
+    LOCAL_REPOSITORY_MODE_NOT_SET(400, "OMAG-ADMIN-400-007 ",
+            "The local repository mode has not been set for OMAG server {0}",
+            "The local repository mode must be enabled before the event mapper 
connection or repository proxy connection is set.  The system is unable to 
configure the local server.",
+            "The local repository mode is supplied by the caller to the OMAG 
server. This call to enable the local repository needs to be made before the 
call to set the event mapper connection or repository proxy connection."),
+
+    NULL_SERVER_CONFIG(400, "OMAG-ADMIN-400-008 ",
+            "The OMAG server {0} has been passed null configuration.",
+            "The system is unable to initialize the local server instance.",
+            "Retry the request with server configuration."),
+
+    NULL_REPOSITORY_CONFIG(400, "OMAG-ADMIN-400-009 ",
+            "The OMAG server {0} has been passed null open metadata repository 
services configuration",
+            "The system is unable to initialize the local server instance.",
+            "Set up the open metadata repository services configuration and 
then retry the request with server configuration."),
+
+    NULL_ACCESS_SERVICE_ADMIN_CLASS(400, "OMAG-ADMIN-400-010 ",
+            "The OMAG server {0} has been passed a null admin class name for 
access service {1}",
+            "The system is unable to initialize this access service.",
+            "if the access service should be initialized then set up the 
appropriate admin class name and restart the server instance."),
+
+    BAD_ACCESS_SERVICE_ADMIN_CLASS(400, "OMAG-ADMIN-400-011 ",
+            "The OMAG server {0} has been passed an invalid admin class name 
{1} for access service {2}",
+            "The system is unable to initialize this access service.",
+            "If the access service should be initialized then set up the 
appropriate admin class name and restart the server instance."),
+
+    BAD_CONFIG_FILE(400, "OMAG-ADMIN-400-012 ",
+            "The OMAG server {0} is not able to open its configuration file 
{1} due to the following error: {2}",
+            "The system is unable to initialize the server.",
+            "Review the error message to determine the cause of the problem."),
+
+    NULL_CONFIG_FILE(400, "OMAG-ADMIN-400-012 ",
+            "The OMAG server is not able to save its configuration file",
+            "The system is unable to maintain the configuration for the 
server.",
+            "Review any related error messages to determine the cause of the 
problem."),
+
+    BAD_MAX_PAGE_SIZE(400, "OMAG-ADMIN-400-013 ",
+            "The OMAG server {0} has been passed an invalid maximum page size 
of {1}",
+            "The system has ignored this value.",
+            "The maximum page size must be a number greater than zero.  Retry 
the request with a valid value.")
+    ;
+
+    private int    httpErrorCode;
+    private String errorMessageId;
+    private String errorMessage;
+    private String systemAction;
+    private String userAction;
+
+    private static final Logger log = 
LoggerFactory.getLogger(OMAGErrorCode.class);
+
+
+    /**
+     * The constructor for OMRSErrorCode expects to be passed one of the 
enumeration rows defined in
+     * OMRSErrorCode above.   For example:
+     *
+     *     OMRSErrorCode   errorCode = OMRSErrorCode.SERVER_NOT_AVAILABLE;
+     *
+     * This will expand out to the 5 parameters shown below.
+     *
+     * @param newHTTPErrorCode - error code to use over REST calls
+     * @param newErrorMessageId - unique Id for the message
+     * @param newErrorMessage - text for the message
+     * @param newSystemAction - description of the action taken by the system 
when the error condition happened
+     * @param newUserAction - instructions for resolving the error
+     */
+    OMAGErrorCode(int  newHTTPErrorCode, String newErrorMessageId, String 
newErrorMessage, String newSystemAction, String newUserAction)
+    {
+        this.httpErrorCode = newHTTPErrorCode;
+        this.errorMessageId = newErrorMessageId;
+        this.errorMessage = newErrorMessage;
+        this.systemAction = newSystemAction;
+        this.userAction = newUserAction;
+    }
+
+
+    public int getHTTPErrorCode()
+    {
+        return httpErrorCode;
+    }
+
+
+    /**
+     * Returns the unique identifier for the error message.
+     *
+     * @return errorMessageId
+     */
+    public String getErrorMessageId()
+    {
+        return errorMessageId;
+    }
+
+
+    /**
+     * Returns the error message with placeholders for specific details.
+     *
+     * @return errorMessage (unformatted)
+     */
+    public String getUnformattedErrorMessage()
+    {
+        return errorMessage;
+    }
+
+
+    /**
+     * Returns the error message with the placeholders filled out with the 
supplied parameters.
+     *
+     * @param params - strings that plug into the placeholders in the 
errorMessage
+     * @return errorMessage (formatted with supplied parameters)
+     */
+    public String getFormattedErrorMessage(String... params)
+    {
+        if (log.isDebugEnabled())
+        {
+            log.debug(String.format("<== OMAGErrorCode.getMessage(%s)", 
Arrays.toString(params)));
+        }
+
+        MessageFormat mf = new MessageFormat(errorMessage);
+        String result = mf.format(params);
+
+        if (log.isDebugEnabled())
+        {
+            log.debug(String.format("==> OMAGErrorCode.getMessage(%s): %s", 
Arrays.toString(params), result));
+        }
+
+        return result;
+    }
+
+
+    /**
+     * Returns a description of the action taken by the system when the 
condition that caused this exception was
+     * detected.
+     *
+     * @return systemAction
+     */
+    public String getSystemAction()
+    {
+        return systemAction;
+    }
+
+
+    /**
+     * Returns instructions of how to resolve the issue reported in this 
exception.
+     *
+     * @return userAction
+     */
+    public String getUserAction()
+    {
+        return userAction;
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGCheckedExceptionBase.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGCheckedExceptionBase.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGCheckedExceptionBase.java
new file mode 100644
index 0000000..13475e5
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGCheckedExceptionBase.java
@@ -0,0 +1,160 @@
+/*
+ * 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.omag.ffdc.exception;
+
+/**
+ * OMAGCheckedExceptionBase provides a checked exception for reporting errors 
found when using the OMAG Server.
+ * Typically these errors are either configuration or operational errors that 
can be fixed by an administrator
+ * or power user.  However, there may be the odd bug that surfaces here. The 
OMAGErrorCode can be used with
+ * this exception to populate it with standard messages.
+ */
+public class OMAGCheckedExceptionBase extends Exception
+{
+    /*
+     * These default values are only seen if this exception is initialized 
using one of its superclass constructors.
+     */
+    private int       reportedHTTPCode;
+    private String    reportingClassName;
+    private String    reportingActionDescription;
+    private String    reportedErrorMessage;
+    private String    reportedSystemAction;
+    private String    reportedUserAction;
+    private Throwable reportedCaughtException = null;
+
+
+    /**
+     * This is the typical constructor used for creating a 
OMRSCheckedExceptionBase.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a REST call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     */
+    public OMAGCheckedExceptionBase(int  httpCode, String className, String  
actionDescription, String errorMessage, String systemAction, String userAction)
+    {
+        super(errorMessage);
+        this.reportedHTTPCode = httpCode;
+        this.reportingClassName = className;
+        this.reportingActionDescription = actionDescription;
+        this.reportedErrorMessage = errorMessage;
+        this.reportedSystemAction = systemAction;
+        this.reportedUserAction = userAction;
+    }
+
+
+    /**
+     * This is the constructor used for creating a OMRSCheckedExceptionBase 
when an unexpected error has been caught.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a rest call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     * @param caughtError - previous error causing this exception
+     */
+    public OMAGCheckedExceptionBase(int  httpCode, String className, String  
actionDescription, String errorMessage, String systemAction, String userAction, 
Throwable caughtError)
+    {
+        super(errorMessage, caughtError);
+        this.reportedHTTPCode = httpCode;
+        this.reportingClassName = className;
+        this.reportingActionDescription = actionDescription;
+        this.reportedErrorMessage = errorMessage;
+        this.reportedSystemAction = systemAction;
+        this.reportedUserAction = userAction;
+        this.reportedCaughtException = caughtError;
+    }
+
+
+    /**
+     * Return the HTTP response code to use with this exception.
+     *
+     * @return reportedHTTPCode
+     */
+    public int getReportedHTTPCode()
+    {
+        return reportedHTTPCode;
+    }
+
+    /**
+     * The class that created this exception.
+     *
+     * @return reportingClassName
+     */
+    public String getReportingClassName()
+    {
+        return reportingClassName;
+    }
+
+
+    /**
+     * The type of request that the class was performing when the condition 
occurred that resulted in this
+     * exception.
+     *
+     * @return reportingActionDescription
+     */
+    public String getReportingActionDescription()
+    {
+        return reportingActionDescription;
+    }
+
+
+    /**
+     * A formatted short description of the cause of the condition that 
resulted in this exception.
+     *
+     * @return reportedErrorMessage
+     */
+    public String getErrorMessage()
+    {
+        return reportedErrorMessage;
+    }
+
+
+    /**
+     * A description of the action that the system took as a result of the 
error condition.
+     *
+     * @return reportedSystemAction
+     */
+    public String getReportedSystemAction()
+    {
+        return reportedSystemAction;
+    }
+
+
+    /**
+     * A description of the action necessary to correct the error.
+     *
+     * @return reportedUserAction
+     */
+    public String getReportedUserAction()
+    {
+        return reportedUserAction;
+    }
+
+
+    /**
+     * An exception that was caught and wrapped by this exception.  If a null 
is returned, then this exception is
+     * newly created and not the result of a previous exception.
+     *
+     * @return reportedCaughtException
+     */
+    public Throwable getReportedCaughtException() { return 
reportedCaughtException; }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGConfigurationErrorException.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGConfigurationErrorException.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGConfigurationErrorException.java
new file mode 100644
index 0000000..933d976
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGConfigurationErrorException.java
@@ -0,0 +1,58 @@
+/*
+ * 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.omag.ffdc.exception;
+
+/**
+ * OMAGConfigurationErrorException is used when configuration parameters 
passed on earlier calls turn out to
+ * be invalid.
+ */
+public class OMAGConfigurationErrorException extends OMAGCheckedExceptionBase
+{
+    /**
+     * This is the typical constructor used for creating a 
OMAGConfigurationErrorException.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a REST call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     */
+    public OMAGConfigurationErrorException(int  httpCode, String className, 
String  actionDescription, String errorMessage, String systemAction, String 
userAction)
+    {
+        super(httpCode, className, actionDescription, errorMessage, 
systemAction, userAction);
+    }
+
+
+    /**
+     * This is the constructor used for creating a 
OMAGConfigurationErrorException that resulted from a previous error.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a REST call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     * @param caughtError - the error that resulted in this exception.
+     * */
+    public OMAGConfigurationErrorException(int  httpCode, String className, 
String  actionDescription, String errorMessage, String systemAction, String 
userAction, Throwable caughtError)
+    {
+        super(httpCode, className, actionDescription, errorMessage, 
systemAction, userAction, caughtError);
+    }
+}

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGInvalidParameterException.java
----------------------------------------------------------------------
diff --git 
a/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGInvalidParameterException.java
 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGInvalidParameterException.java
new file mode 100644
index 0000000..ecaec18
--- /dev/null
+++ 
b/omag-api/src/main/java/org/apache/atlas/omag/ffdc/exception/OMAGInvalidParameterException.java
@@ -0,0 +1,57 @@
+/*
+ * 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.omag.ffdc.exception;
+
+/**
+ * OMAGInvalidParameterException is used when invalid parameters are passed on 
an OMAG call.
+ */
+public class OMAGInvalidParameterException extends OMAGCheckedExceptionBase
+{
+    /**
+     * This is the typical constructor used for creating a 
OMAGInvalidParameterException.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a REST call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     */
+    public OMAGInvalidParameterException(int  httpCode, String className, 
String  actionDescription, String errorMessage, String systemAction, String 
userAction)
+    {
+        super(httpCode, className, actionDescription, errorMessage, 
systemAction, userAction);
+    }
+
+
+    /**
+     * This is the constructor used for creating a 
OMAGInvalidParameterException that resulted from a previous error.
+     *
+     * @param httpCode - http response code to use if this exception flows 
over a REST call
+     * @param className - name of class reporting error
+     * @param actionDescription - description of function it was performing 
when error detected
+     * @param errorMessage - description of error
+     * @param systemAction - actions of the system as a result of the error
+     * @param userAction - instructions for correcting the error
+     * @param caughtError - the error that resulted in this exception.
+     * */
+    public OMAGInvalidParameterException(int  httpCode, String className, 
String  actionDescription, String errorMessage, String systemAction, String 
userAction, Throwable caughtError)
+    {
+        super(httpCode, className, actionDescription, errorMessage, 
systemAction, userAction, caughtError);
+    }
+}

Reply via email to