diff --git a/listener_test.go b/listener_test.go
index aac6225..2a91b90 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -4,6 +4,7 @@
 	"encoding/json"
 	"github.com/30x/apid"
 	. "github.com/30x/apidApigeeSync" // for direct access to Payload types
+	"github.com/30x/transicator/common"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 )
@@ -12,69 +13,186 @@
 
 	It("should store data from ApigeeSync in the database", func(done Done) {
 
-		var event = ChangeSet{}
-		event.Changes = []ChangePayload{
+		var event = common.ChangeList{}
+		/* API Product */
+		srvItems := common.Row{}
+		scv := &common.ColumnVal{
+			Value: "ch_api_product_0",
+			Type:  1,
+		}
+		srvItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "{}",
+			Type:  1,
+		}
+		srvItems["api_resources"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "{Env_0, Env_1}",
+			Type:  1,
+		}
+		srvItems["environments"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_0",
+			Type:  1,
+		}
+		srvItems["tenant_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "test_org0",
+			Type:  1,
+		}
+		srvItems["_apid_scope"] = scv
+
+		/* DEVELOPER */
+		devItems := common.Row{}
+		scv = &common.ColumnVal{
+			Value: "ch_developer_id_0",
+			Type:  1,
+		}
+		devItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Active",
+			Type:  1,
+		}
+		devItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_0",
+			Type:  1,
+		}
+		devItems["tenant_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "test_org0",
+			Type:  1,
+		}
+		devItems["_apid_scope"] = scv
+
+		/* APP */
+		appItems := common.Row{}
+		scv = &common.ColumnVal{
+			Value: "ch_application_id_0",
+			Type:  1,
+		}
+		appItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "ch_developer_id_0",
+			Type:  1,
+		}
+		appItems["developer_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_0",
+			Type:  1,
+		}
+		appItems["tenant_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Approved",
+			Type:  1,
+		}
+		appItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "test_org0",
+			Type:  1,
+		}
+		appItems["_apid_scope"] = scv
+
+		/* CRED */
+		credItems := common.Row{}
+		scv = &common.ColumnVal{
+			Value: "ch_app_credential_0",
+			Type:  1,
+		}
+		credItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "ch_application_id_0",
+			Type:  1,
+		}
+		credItems["app_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_0",
+			Type:  1,
+		}
+		credItems["tenant_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Approved",
+			Type:  1,
+		}
+		credItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "test_org0",
+			Type:  1,
+		}
+		credItems["_apid_scope"] = scv
+
+		/* APP_CRED_APIPRD_MAPPER */
+		mpItems := common.Row{}
+		scv = &common.ColumnVal{
+			Value: "ch_api_product_0",
+			Type:  1,
+		}
+		mpItems["apiprdt_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "ch_application_id_0",
+			Type:  1,
+		}
+		mpItems["app_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "ch_app_credential_0",
+			Type:  1,
+		}
+		mpItems["appcred_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Approved",
+			Type:  1,
+		}
+		mpItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "test_org0",
+			Type:  1,
+		}
+		mpItems["_apid_scope"] = scv
+
+		event.Changes = []common.Change{
 			{
-				Data: DataPayload{
-					EntityType: "apiproduct",
-					Operation:  "create",
-					PldCont: Payload{
-						Organization: "test_org",
-						AppName:      "Api_product_sync",
-						Resources:    []string{"/**", "/test"},
-						Environments: []string{"Env_0", "Env_1"},
-					},
-				},
+				Table:     "public.api_product",
+				NewRow:    srvItems,
+				Operation: 1,
 			},
 			{
-				Data: DataPayload{
-					EntityType:       "developer",
-					Operation:        "create",
-					EntityIdentifier: "developer_id_sync",
-					PldCont: Payload{
-						Organization: "test_org",
-						Email:        "person_sync@apigee.com",
-						Status:       "Active",
-						UserName:     "user_sync",
-						FirstName:    "user_first_name_sync",
-						LastName:     "user_last_name_sync",
-					},
-				},
+				Table:     "public.developer",
+				NewRow:    devItems,
+				Operation: 1,
 			},
 			{
-				Data: DataPayload{
-					EntityType:       "app",
-					Operation:        "create",
-					EntityIdentifier: "application_id_sync",
-					PldCont: Payload{
-						Organization: "test_org",
-						Email:        "person_sync@apigee.com",
-						Status:       "Approved",
-						AppName:      "application_id_sync",
-						DeveloperId:  "developer_id_sync",
-						CallbackUrl:  "call_back_url",
-					},
-				},
+				Table:     "public.app",
+				NewRow:    appItems,
+				Operation: 1,
 			},
 			{
-				Data: DataPayload{
-					EntityType:       "credential",
-					Operation:        "create",
-					EntityIdentifier: "credential_sync",
-					PldCont: Payload{
-						Organization:   "test_org",
-						AppId:          "application_id_sync",
-						Status:         "Approved",
-						ConsumerSecret: "consumer_secret_sync",
-						IssuedAt:       349583485,
-						ApiProducts: []Apip{
-							{
-								ApiProduct: "Api_product_sync",
-								Status:     "Approved",
-							},
-						},
-					},
-				},
+				Table:     "public.app_credential",
+				NewRow:    credItems,
+				Operation: 1,
+			},
+			{
+				Table:     "public.app_credential_apiproduct_mapper",
+				NewRow:    mpItems,
+				Operation: 1,
 			},
 		}
 
@@ -83,26 +201,26 @@
 			func(e apid.Event) {
 
 				// ignore the first event, let standard listener process it
-				changeSet := e.(*ChangeSet)
+				changeSet := e.(*common.ChangeList)
 				if len(changeSet.Changes) > 0 {
 					return
 				}
-
-				rsp, err := verifyAPIKey("credential_sync", "/test", "Env_0", "test_org", "verify")
+				processChange(changeSet)
+				rsp, err := verifyAPIKey("ch_app_credential_0", "/test", "Env_0", "test_org0", "verify")
 				Expect(err).ShouldNot(HaveOccurred())
 
 				var respj kmsResponseSuccess
 				json.Unmarshal(rsp, &respj)
 				Expect(respj.Type).Should(Equal("APIKeyContext"))
-				Expect(respj.RspInfo.Key).Should(Equal("credential_sync"))
+				Expect(respj.RspInfo.Key).Should(Equal("ch_app_credential_0"))
 
 				close(done)
 			},
 		}
 
 		apid.Events().Listen(ApigeeSyncEventSelector, h)
-		apid.Events().Emit(ApigeeSyncEventSelector, &event)       // for standard listener
-		apid.Events().Emit(ApigeeSyncEventSelector, &ChangeSet{}) // for test listener
+		apid.Events().Emit(ApigeeSyncEventSelector, &event)               // for standard listener
+		apid.Events().Emit(ApigeeSyncEventSelector, &common.ChangeList{}) // for test listener
 	})
 
 })
diff --git a/validate_path.go b/validate_path.go
index ac107cb..cd6e021 100644
--- a/validate_path.go
+++ b/validate_path.go
@@ -39,7 +39,6 @@
 		 * FIXME: SINGLE_FORWARD_SLASH_PATTERN not supported yet
 		 */
 	}
-
 	/* if the i/p resource is empty, no checks need to be made */
-	return len(fs) == 0
+	return s == ""
 }
diff --git a/validate_path_test.go b/validate_path_test.go
index 56e4d50..a5e5e63 100644
--- a/validate_path_test.go
+++ b/validate_path_test.go
@@ -20,11 +20,11 @@
 		Expect(s).Should(BeTrue())
 	})
 	It("validation4", func() {
-		s := validatePath("{\"/**\"}", "/foo")
+		s := validatePath("{/**}", "/foo")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation5", func() {
-		s := validatePath("{\"/**\"}", "foo")
+		s := validatePath("{/**}", "foo")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation6", func() {
