diff --git a/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
index d121783..e743794 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/BrmsGateway.java
@@ -34,7 +34,7 @@
  * 
  * @version 0.1
  */
-class BrmsGateway {
+public class BrmsGateway {
 
     private static final Logger logger = FlexLogger.getLogger(BrmsGateway.class);
     private static final String CONFIGFILE = "config.properties";
@@ -45,15 +45,34 @@
         // Default private constructor
     }
 
+    /**
+     * Main method.
+     * @param args The path to the configuration file is the only allowed optional argument
+     * @throws Exception on BRMS Gateway errors
+     */
     public static void main(final String[] args) throws Exception {
+        // The configuration file containing the configuration for the BRMS Gateway
+        String configFile = CONFIGFILE;
+
+        // Check if a configuration file has been specified as a parameter
+        if (args.length == 1) {
+            configFile = args[0];
+        }
+        else if (args.length > 1) {
+            String errorString = "usage: " + BrmsGateway.class.getCanonicalName() + " [configFile]";
+            logger.error(errorString);
+            throw new PolicyException(errorString);
+        }
+
         // Initialize Handler.
         logger.info("Initializing BRMS Handler");
         BrmsHandler brmsHandler = null;
         try {
-            brmsHandler = new BrmsHandler(CONFIGFILE);
+            brmsHandler = new BrmsHandler(configFile);
         } catch (final PolicyException e) {
-            logger.error("Check your property file: " + e.getMessage(), e);
-            System.exit(1);
+            String errorString = "Check your property file: " + e.getMessage();
+            logger.error(errorString);
+            throw new PolicyException(errorString);
         }
 
         // Set Handler with Auto Notification and initialize policyEngine
@@ -62,7 +81,7 @@
             policyEngine = new PolicyEngine(CONFIGFILE, NotificationScheme.AUTO_ALL_NOTIFICATIONS, brmsHandler);
         } catch (final Exception e) {
             logger.error(XACMLErrorConstants.ERROR_UNKNOWN + "Error while Initializing Policy Engine " + e.getMessage(),
-                    e);
+                            e);
         }
 
         // Keep Running....
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/BrmsJpaTest.java
similarity index 98%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java
rename to BRMSGateway/src/test/java/org/onap/policy/brms/BrmsJpaTest.java
index 32ed314..2d5aaa4 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsJpaTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/BrmsJpaTest.java
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.brmsgw.test;
+package org.onap.policy.brms;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/BrmsPushTest.java
similarity index 97%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java
rename to BRMSGateway/src/test/java/org/onap/policy/brms/BrmsPushTest.java
index 36e6336..4a1b4f8 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/BrmsPushTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/BrmsPushTest.java
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.brmsgw.test;
+package org.onap.policy.brms;
 
 import static org.junit.Assert.assertNotNull;
 
@@ -100,8 +100,8 @@
     public void brmsHandlerFailTest6() throws PolicyException {
         PropertyChange prop = new PropertyChange();
         prop.key = "repositoryURL";
-        prop.value =
-                "http://nexus:8081/nexus/content/repositories/releases, http://nexus:8081/nexus/content/repositories/releases";
+        prop.value = "http://nexus:8081/nexus/content/repositories/releases,"
+                        + "http://nexus:8081/nexus/content/repositories/releases";
         prop.remove = false;
         final List<PropertyChange> props = new LinkedList<>();
         props.add(prop);
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/ControllerPojoTest.java
similarity index 98%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java
rename to BRMSGateway/src/test/java/org/onap/policy/brms/ControllerPojoTest.java
index 21534dd..e00689d 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/ControllerPojoTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/ControllerPojoTest.java
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.brmsgw.test;
+package org.onap.policy.brms;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/NotificationPojoTest.java
similarity index 98%
rename from BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java
rename to BRMSGateway/src/test/java/org/onap/policy/brms/NotificationPojoTest.java
index f83b749..ef6fff0 100644
--- a/BRMSGateway/src/test/java/org/onap/brmsgw/test/NotificationPojoTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/NotificationPojoTest.java
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.brmsgw.test;
+package org.onap.policy.brms;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayMainTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayMainTest.java
new file mode 100644
index 0000000..e20986f
--- /dev/null
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayMainTest.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.brms.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.onap.policy.api.PolicyException;
+
+public class BrmsGatewayMainTest {
+
+    @Test
+    public void testTooManyArguments() {
+        try {
+            String[] args = {"aaa", "bbb"};
+            BrmsGateway.main(args);
+            fail("test should throw an exception");
+        }
+        catch (PolicyException e) {
+            assertEquals("usage: org.onap.policy.brms.api.BrmsGateway [configFile]", e.getMessage());
+        }
+        catch (Exception e) {
+            fail("test should throw a PolicyException");
+        }
+
+        try {
+            String[] args = {"aaa"};
+            BrmsGateway.main(args);
+            fail("test should throw an exception");
+        }
+        catch (PolicyException e) {
+            assertEquals("Check your property file: PE300 - Data Issue: "
+                            + "Config File doesn't Exist in the specified Path aaa", e.getMessage());
+        }
+        catch (Exception e) {
+            fail("test should throw a PolicyException");
+        }
+    }
+
+}
diff --git a/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
index b3f836f..fd8a7ed 100644
--- a/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
+++ b/BRMSGateway/src/test/java/org/onap/policy/brms/api/BrmsGatewayTest.java
@@ -52,7 +52,7 @@
 
         // Run app
         try {
-            final String[] args = null;
+            final String[] args = new String[0];
             BrmsGateway.main(args);
         } catch (final Exception ex) {
             fail("Not expected an exception: " + ex);
