--- /dev/null
+/**
+ * Copyright (c) 2018 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial Project
+ */
+package pilot
+
+var (
+       cachedServices []*models.MsbService
+)
+
+func SyncMsbData(newServices []*models.MsbService) {
+       log.Log.Debug("sync msb rewrite rule to pilot")
+       createServices, updateServices, deleteServices := compareServices(cachedServices, newServices)
+
+       log.Log.Debug("SyncMsbData: ", len(createServices), len(updateServices), len(deleteServices))
+
+       cachedServices = newServices
+}
+
+func compareServices(oldServices, newServices []*models.MsbService) (createServices, updateServices, deleteServices []*models.MsbService) {
+       oldServiceMap := toServiceMap(oldServices)
+       newServiceMap := toServiceMap(newServices)
+
+       for key, newService := range newServiceMap {
+               if oldService, exist := oldServiceMap[key]; exist {
+                       // service exist: check whether need to update
+                       if oldService.ModifyIndex != newService.ModifyIndex {
+                               updateServices = append(updateServices, newService)
+                       }
+               } else {
+                       // service not exist: add
+                       createServices = append(createServices, newService)
+               }
+
+               delete(oldServiceMap, key)
+       }
+
+       for _, service := range oldServiceMap {
+               deleteServices = append(deleteServices, service)
+       }
+
+       return
+}
+
+func toServiceMap(services []*models.MsbService) map[string]*models.MsbService {
+       serviceMap := make(map[string]*models.MsbService)
+
+       for _, service := range services {
+               serviceMap[service.ServiceName] = service
+       }
+
+       return serviceMap
+}