diff --git a/api_test.go b/api_test.go
index 74ecf36..87430a8 100644
--- a/api_test.go
+++ b/api_test.go
@@ -146,6 +146,12 @@
 				Expect(res).Should(BeTrue())
 			}
 
+			for i := 0; i < 10; i++ {
+				row := generateTestCompanyDeveloper(i)
+				res := deleteCompanyDeveloper(row, txn)
+				Expect(res).Should(BeTrue())
+			}
+
 			txn.Commit()
 		})
 
@@ -174,7 +180,7 @@
 			res = deleteObject("COMPANY", row, txn)
 			Expect(res).Should(BeFalse())
 
-			res = deleteObject("COMPANY_DEVELOPER", row, txn)
+			res = deleteCompanyDeveloper(row, txn)
 			Expect(res).Should(BeFalse())
 
 			txn.Rollback()
diff --git a/glide.yaml b/glide.yaml
index 2dcac69..3af9f0a 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -1,7 +1,11 @@
 package: github.com/30x/apidVerifyAPIKey
 import:
 - package: github.com/30x/apid
+  version: master
 - package: github.com/30x/apidApigeeSync
+  version: master
 testImport:
 - package: github.com/onsi/ginkgo/ginkgo
-- package: github.com/onsi/gomega
\ No newline at end of file
+  version: master
+- package: github.com/onsi/gomega
+  version: master
diff --git a/listener.go b/listener.go
index 7dcd4b6..b59a31d 100644
--- a/listener.go
+++ b/listener.go
@@ -2,6 +2,7 @@
 
 import (
 	"database/sql"
+
 	"github.com/30x/apid"
 	"github.com/apigee-labs/transicator/common"
 )
@@ -272,7 +273,7 @@
 		ele.Get("updated_by", &LastModifiedBy)
 
 		/* Mandatory params check */
-		if scope == "" || tenantId == "" || CompanyId == "" || DeveloperId == ""{
+		if scope == "" || tenantId == "" || CompanyId == "" || DeveloperId == "" {
 			log.Error("INSERT COMPANY_DEVELOPER: i/p args missing")
 			return false
 		}
@@ -470,6 +471,7 @@
 		log.Error("Unable to create transaction")
 		return
 	}
+	defer txn.Rollback()
 
 	var rows []common.Row
 	ok := true
@@ -527,12 +529,12 @@
 				ok = insertCompanyDevelopers(rows, txn)
 
 			case common.Update:
-				ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+				ok = deleteCompanyDeveloper(payload.OldRow, txn)
 				rows = append(rows, payload.NewRow)
 				ok = insertCompanyDevelopers(rows, txn)
 
 			case common.Delete:
-				ok = deleteObject("COMPANY_DEVELOPER", payload.OldRow, txn)
+				ok = deleteCompanyDeveloper(payload.OldRow, txn)
 			}
 		case "kms.app_credential":
 			switch payload.Operation {
@@ -580,7 +582,6 @@
 		}
 		if !ok {
 			log.Error("Sql Operation error. Operation rollbacked")
-			txn.Rollback()
 			return
 		}
 	}
@@ -647,3 +648,30 @@
 	log.Errorf("DELETE APP_CREDENTIAL_APIPRODUCT_MAPPER (%s, %s, %s, %s) failed.", ApiProduct, AppId, EntityIdentifier, apid_scope, err)
 	return false
 }
+
+func deleteCompanyDeveloper(ele common.Row, txn *sql.Tx) bool {
+	prep, err := txn.Prepare(`
+	DELETE FROM COMPANY_DEVELOPER
+	WHERE tenant_id=$1 AND company_id=$2 AND developer_id=$3`)
+	if err != nil {
+		log.Errorf("DELETE COMPANY_DEVELOPER Failed: %v", err)
+		return false
+	}
+	defer prep.Close()
+
+	var tenantId, companyId, developerId string
+	ele.Get("tenant_id", &tenantId)
+	ele.Get("company_id", &companyId)
+	ele.Get("developer_id", &developerId)
+
+	res, err := txn.Stmt(prep).Exec(tenantId, companyId, developerId)
+	if err == nil {
+		affect, err := res.RowsAffected()
+		if err == nil && affect != 0 {
+			log.Debugf("DELETE COMPANY_DEVELOPER (%s, %s, %s) success.", tenantId, companyId, developerId)
+			return true
+		}
+	}
+	log.Errorf("DELETE COMPANY_DEVELOPER (%s, %s, %s) failed: %v", tenantId, companyId, developerId, err)
+	return false
+}
