diff --git a/CHANGES.md b/CHANGES.md
index 2b7710fb5..2a7889aec 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,6 +2,7 @@
 
 ## Version 1.0.0 (Not yet Released)
 
+* Generate Unique EcChronos ID #678
 * Create RepairConfiguration class for repair configurations - Issue #716
 * Create DistributedJmxProxy and DistributedJmxProxyFactory - Issue #715
 * Create a New Maven Module "utils" for Common Code Reuse - Issue #720
diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java
index 681898a28..b6e9f797d 100644
--- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java
+++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/config/connection/AgentConnectionConfig.java
@@ -37,6 +37,7 @@ public final class AgentConnectionConfig
     private RackAware myRackAware = new RackAware();
     private HostAware myHostAware = new HostAware();
     private Class<? extends DefaultLoadBalancingPolicy> myDatacenterAwarePolicy = DataCenterAwarePolicy.class;
+    private String myInstanceName;
 
     /**
      * Default constructor for AgentConnectionConfig.
@@ -46,6 +47,40 @@ public AgentConnectionConfig()
 
     }
 
+    /**
+     * Gets unique ecchronos instance name.
+     *
+     * @return the instance name.
+     */
+    @JsonProperty("instanceName")
+    public String getInstanceName()
+    {
+        return myInstanceName;
+    }
+
+    /**
+     * Sets unique instance name.
+     *
+     * @param  instanceName
+     *         the instance name as a string.
+     * @throws ConfigurationException
+     *         if the provided instance name is invalid.
+     */
+    @JsonProperty("instanceName")
+    public void setInstanceName(final String instanceName) throws ConfigurationException
+    {
+        if (instanceName == null || instanceName.isBlank())
+        {
+            throw new ConfigurationException(
+                    "Invalid instance name: "
+                            +
+                            instanceName
+                            +
+                            "\nInstance name must not be null or empty");
+        }
+        myInstanceName = instanceName;
+    }
+
     /**
      * Gets the connection type.
      *
diff --git a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java
index a80f0b8ec..68e29dd96 100644
--- a/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java
+++ b/application/src/main/java/com/ericsson/bss/cassandra/ecchronos/application/spring/BeanConfigurator.java
@@ -96,7 +96,7 @@ public BeanConfigurator() throws ConfigurationException, UnknownHostException
         Security security = getSecurityConfig();
         cqlSecurity.set(security.getCqlSecurity());
         jmxSecurity.set(security.getJmxSecurity());
-        ecChronosID = ECCHORONS_ID_PRE_STRING.concat(InetAddress.getLocalHost().getHostName());
+        ecChronosID = getConfiguration().getConnectionConfig().getCqlConnection().getAgentConnectionConfig().getInstanceName();
     }
 
     /**
diff --git a/application/src/main/resources/ecc.yml b/application/src/main/resources/ecc.yml
index 212ecd529..e5dac574d 100644
--- a/application/src/main/resources/ecc.yml
+++ b/application/src/main/resources/ecc.yml
@@ -24,6 +24,8 @@ connection:
     ## to connect to. The application will use the configurations
     ## specified below, connecting to the listed hosts;
     agent:
+      ## Each ecchronos instance must have unique name
+      instanceName: unique_identifier
       ## Define the Agent strategy, it can be
       ## - datacenterAware;
       ## - rackAware; and
diff --git a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java
index ffb246fce..18704c189 100644
--- a/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java
+++ b/application/src/test/java/com/ericsson/bss/cassandra/ecchronos/application/config/TestConfig.java
@@ -313,5 +313,11 @@ public void testRepairType()
         RepairType repairType = repairConfig.getRepairType();
         assertThat(repairType).isEqualTo(RepairType.VNODE);
     }
+
+    @Test
+    public void testInstanceName()
+    {
+        assertThat(nativeConnection.getAgentConnectionConfig().getInstanceName()).isEqualTo("unique_identifier");
+    }
 }
 
diff --git a/application/src/test/resources/all_set.yml b/application/src/test/resources/all_set.yml
index 6f87ba926..d35560426 100644
--- a/application/src/test/resources/all_set.yml
+++ b/application/src/test/resources/all_set.yml
@@ -16,6 +16,7 @@
 connection:
   cql:
     agent:
+      instanceName: unique_identifier
       type: datacenterAware
       localDatacenter: datacenter1
       datacenterAwarePolicy: com.ericsson.bss.cassandra.ecchronos.connection.DataCenterAwarePolicy