diff --git a/api_test.go b/api_test.go
index f204de4..09627d4 100644
--- a/api_test.go
+++ b/api_test.go
@@ -295,7 +295,7 @@
 			Expect(resp.StatusCode).Should(Equal(http.StatusOK))
 
 			var deployStatus string
-			err = db.QueryRow("SELECT deploy_status FROM kms_deployments WHERE id=?", deploymentID).
+			err = db.QueryRow("SELECT deploy_status FROM edgex_deployments WHERE id=?", deploymentID).
 				Scan(&deployStatus)
 			Expect(deployStatus).Should(Equal(RESPONSE_STATUS_SUCCESS))
 		})
@@ -332,7 +332,7 @@
 			var deploy_error_code int
 			err = db.QueryRow(`
 			SELECT deploy_status, deploy_error_code, deploy_error_message
-			FROM kms_deployments
+			FROM edgex_deployments
 			WHERE id=?`, deploymentID).Scan(&deployStatus, &deploy_error_code, &deploy_error_message)
 			Expect(deployStatus).Should(Equal(RESPONSE_STATUS_FAIL))
 			Expect(deploy_error_code).Should(Equal(100))
diff --git a/apidGatewayDeploy_suite_test.go b/apidGatewayDeploy_suite_test.go
index 22aa5c0..44f50b8 100644
--- a/apidGatewayDeploy_suite_test.go
+++ b/apidGatewayDeploy_suite_test.go
@@ -114,7 +114,7 @@
 	apiServerBaseURI, err = url.Parse(testServer.URL)
 	Expect(err).NotTo(HaveOccurred())
 
-	_, err = getDB().Exec("DELETE FROM kms_deployments")
+	_, err = getDB().Exec("DELETE FROM edgex_deployments")
 	Expect(err).ShouldNot(HaveOccurred())
 	_, err = getDB().Exec("UPDATE etag SET value=1")
 })
diff --git a/data.go b/data.go
index 0bf5462..aa63bb5 100644
--- a/data.go
+++ b/data.go
@@ -40,7 +40,7 @@
 
 func InitDB(db apid.DB) error {
 	_, err := db.Exec(`
-	CREATE TABLE IF NOT EXISTS kms_deployments (
+	CREATE TABLE IF NOT EXISTS edgex_deployments (
 		id character varying(36) NOT NULL,
 		bundle_config_id varchar(36) NOT NULL,
 		apid_cluster_id varchar(36) NOT NULL,
@@ -91,10 +91,10 @@
 
 func insertDeployments(tx *sql.Tx, deps []DataDeployment) error {
 
-	log.Debugf("inserting %d kms_deployments", len(deps))
+	log.Debugf("inserting %d edgex_deployments", len(deps))
 
 	stmt, err := tx.Prepare(`
-	INSERT INTO kms_deployments
+	INSERT INTO edgex_deployments
 		(id, bundle_config_id, apid_cluster_id, data_scope_id,
 		bundle_config_json, config_json, created, created_by,
 		updated, updated_by, bundle_name, bundle_uri, local_bundle_uri,
@@ -103,7 +103,7 @@
 		VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18);
 	`)
 	if err != nil {
-		log.Errorf("prepare insert into kms_deployments failed: %v", err)
+		log.Errorf("prepare insert into edgex_deployments failed: %v", err)
 		return err
 	}
 	defer stmt.Close()
@@ -118,12 +118,12 @@
 			dep.LocalBundleURI, dep.BundleChecksum, dep.BundleChecksumType, dep.DeployStatus,
 			dep.DeployErrorCode, dep.DeployErrorMessage)
 		if err != nil {
-			log.Errorf("insert into kms_deployments %s failed: %v", dep.ID, err)
+			log.Errorf("insert into edgex_deployments %s failed: %v", dep.ID, err)
 			return err
 		}
 	}
 
-	log.Debug("inserting kms_deployments succeeded")
+	log.Debug("inserting edgex_deployments succeeded")
 	return err
 }
 
@@ -131,16 +131,16 @@
 
 	log.Debugf("deleteDeployment: %s", depID)
 
-	stmt, err := tx.Prepare("DELETE FROM kms_deployments where id = $1;")
+	stmt, err := tx.Prepare("DELETE FROM edgex_deployments where id = $1;")
 	if err != nil {
-		log.Errorf("prepare delete from kms_deployments %s failed: %v", depID, err)
+		log.Errorf("prepare delete from edgex_deployments %s failed: %v", depID, err)
 		return err
 	}
 	defer stmt.Close()
 
 	_, err = stmt.Exec(depID)
 	if err != nil {
-		log.Errorf("delete from kms_deployments %s failed: %v", depID, err)
+		log.Errorf("delete from edgex_deployments %s failed: %v", depID, err)
 		return err
 	}
 
@@ -169,7 +169,7 @@
 		updated, updated_by, bundle_name, bundle_uri,
 		local_bundle_uri, bundle_checksum, bundle_checksum_type, deploy_status,
 		deploy_error_code, deploy_error_message
-	FROM kms_deployments
+	FROM edgex_deployments
 	` + where)
 	if err != nil {
 		return
@@ -181,7 +181,7 @@
 		if err == sql.ErrNoRows {
 			return
 		}
-		log.Errorf("Error querying kms_deployments: %v", err)
+		log.Errorf("Error querying edgex_deployments: %v", err)
 		return
 	}
 	defer rows.Close()
@@ -220,7 +220,7 @@
 	defer tx.Rollback()
 
 	stmt, err := tx.Prepare(`
-	UPDATE kms_deployments
+	UPDATE edgex_deployments
 	SET deploy_status=$1, deploy_error_code=$2, deploy_error_message=$3
 	WHERE id=$4;
 	`)
@@ -233,7 +233,7 @@
 	for _, result := range results {
 		res, err := stmt.Exec(result.Status, result.ErrorCode, result.Message, result.ID)
 		if err != nil {
-			log.Errorf("update kms_deployments %s to %s failed: %v", result.ID, result.Status, err)
+			log.Errorf("update edgex_deployments %s to %s failed: %v", result.ID, result.Status, err)
 			return err
 		}
 		n, err := res.RowsAffected()
@@ -251,7 +251,7 @@
 
 func updateLocalBundleURI(depID, localBundleUri string) error {
 
-	stmt, err := getDB().Prepare("UPDATE kms_deployments SET local_bundle_uri=$1 WHERE id=$2;")
+	stmt, err := getDB().Prepare("UPDATE edgex_deployments SET local_bundle_uri=$1 WHERE id=$2;")
 	if err != nil {
 		log.Errorf("prepare updateLocalBundleURI failed: %v", err)
 		return err
@@ -260,11 +260,11 @@
 
 	_, err = stmt.Exec(localBundleUri, depID)
 	if err != nil {
-		log.Errorf("update kms_deployments %s localBundleUri to %s failed: %v", depID, localBundleUri, err)
+		log.Errorf("update edgex_deployments %s localBundleUri to %s failed: %v", depID, localBundleUri, err)
 		return err
 	}
 
-	log.Debugf("update kms_deployments %s localBundleUri to %s succeeded", depID, localBundleUri)
+	log.Debugf("update edgex_deployments %s localBundleUri to %s succeeded", depID, localBundleUri)
 
 	return nil
 }
