Updated schema to have apid_cluster, data_scope, _change_selector, and new columns org and env
diff --git a/.gitignore b/.gitignore
index 5ed7dc5..1e2283b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,6 @@
 cover.html
 coverage.txt
 vendor
+*.iml
+.idea
+*.lock
\ No newline at end of file
diff --git a/README.md b/README.md
index a274032..dc5ce38 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,6 @@
 | name                         | description              |
 |------------------------------|--------------------------|
 | apigeesync_poll_interval     | int. seconds. default: 5 |
-| apigeesync_organization      | string. name. required.  |
 | apigeesync_proxy_server_base | string. url. required.   |
 | apigeesync_consumer_key      | string. required.        |
 | apigeesync_consumer_secret   | string. required.        |
diff --git a/apigee_sync.go b/apigee_sync.go
index 3fed06a..7ff8e68 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -433,9 +433,9 @@
 		return nil
 	}
 
-	rows, err := db.Query("select scope from APID_CONFIG_SCOPE where apid_config_id = $1", configId)
+	rows, err := db.Query("select scope from DATA_SCOPE where apid_cluster_id = $1", configId)
 	if err != nil {
-		log.Errorf("Failed to query APID_CONFIG_SCOPE. Err: %s", err)
+		log.Errorf("Failed to query DATA_SCOPE. Err: %s", err)
 		return nil
 	}
 	defer rows.Close()
@@ -456,10 +456,10 @@
 		log.Errorf("DB open Error: %s", err)
 		return ""
 	}
-	query := "select " + qparam + " from APID_CONFIG"
+	query := "select " + qparam + " from APID_CLUSTER"
 	rows, err := db.Query(query)
 	if err != nil {
-		log.Errorf("Failed to query APID_CONFIG. Err: %s", err)
+		log.Errorf("Failed to query APID_CLUSTER. Err: %s", err)
 		return ""
 	}
 	defer rows.Close()
@@ -484,9 +484,9 @@
 		log.Error("Unable to create Sqlite transaction")
 		return false
 	}
-	prep, err := txn.Prepare("UPDATE APID_CONFIG SET lastSequence=$1;")
+	prep, err := txn.Prepare("UPDATE APID_CLUSTER SET lastSequence=$1;")
 	if err != nil {
-		log.Error("UPDATE APID_CONFIG Failed: ", err)
+		log.Error("UPDATE APID_CLUSTER Failed: ", err)
 		return false
 	}
 	defer prep.Close()
@@ -494,11 +494,11 @@
 	_, err = s.Exec(lastChange)
 	s.Close()
 	if err != nil {
-		log.Error("UPDATE APID_CONFIG_SCOPE Failed: ", err)
+		log.Error("UPDATE DATA_SCOPE Failed: ", err)
 		txn.Rollback()
 		return false
 	} else {
-		log.Info("UPDATE  APID_CONFIG_SCOPE Success: (", lastChange, ")")
+		log.Info("UPDATE  DATA_SCOPE Success: (", lastChange, ")")
 		txn.Commit()
 		return true
 	}
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index 4f2374d..507aa99 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -53,7 +53,7 @@
 				err = json.Unmarshal(plinfo, &plugInfo)
 				Expect(err).NotTo(HaveOccurred())
 				Expect(plugInfo[0].Name).To(Equal("apidApigeeSync"))
-				Expect(plugInfo[0].SchemaVersion).To(Equal("0.0.1"))
+				Expect(plugInfo[0].SchemaVersion).To(Equal("0.0.2"))
 
 				res := oauthTokenResp{}
 				res.AccessToken = "accesstoken"
@@ -86,7 +86,7 @@
 						Value: scope,
 						Type:  1,
 					}
-					apidcfgItem["_apid_scope"] = scv
+					apidcfgItem["_change_selector"] = scv
 					apidcfgItems = append(apidcfgItems, apidcfgItem)
 
 					scv = &common.ColumnVal{
@@ -99,20 +99,36 @@
 						Value: "apid_config_scope_id_0",
 						Type:  1,
 					}
-					apidcfgItemCh["_apid_scope"] = scv
+					apidcfgItemCh["_change_selector"] = scv
 
 					scv = &common.ColumnVal{
 						Value: scope,
 						Type:  1,
 					}
-					apidcfgItemCh["apid_config_id"] = scv
+					apidcfgItemCh["apid_cluster_id"] = scv
 
 					scv = &common.ColumnVal{
-						Value: "att~prod",
+						Value: "ert452",
 						Type:  1,
 					}
 					apidcfgItemCh["scope"] = scv
 
+					{
+						scv = &common.ColumnVal{
+							Value: "att",
+							Type:  1,
+						}
+						apidcfgItemCh["org"] = scv
+
+					}
+					{
+						scv = &common.ColumnVal{
+							Value: "prod",
+							Type:  1,
+						}
+						apidcfgItemCh["env"] = scv
+					}
+
 					apidcfgItemsCh = append(apidcfgItemsCh, apidcfgItemCh)
 
 					res := &common.Snapshot{}
@@ -120,11 +136,11 @@
 
 					res.Tables = []common.Table{
 						{
-							Name: "edgex.apid_config",
+							Name: "edgex.apid_cluster",
 							Rows: apidcfgItems,
 						},
 						{
-							Name: "edgex.apid_config_scope",
+							Name: "edgex.data_scope",
 							Rows: apidcfgItemsCh,
 						},
 					}
@@ -135,7 +151,7 @@
 					return
 				} else {
 					phase = 2
-					Expect(q.Get("scope")).To(Equal("att~prod"))
+					Expect(q.Get("scope")).To(Equal("ert452"))
 					res := &common.Snapshot{}
 					res.SnapshotInfo = "snapinfo1"
 
@@ -161,7 +177,7 @@
 				q := req.URL.Query()
 				Expect(q.Get("snapshot")).To(Equal("snapinfo1"))
 				scparams := q["scope"]
-				Expect(scparams).To(ContainElement("att~prod"))
+				Expect(scparams).To(ContainElement("ert452"))
 				Expect(scparams).To(ContainElement("bootstrap"))
 
 				res := &common.ChangeList{}
@@ -179,17 +195,31 @@
 					Value: scope,
 					Type:  1,
 				}
-				mpItems["apid_config_id"] = scv
+				mpItems["apid_cluster_id"] = scv
 
 				scv = &common.ColumnVal{
-					Value: "att~test",
+					Value: "ert452",
 					Type:  1,
 				}
 				mpItems["scope"] = scv
+				{
+					scv = &common.ColumnVal{
+						Value: "att",
+						Type:  1,
+					}
+					mpItems["org"] = scv
+				}
+				{
+					scv = &common.ColumnVal{
+						Value: "prod",
+						Type:  1,
+					}
+					mpItems["env"] = scv
+				}
 
 				res.Changes = []common.Change{
 					{
-						Table:     "edgex.apid_config_scope",
+						Table:     "edgex.data_scope",
 						NewRow:    mpItems,
 						Operation: 1,
 					},
@@ -206,11 +236,11 @@
 		config.Set(configProxyServerBaseURI, server.URL)
 		config.Set(configSnapServerBaseURI, server.URL)
 		config.Set(configChangeServerBaseURI, server.URL)
-		config.Set(configScopeId, "apid_config_scope_0")
+		config.Set(configApidClusterId, "apid_config_scope_0")
 		config.Set(configName, "testhost")
 
 		config.Set(configSnapshotProtocol, "json")
-		config.Set(configScopeId, scope)
+		config.Set(configApidClusterId, scope)
 		config.Set(configConsumerKey, key)
 		config.Set(configConsumerSecret, secret)
 
@@ -233,7 +263,7 @@
 						db, err := data.DB()
 						Expect(err).NotTo(HaveOccurred())
 						// verify event data (post snapshot)
-						err = db.QueryRow("Select count(scp.id) from apid_config_scope as scp INNER JOIN apid_config as ap WHERE scp.apid_config_id = ap.id").Scan(&scount)
+						err = db.QueryRow("Select count(scp.id) from data_scope as scp INNER JOIN apid_cluster as ap WHERE scp.apid_cluster_id = ap.id").Scan(&scount)
 						Expect(err).NotTo(HaveOccurred())
 						Expect(scount).Should(Equal(1))
 					}
@@ -245,7 +275,7 @@
 						time.Sleep(200 * time.Millisecond)
 						db, err := data.DB()
 						Expect(err).NotTo(HaveOccurred())
-						err = db.QueryRow("Select count(scp.id) from apid_config_scope as scp INNER JOIN apid_config as ap WHERE scp.apid_config_id = ap.id").Scan(&scount)
+						err = db.QueryRow("Select count(scp.id) from data_scope as scp INNER JOIN apid_cluster as ap WHERE scp.apid_cluster_id = ap.id").Scan(&scount)
 						Expect(err).NotTo(HaveOccurred())
 						Expect(scount).Should(Equal(2))
 						close(done)
diff --git a/glide.lock b/glide.lock
deleted file mode 100644
index 48d04cc..0000000
--- a/glide.lock
+++ /dev/null
@@ -1,111 +0,0 @@
-hash: d08d25e5d3cf18bae11145be87817c2c7c0bbe7608b1b8126bc0d3eea53931b8
-updated: 2016-09-22T11:06:44.785980058-07:00
-imports:
-- name: github.com/30x/apid
-  version: e0cf0bd9ca044ba1643e979a356573551f3c4595
-  subpackages:
-  - api
-  - config
-  - data
-  - events
-  - factory
-  - logger
-- name: github.com/fsnotify/fsnotify
-  version: f12c6236fe7b5cf6bcf30e5935d08cb079d78334
-- name: github.com/gorilla/context
-  version: 08b5f424b9271eedf6f9f0ce86cb9396ed337a42
-- name: github.com/gorilla/mux
-  version: 757bef944d0f21880861c2dd9c871ca543023cba
-- name: github.com/hashicorp/hcl
-  version: ef8133da8cda503718a74741312bf50821e6de79
-  subpackages:
-  - hcl/ast
-  - hcl/parser
-  - hcl/scanner
-  - hcl/strconv
-  - hcl/token
-  - json/parser
-  - json/scanner
-  - json/token
-- name: github.com/kr/fs
-  version: 2788f0dbd16903de03cb8186e5c7d97b69ad387b
-- name: github.com/magiconair/properties
-  version: 0723e352fa358f9322c938cc2dadda874e9151a9
-- name: github.com/mattn/go-sqlite3
-  version: 3fb7a0e792edd47bf0cf1e919dfc14e2be412e15
-- name: github.com/mitchellh/mapstructure
-  version: ca63d7c062ee3c9f34db231e352b60012b4fd0c1
-- name: github.com/pelletier/go-buffruneio
-  version: df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d
-- name: github.com/pelletier/go-toml
-  version: 45932ad32dfdd20826f5671da37a5f3ce9f26a8d
-- name: github.com/pkg/errors
-  version: a887431f7f6ef7687b556dbf718d9f351d4858a0
-- name: github.com/pkg/sftp
-  version: 8197a2e580736b78d704be0fc47b2324c0591a32
-- name: github.com/Sirupsen/logrus
-  version: 3ec0642a7fb6488f65b06f9040adc67e3990296a
-- name: github.com/spf13/afero
-  version: 52e4a6cfac46163658bd4f123c49b6ee7dc75f78
-  subpackages:
-  - mem
-  - sftp
-- name: github.com/spf13/cast
-  version: 60e7a69a428e9ac1cf7e0c865fc2fe810d34363e
-- name: github.com/spf13/jwalterweatherman
-  version: 33c24e77fb80341fe7130ee7c594256ff08ccc46
-- name: github.com/spf13/pflag
-  version: c7e63cf4530bcd3ba943729cee0efeff2ebea63f
-- name: github.com/spf13/viper
-  version: a78f70b5b977efe08e313a9e2341c3f5457abdaf
-- name: golang.org/x/crypto
-  version: 8e06e8ddd9629eb88639aba897641bff8031f1d3
-  subpackages:
-  - curve25519
-  - ed25519
-  - ed25519/internal/edwards25519
-  - ssh
-- name: golang.org/x/sys
-  version: 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9
-  subpackages:
-  - unix
-- name: golang.org/x/text
-  version: 9c8be9c425872eec4348571de4bcd4113104fceb
-  subpackages:
-  - transform
-  - unicode/norm
-- name: gopkg.in/yaml.v2
-  version: 31c299268d302dd0aa9a0dcf765a3d58971ac83f
-testImports:
-- name: github.com/onsi/ginkgo
-  version: 46c87bb63f2d8d62b3076873b7a84da124da72ce
-  subpackages:
-  - config
-  - ginkgo
-  - internal/codelocation
-  - internal/containernode
-  - internal/failer
-  - internal/leafnodes
-  - internal/remote
-  - internal/spec
-  - internal/specrunner
-  - internal/suite
-  - internal/testingtproxy
-  - internal/writer
-  - reporters
-  - reporters/stenographer
-  - types
-- name: github.com/onsi/gomega
-  version: d59fa0ac68bb5dd932ee8d24eed631cdd519efc3
-  subpackages:
-  - format
-  - internal/assertion
-  - internal/asyncassertion
-  - internal/oraclematcher
-  - internal/testingtsupport
-  - matchers
-  - matchers/support/goraph/bipartitegraph
-  - matchers/support/goraph/edge
-  - matchers/support/goraph/node
-  - matchers/support/goraph/util
-  - types
diff --git a/init.go b/init.go
index b6fe63a..54745d9 100644
--- a/init.go
+++ b/init.go
@@ -15,7 +15,7 @@
 	configChangeServerBaseURI = "apigeesync_change_server_base"
 	configConsumerKey         = "apigeesync_consumer_key"
 	configConsumerSecret      = "apigeesync_consumer_secret"
-	configScopeId             = "apigeesync_bootstrap_id"
+	configApidClusterId       = "apigeesync_cluster_id"
 	configSnapshotProtocol    = "apigeesync_snapshot_proto"
 	configName                = "apigeesync_instance_name"
 	ApigeeSyncEventSelector   = "ApigeeSync"
@@ -122,7 +122,7 @@
 	events.ListenFunc(apid.SystemEventsSelector, postInitPlugins)
 
 	config.SetDefault(configPollInterval, 120)
-	gapidConfigId = config.GetString(configScopeId)
+	gapidConfigId = config.GetString(configApidClusterId)
 	db, err := data.DB()
 	if err != nil {
 		log.Panic("Unable to access DB", err)
@@ -136,7 +136,7 @@
 	}
 
 	var count int
-	row := db.QueryRow("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='apid_config' COLLATE NOCASE;")
+	row := db.QueryRow("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='apid_cluster' COLLATE NOCASE;")
 	if err := row.Scan(&count); err != nil {
 		log.Panic("Unable to setup database", err)
 	}
@@ -151,7 +151,7 @@
 
 func createTables(db apid.DB) {
 	_, err := db.Exec(`
-CREATE TABLE apid_config (
+CREATE TABLE apid_cluster (
     id text,
     instance_id text,
     name text,
@@ -161,20 +161,22 @@
     created_by text,
     updated int64,
     updated_by text,
-    _apid_scope text,
+    _change_selector text,
     snapshotInfo text,
     lastSequence text,
     PRIMARY KEY (id)
 );
-CREATE TABLE apid_config_scope (
+CREATE TABLE data_scope (
     id text,
-    apid_config_id text,
+    apid_cluster_id text,
     scope text,
+    org text,
+    env text,
     created int64,
     created_by text,
     updated int64,
     updated_by text,
-    _apid_scope text,
+    _change_selector text,
     PRIMARY KEY (id)
 );
 `)
diff --git a/listener.go b/listener.go
index b924c76..c5f154a 100644
--- a/listener.go
+++ b/listener.go
@@ -55,10 +55,10 @@
 	for _, payload := range snapshot.Tables {
 
 		switch payload.Name {
-		case "edgex.apid_config":
-			res = insertApidConfig(payload.Rows, txn, snapshot.SnapshotInfo)
-		case "edgex.apid_config_scope":
-			res = insertApidConfigScopes(payload.Rows, txn)
+		case "edgex.apid_cluster":
+			res = insertApidCluster(payload.Rows, txn, snapshot.SnapshotInfo)
+		case "edgex.data_scope":
+			res = insertDataScopes(payload.Rows, txn)
 		}
 		if res == false {
 			log.Error("Error encountered in Downloading Snapshot for ApidApigeeSync")
@@ -77,11 +77,11 @@
 	for _, payload := range changes.Changes {
 		rows = nil
 		switch payload.Table {
-		case "edgex.apid_config_scope":
+		case "edgex.data_scope":
 			switch payload.Operation {
 			case common.Insert:
 				rows = append(rows, payload.NewRow)
-				res = insertApidConfigScopes(rows, txn)
+				res = insertDataScopes(rows, txn)
 			}
 		}
 		if res == false {
@@ -95,21 +95,21 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfig(rows []common.Row, txn *sql.Tx, snapInfo string) bool {
+func insertApidCluster(rows []common.Row, txn *sql.Tx, snapInfo string) bool {
 
 	var scope, id, name, orgAppName, createdBy, updatedBy, Description string
 	var updated, created int64
 
-	prep, err := txn.Prepare("INSERT INTO APID_CONFIG (id, instance_id, _apid_scope, name, umbrella_org_app_name, created, created_by, updated, updated_by, snapshotInfo)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);")
+	prep, err := txn.Prepare("INSERT INTO APID_CLUSTER (id, instance_id, _change_selector, name, umbrella_org_app_name, created, created_by, updated, updated_by, snapshotInfo)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);")
 	if err != nil {
-		log.Error("INSERT APID_CONFIG Failed: ", err)
+		log.Error("INSERT APID_CLUSTER Failed: ", err)
 		return false
 	}
 	defer prep.Close()
 
 	for _, ele := range rows {
 		ele.Get("id", &id)
-		ele.Get("_apid_scope", &scope)
+		ele.Get("_change_selector", &scope)
 		ele.Get("name", &name)
 		ele.Get("umbrella_org_app_name", &orgAppName)
 		ele.Get("created", &created)
@@ -132,10 +132,10 @@
 			snapInfo)
 		s.Close()
 		if err != nil {
-			log.Error("INSERT APID_CONFIG Failed: ", id, ", ", scope, ")", err)
+			log.Error("INSERT APID_CLUSTER Failed: ", id, ", ", scope, ")", err)
 			return false
 		} else {
-			log.Info("INSERT APID_CONFIG Success: (", id, ", ", scope, ")")
+			log.Info("INSERT APID_CLUSTER Success: (", id, ", ", scope, ")")
 		}
 	}
 	return true
@@ -144,14 +144,14 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfigScopes(rows []common.Row, txn *sql.Tx) bool {
+func insertDataScopes(rows []common.Row, txn *sql.Tx) bool {
 
-	var id, scopeId, apiConfigId, scope, createdBy, updatedBy string
+	var id, scopeId, apiConfigId, scope, createdBy, updatedBy, org, env string
 	var created, updated int64
 
-	prep, err := txn.Prepare("INSERT INTO APID_CONFIG_SCOPE (id, _apid_scope, apid_config_id, scope, created, created_by, updated, updated_by)VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
+	prep, err := txn.Prepare("INSERT INTO DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env,  created, created_by, updated, updated_by)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10);")
 	if err != nil {
-		log.Error("INSERT APID_CONFIG_SCOPE Failed: ", err)
+		log.Error("INSERT DATA_SCOPE Failed: ", err)
 		return false
 	}
 	defer prep.Close()
@@ -159,9 +159,11 @@
 	for _, ele := range rows {
 
 		ele.Get("id", &id)
-		ele.Get("_apid_scope", &scopeId)
-		ele.Get("apid_config_id", &apiConfigId)
+		ele.Get("_change_selector", &scopeId)
+		ele.Get("apid_cluster_id", &apiConfigId)
 		ele.Get("scope", &scope)
+		ele.Get("org", &org)
+		ele.Get("env", &env)
 		ele.Get("created", &created)
 		ele.Get("created_by", &createdBy)
 		ele.Get("updated", &updated)
@@ -173,6 +175,8 @@
 			scopeId,
 			apiConfigId,
 			scope,
+			org,
+			env,
 			created,
 			createdBy,
 			updated,
@@ -180,10 +184,10 @@
 		s.Close()
 
 		if err != nil {
-			log.Error("INSERT APID_CONFIG_SCOPE Failed: ", id, ", ", scope, ")", err)
+			log.Error("INSERT DATA_SCOPE Failed: ", id, ", ", scope, ")", err)
 			return false
 		} else {
-			log.Info("INSERT APID_CONFIG_SCOPE Success: (", id, ", ", scope, ")")
+			log.Info("INSERT DATA_SCOPE Success: (", id, ", ", scope, ")")
 		}
 	}
 	return true
diff --git a/pluginData.go b/pluginData.go
index b65effc..ef93e2e 100644
--- a/pluginData.go
+++ b/pluginData.go
@@ -4,8 +4,8 @@
 
 var pluginData = apid.PluginData{
 	Name:    "apidApigeeSync",
-	Version: "0.0.1",
+	Version: "0.0.2",
 	ExtraData: map[string]interface{}{
-		"schemaVersion": "0.0.1",
+		"schemaVersion": "0.0.2",
 	},
 }