#1228 account use dao to crud
diff --git a/datasource/etcd/account.go b/datasource/etcd/account.go
index 82271f2..8872c16 100644
--- a/datasource/etcd/account.go
+++ b/datasource/etcd/account.go
@@ -30,8 +30,6 @@
 	esync "github.com/apache/servicecomb-service-center/datasource/etcd/sync"
 	"github.com/apache/servicecomb-service-center/datasource/rbac"
 	"github.com/apache/servicecomb-service-center/pkg/log"
-	"github.com/apache/servicecomb-service-center/pkg/privacy"
-	"github.com/apache/servicecomb-service-center/pkg/util"
 )
 
 func init() {
@@ -56,16 +54,7 @@
 	if exist {
 		return rbac.ErrAccountDuplicated
 	}
-	a.Password, err = privacy.ScryptPassword(a.Password)
-	if err != nil {
-		log.Error("pwd hash failed", err)
-		return err
-	}
-	a.Role = ""
-	a.CurrentPassword = ""
-	a.ID = util.GenerateUUID()
-	a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
-	a.UpdateTime = a.CreateTime
+
 	opts, err := GenAccountOpts(a, etcdadpt.ActionPut)
 	if err != nil {
 		log.Error("", err)
diff --git a/datasource/mongo/account.go b/datasource/mongo/account.go
index b09904f..bcf9991 100644
--- a/datasource/mongo/account.go
+++ b/datasource/mongo/account.go
@@ -35,8 +35,6 @@
 	"github.com/apache/servicecomb-service-center/datasource/mongo/sync"
 	mutil "github.com/apache/servicecomb-service-center/datasource/mongo/util"
 	"github.com/apache/servicecomb-service-center/pkg/log"
-	"github.com/apache/servicecomb-service-center/pkg/privacy"
-	"github.com/apache/servicecomb-service-center/pkg/util"
 )
 
 func init() {
@@ -60,17 +58,7 @@
 	if exist {
 		return rbac.ErrAccountDuplicated
 	}
-	a.Password, err = privacy.ScryptPassword(a.Password)
-	if err != nil {
-		msg := fmt.Sprintf("failed to hash account pwd, account name %s", a.Name)
-		log.Error(msg, err)
-		return err
-	}
-	a.Role = ""
-	a.CurrentPassword = ""
-	a.ID = util.GenerateUUID()
-	a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
-	a.UpdateTime = a.CreateTime
+
 	err = createAccountTxn(ctx, a)
 	if err != nil {
 		if dao.IsDuplicateKey(err) {
diff --git a/server/service/rbac/account_service.go b/server/service/rbac/account_service.go
index 2e9af34..284e7b3 100644
--- a/server/service/rbac/account_service.go
+++ b/server/service/rbac/account_service.go
@@ -21,10 +21,14 @@
 import (
 	"context"
 	"fmt"
+	"strconv"
+	"time"
 
 	"github.com/apache/servicecomb-service-center/datasource/rbac"
 	errorsEx "github.com/apache/servicecomb-service-center/pkg/errors"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	"github.com/apache/servicecomb-service-center/pkg/privacy"
+	"github.com/apache/servicecomb-service-center/pkg/util"
 	quotasvc "github.com/apache/servicecomb-service-center/server/service/quota"
 	"github.com/apache/servicecomb-service-center/server/service/validator"
 	"github.com/go-chassis/cari/discovery"
@@ -66,6 +70,18 @@
 		}
 	}()
 
+	a.Password, err = privacy.ScryptPassword(a.Password)
+	if err != nil {
+		msg := fmt.Sprintf("failed to hash account pwd, account name %s", a.Name)
+		log.Error(msg, err)
+		return err
+	}
+	a.Role = ""
+	a.CurrentPassword = ""
+	a.ID = util.GenerateUUID()
+	a.CreateTime = strconv.FormatInt(time.Now().Unix(), 10)
+	a.UpdateTime = a.CreateTime
+
 	err = rbac.Instance().CreateAccount(ctx, a)
 	if err == nil {
 		log.Info(fmt.Sprintf("create account [%s] success", a.Name))
diff --git a/syncer/service/replicator/resource/account.go b/syncer/service/replicator/resource/account.go
index 100708a..68b12ad 100644
--- a/syncer/service/replicator/resource/account.go
+++ b/syncer/service/replicator/resource/account.go
@@ -2,13 +2,13 @@
 
 import (
 	"context"
+	"errors"
 	"fmt"
 
+	"github.com/apache/servicecomb-service-center/datasource/rbac"
 	"github.com/apache/servicecomb-service-center/pkg/log"
-	servicerbac "github.com/apache/servicecomb-service-center/server/service/rbac"
 	v1sync "github.com/apache/servicecomb-service-center/syncer/api/v1"
 
-	"github.com/go-chassis/cari/pkg/errsvc"
 	rbacmodel "github.com/go-chassis/cari/rbac"
 )
 
@@ -27,7 +27,7 @@
 type accountManager interface {
 	CreateAccount(ctx context.Context, a *rbacmodel.Account) error
 	GetAccount(ctx context.Context, name string) (*rbacmodel.Account, error)
-	UpdateAccount(ctx context.Context, name string, account *rbacmodel.Account) error
+	UpdateAccount(ctx context.Context, account *rbacmodel.Account) error
 	DeleteAccount(ctx context.Context, name string) error
 }
 
@@ -67,7 +67,7 @@
 
 	cur, err := a.manager.GetAccount(ctx, a.accountName)
 	if err != nil {
-		if errsvc.IsErrEqualCode(err, rbacmodel.ErrAccountNotExist) {
+		if errors.Is(err, rbac.ErrAccountNotExist) {
 			return nil
 		}
 		return FailResult(err)
@@ -103,7 +103,7 @@
 			a.accountName))
 		return a.CreateHandle(ctx)
 	}
-	return a.manager.UpdateAccount(ctx, a.input.Name, a.input)
+	return a.manager.UpdateAccount(ctx, a.input)
 }
 
 func (a *account) DeleteHandle(ctx context.Context) error {
@@ -115,17 +115,18 @@
 }
 
 func (a *account) CreateAccount(ctx context.Context, at *rbacmodel.Account) error {
-	return servicerbac.CreateAccount(ctx, at)
+	return rbac.Instance().CreateAccount(ctx, at)
 }
 
 func (a *account) GetAccount(ctx context.Context, name string) (*rbacmodel.Account, error) {
-	return servicerbac.GetAccount(ctx, name)
+	return rbac.Instance().GetAccount(ctx, name)
 }
 
-func (a *account) UpdateAccount(ctx context.Context, name string, account *rbacmodel.Account) error {
-	return servicerbac.UpdateAccount(ctx, name, account)
+func (a *account) UpdateAccount(ctx context.Context, account *rbacmodel.Account) error {
+	return rbac.Instance().UpdateAccount(ctx, account.Name, account)
 }
 
 func (a *account) DeleteAccount(ctx context.Context, name string) error {
-	return servicerbac.DeleteAccount(ctx, name)
+	_, err := rbac.Instance().DeleteAccount(ctx, []string{name})
+	return err
 }
diff --git a/syncer/service/task/manager.go b/syncer/service/task/manager.go
index a603001..5c51c32 100644
--- a/syncer/service/task/manager.go
+++ b/syncer/service/task/manager.go
@@ -225,7 +225,7 @@
 
 func (m *manager) handleResult(res *event.Result) {
 	if res.Error != nil || res.Data.Code == resource.Fail {
-		log.Error("get event result, return error ", res.Error)
+		log.Error(fmt.Sprintf("get task %s result, return error", res.ID), res.Error)
 		m.cache.Range(func(key, value interface{}) bool {
 			if res.ID == key {
 				m.cache.Delete(key)
@@ -241,7 +241,7 @@
 		return
 	}
 
-	log.Info(fmt.Sprintf("key,result: %s", res.ID))
+	log.Info(fmt.Sprintf("key: %s,result: %v", res.ID, res.Data))
 
 	t, ok := m.cache.LoadAndDelete(res.ID)
 	if !ok {