You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2022/06/21 07:54:43 UTC

[incubator-devlake] branch main updated: refactor(tapd): modify workspceId to workspaceId

This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 77f2163b refactor(tapd): modify workspceId to workspaceId
77f2163b is described below

commit 77f2163bfef31d596e4158417a7a25be82140c29
Author: Yingchu Chen <yi...@merico.dev>
AuthorDate: Tue Jun 21 15:34:31 2022 +0800

    refactor(tapd): modify workspceId to workspaceId
    
    closes #2282
---
 plugins/tapd/impl/impl.go                          | 11 +++++++++--
 plugins/tapd/models/bug.go                         | 20 ++++++++++----------
 plugins/tapd/models/bug_changelog.go               |  6 +++---
 plugins/tapd/models/bug_commit.go                  |  8 ++++----
 plugins/tapd/models/bug_custom_field.go            |  4 ++--
 plugins/tapd/models/bug_status.go                  |  2 +-
 plugins/tapd/models/issue.go                       |  2 +-
 plugins/tapd/models/iteration.go                   |  8 ++++----
 plugins/tapd/models/iteration_bug.go               |  2 +-
 plugins/tapd/models/iteration_story.go             |  2 +-
 plugins/tapd/models/iteration_task.go              |  2 +-
 .../tapd/models/migrationscripts/archived/bug.go   | 20 ++++++++++----------
 .../migrationscripts/archived/bug_changelog.go     |  8 ++++----
 .../models/migrationscripts/archived/bug_commit.go |  8 ++++----
 .../migrationscripts/archived/bug_custom_field.go  |  4 ++--
 .../models/migrationscripts/archived/bug_status.go |  2 +-
 .../tapd/models/migrationscripts/archived/issue.go |  2 +-
 .../models/migrationscripts/archived/iteration.go  |  8 ++++----
 .../migrationscripts/archived/iteration_bug.go     |  2 +-
 .../migrationscripts/archived/iteration_story.go   |  2 +-
 .../migrationscripts/archived/iteration_task.go    |  2 +-
 .../tapd/models/migrationscripts/archived/story.go | 22 +++++++++++-----------
 .../models/migrationscripts/archived/story_bug.go  |  2 +-
 .../migrationscripts/archived/story_category.go    |  4 ++--
 .../migrationscripts/archived/story_changelog.go   |  8 ++++----
 .../migrationscripts/archived/story_commits.go     |  8 ++++----
 .../archived/story_custom_field.go                 |  4 ++--
 .../migrationscripts/archived/story_status.go      |  2 +-
 .../tapd/models/migrationscripts/archived/task.go  |  8 ++++----
 .../migrationscripts/archived/task_changelog.go    |  8 ++++----
 .../migrationscripts/archived/task_commits.go      |  8 ++++----
 .../migrationscripts/archived/task_custom_field.go |  4 ++--
 .../tapd/models/migrationscripts/archived/user.go  |  2 +-
 .../models/migrationscripts/archived/worklog.go    |  6 +++---
 .../models/migrationscripts/archived/workspace.go  |  4 ++--
 .../migrationscripts/archived/workspace_bug.go     |  2 +-
 .../migrationscripts/archived/workspace_story.go   |  2 +-
 .../migrationscripts/archived/workspace_task.go    |  2 +-
 plugins/tapd/models/story.go                       | 22 +++++++++++-----------
 plugins/tapd/models/story_bug.go                   |  2 +-
 plugins/tapd/models/story_category.go              |  4 ++--
 plugins/tapd/models/story_changelog.go             |  8 ++++----
 plugins/tapd/models/story_commits.go               |  8 ++++----
 plugins/tapd/models/story_custom_field.go          |  4 ++--
 plugins/tapd/models/story_status.go                |  2 +-
 plugins/tapd/models/task.go                        |  8 ++++----
 plugins/tapd/models/task_changelog.go              |  8 ++++----
 plugins/tapd/models/task_commits.go                |  8 ++++----
 plugins/tapd/models/task_custom_field.go           |  4 ++--
 plugins/tapd/models/user.go                        |  2 +-
 plugins/tapd/models/worklog.go                     |  6 +++---
 plugins/tapd/models/workspace.go                   |  2 +-
 plugins/tapd/models/workspace_bug.go               |  2 +-
 plugins/tapd/models/workspace_story.go             |  2 +-
 plugins/tapd/models/workspace_task.go              |  2 +-
 plugins/tapd/tapd.go                               |  2 +-
 plugins/tapd/tasks/bug_changelog_collector.go      | 14 +++++++-------
 plugins/tapd/tasks/bug_changelog_converter.go      | 16 ++++++++--------
 plugins/tapd/tasks/bug_changelog_extractor.go      |  4 ++--
 plugins/tapd/tasks/bug_collector.go                | 14 +++++++-------
 plugins/tapd/tasks/bug_commit_collector.go         | 16 ++++++++--------
 plugins/tapd/tasks/bug_commit_converter.go         |  6 +++---
 plugins/tapd/tasks/bug_commit_extractor.go         |  2 +-
 plugins/tapd/tasks/bug_converter.go                | 18 +++++++++---------
 plugins/tapd/tasks/bug_custom_fields_collector.go  | 10 +++++-----
 plugins/tapd/tasks/bug_extractor.go                | 18 +++++++++---------
 plugins/tapd/tasks/bug_label_convertor.go          |  2 +-
 plugins/tapd/tasks/bug_status_collector.go         | 10 +++++-----
 plugins/tapd/tasks/bug_status_extractor.go         |  2 +-
 plugins/tapd/tasks/iteration_collector.go          | 14 +++++++-------
 plugins/tapd/tasks/iteration_converter.go          | 10 +++++-----
 plugins/tapd/tasks/iteration_extractor.go          |  4 ++--
 plugins/tapd/tasks/shared.go                       | 12 ++++++------
 plugins/tapd/tasks/story_bug_collector.go          | 12 ++++++------
 plugins/tapd/tasks/story_category_collector.go     | 10 +++++-----
 plugins/tapd/tasks/story_changelog_collector.go    | 14 +++++++-------
 plugins/tapd/tasks/story_changelog_converter.go    | 18 +++++++++---------
 plugins/tapd/tasks/story_changelog_extractor.go    |  4 ++--
 plugins/tapd/tasks/story_collector.go              | 14 +++++++-------
 plugins/tapd/tasks/story_commit_collector.go       | 16 ++++++++--------
 plugins/tapd/tasks/story_commit_converter.go       |  6 +++---
 plugins/tapd/tasks/story_commit_extractor.go       |  2 +-
 plugins/tapd/tasks/story_converter.go              | 18 +++++++++---------
 .../tapd/tasks/story_custom_fields_collector.go    | 10 +++++-----
 plugins/tapd/tasks/story_extractor.go              | 18 +++++++++---------
 plugins/tapd/tasks/story_label_convertor.go        |  2 +-
 plugins/tapd/tasks/story_status_collector.go       | 10 +++++-----
 plugins/tapd/tasks/story_status_extractor.go       |  2 +-
 plugins/tapd/tasks/task_changelog_collector.go     | 14 +++++++-------
 plugins/tapd/tasks/task_changelog_converter.go     | 18 +++++++++---------
 plugins/tapd/tasks/task_changelog_extractor.go     |  4 ++--
 plugins/tapd/tasks/task_collector.go               | 14 +++++++-------
 plugins/tapd/tasks/task_commit_collector.go        | 16 ++++++++--------
 plugins/tapd/tasks/task_commit_converter.go        |  6 +++---
 plugins/tapd/tasks/task_commit_extractor.go        |  2 +-
 plugins/tapd/tasks/task_converter.go               | 18 +++++++++---------
 plugins/tapd/tasks/task_custom_fields_collector.go | 10 +++++-----
 plugins/tapd/tasks/task_data.go                    |  8 ++++----
 plugins/tapd/tasks/task_extractor.go               | 16 ++++++++--------
 plugins/tapd/tasks/task_label_convertor.go         |  2 +-
 plugins/tapd/tasks/user_collector.go               | 10 +++++-----
 plugins/tapd/tasks/user_converter.go               |  6 +++---
 plugins/tapd/tasks/user_extractor.go               |  2 +-
 plugins/tapd/tasks/worklog_collector.go            | 14 +++++++-------
 plugins/tapd/tasks/worklog_converter.go            | 16 ++++++++--------
 plugins/tapd/tasks/workspace_collector.go          | 10 +++++-----
 plugins/tapd/tasks/workspace_converter.go          |  8 ++++----
 107 files changed, 423 insertions(+), 416 deletions(-)

diff --git a/plugins/tapd/impl/impl.go b/plugins/tapd/impl/impl.go
index e3c01faa..05f8ed29 100644
--- a/plugins/tapd/impl/impl.go
+++ b/plugins/tapd/impl/impl.go
@@ -19,6 +19,7 @@ package impl
 
 import (
 	"fmt"
+	"github.com/apache/incubator-devlake/plugins/core/dal"
 	"time"
 
 	"github.com/apache/incubator-devlake/migration"
@@ -114,7 +115,7 @@ func (plugin Tapd) SubTaskMetas() []core.SubTaskMeta {
 }
 
 func (plugin Tapd) PrepareTaskData(taskCtx core.TaskContext, options map[string]interface{}) (interface{}, error) {
-	db := taskCtx.GetDb()
+	db := taskCtx.GetDal()
 	var op tasks.TapdOptions
 	err := mapstructure.Decode(options, &op)
 	if err != nil {
@@ -124,7 +125,10 @@ func (plugin Tapd) PrepareTaskData(taskCtx core.TaskContext, options map[string]
 		return nil, fmt.Errorf("ConnectionId is required for Tapd execution")
 	}
 	connection := &models.TapdConnection{}
-	err = db.First(connection, op.ConnectionId).Error
+	clauses := []dal.Clause{
+		dal.Where("connection_id = ?", op.ConnectionId),
+	}
+	err = db.First(connection, clauses...)
 	if err != nil {
 		return nil, err
 	}
@@ -135,6 +139,9 @@ func (plugin Tapd) PrepareTaskData(taskCtx core.TaskContext, options map[string]
 			return nil, fmt.Errorf("invalid value for `since`: %w", err)
 		}
 	}
+	if connection.RateLimit == 0 {
+		connection.RateLimit = 6000
+	}
 	tapdApiClient, err := tasks.NewTapdApiClient(taskCtx, connection)
 	if err != nil {
 		return nil, fmt.Errorf("failed to create tapd api client: %w", err)
diff --git a/plugins/tapd/models/bug.go b/plugins/tapd/models/bug.go
index 96aa3fbe..d8292964 100644
--- a/plugins/tapd/models/bug.go
+++ b/plugins/tapd/models/bug.go
@@ -24,11 +24,11 @@ import (
 
 type TapdBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	EpicKey      string
 	Title        string         `json:"name" gorm:"type:varchar(255)"`
 	Description  string         `json:"description"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	Created      helper.CSTTime `json:"created"`
 	Modified     helper.CSTTime `json:"modified" gorm:"index"`
 	Status       string         `json:"status" gorm:"type:varchar(255)"`
@@ -36,10 +36,10 @@ type TapdBug struct {
 	Begin        helper.CSTTime `json:"begin"`
 	Due          helper.CSTTime `json:"due"`
 	Priority     string         `json:"priority" gorm:"type:varchar(255)"`
-	IterationID  uint64         `json:"iteration_id,string"`
+	IterationId  uint64         `json:"iteration_id,string"`
 	Source       string         `json:"source" gorm:"type:varchar(255)"`
 	Module       string         `json:"module" gorm:"type:varchar(255)"`
-	ReleaseID    uint64         `json:"release_id,string"`
+	ReleaseId    uint64         `json:"release_id,string"`
 	CreatedFrom  string         `json:"created_from" gorm:"type:varchar(255)"`
 	Feature      string         `json:"feature" gorm:"type:varchar(255)"`
 	common.NoPKModel
@@ -76,7 +76,7 @@ type TapdBug struct {
 	RegressionNumber string         `json:"regression_number" gorm:"type:varchar(20)"`
 	Flows            string         `json:"flows" gorm:"type:varchar(255)"`
 	Testmode         string         `json:"testmode" gorm:"type:varchar(50)"`
-	IssueID          uint64         `json:"issue_id,string"`
+	IssueId          uint64         `json:"issue_id,string"`
 	VerifyTime       helper.CSTTime `json:"verify_time"`
 	RejectTime       helper.CSTTime `json:"reject_time"`
 	ReopenTime       helper.CSTTime `json:"reopen_time"`
@@ -85,16 +85,16 @@ type TapdBug struct {
 	Deadline         helper.CSTTime `json:"deadline"`
 	InProgressTime   helper.CSTTime `json:"in_progress_time"`
 	AssignedTime     helper.CSTTime `json:"assigned_time"`
-	TemplateID       uint64         `json:"template_id,string"`
-	StoryID          uint64         `json:"story_id,string"`
+	TemplateId       uint64         `json:"template_id,string"`
+	StoryId          uint64         `json:"story_id,string"`
 	StdStatus        string         `gorm:"type:varchar(20)"`
 	StdType          string         `gorm:"type:varchar(20)"`
 	Type             string         `gorm:"type:varchar(20)"`
 	Url              string         `gorm:"type:varchar(255)"`
 
-	SupportID       uint64  `json:"support_id,string"`
-	SupportForumID  uint64  `json:"support_forum_id,string"`
-	TicketID        uint64  `json:"ticket_id,string"`
+	SupportId       uint64  `json:"support_id,string"`
+	SupportForumId  uint64  `json:"support_forum_id,string"`
+	TicketId        uint64  `json:"ticket_id,string"`
 	Follower        string  `json:"follower" gorm:"type:varchar(255)"`
 	SyncType        string  `json:"sync_type" gorm:"type:text"`
 	Label           string  `json:"label" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/bug_changelog.go b/plugins/tapd/models/bug_changelog.go
index 40fcdc2d..f8dbadfd 100644
--- a/plugins/tapd/models/bug_changelog.go
+++ b/plugins/tapd/models/bug_changelog.go
@@ -24,9 +24,9 @@ import (
 
 type TapdBugChangelog struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	WorkspaceID  uint64         `gorm:"type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	BugID        uint64         `json:"bug_id,string"`
+	WorkspaceId  uint64         `gorm:"type:BIGINT  NOT NULL"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	BugId        uint64         `json:"bug_id,string"`
 	Author       string         `json:"author" gorm:"type:varchar(255)"`
 	Field        string         `gorm:"primaryKey;type:varchar(255)" json:"field"`
 	OldValue     string         `json:"old_value"`
diff --git a/plugins/tapd/models/bug_commit.go b/plugins/tapd/models/bug_commit.go
index 42e9868c..6f6632fd 100644
--- a/plugins/tapd/models/bug_commit.go
+++ b/plugins/tapd/models/bug_commit.go
@@ -24,12 +24,12 @@ import (
 
 type TapdBugCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/bug_custom_field.go b/plugins/tapd/models/bug_custom_field.go
index b0005ef2..e7eb28c6 100644
--- a/plugins/tapd/models/bug_custom_field.go
+++ b/plugins/tapd/models/bug_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdBugCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/bug_status.go b/plugins/tapd/models/bug_status.go
index 33aa8bfb..7a83acc9 100644
--- a/plugins/tapd/models/bug_status.go
+++ b/plugins/tapd/models/bug_status.go
@@ -21,7 +21,7 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdBugStatus struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	EnglishName  string `gorm:"primaryKey;type:varchar(255)"`
 	ChineseName  string
 	IsLastStep   bool
diff --git a/plugins/tapd/models/issue.go b/plugins/tapd/models/issue.go
index a907e984..4c51d265 100644
--- a/plugins/tapd/models/issue.go
+++ b/plugins/tapd/models/issue.go
@@ -19,7 +19,7 @@ package models
 
 type TapdIssue struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 }
 
 func (TapdIssue) TableName() string {
diff --git a/plugins/tapd/models/iteration.go b/plugins/tapd/models/iteration.go
index c0c6e10f..5e886ae0 100644
--- a/plugins/tapd/models/iteration.go
+++ b/plugins/tapd/models/iteration.go
@@ -24,13 +24,13 @@ import (
 
 type TapdIteration struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
 	Name         string         `gorm:"type:varchar(255)" json:"name"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	Startdate    helper.CSTTime `json:"startdate"`
 	Enddate      helper.CSTTime `json:"enddate"`
 	Status       string         `gorm:"type:varchar(255)" json:"status"`
-	ReleaseID    uint64         `gorm:"type:BIGINT" json:"release_id,string"`
+	ReleaseId    uint64         `gorm:"type:BIGINT" json:"release_id,string"`
 	Description  string         `json:"description"`
 	Creator      string         `gorm:"type:varchar(255)" json:"creator"`
 	Created      helper.CSTTime `json:"created"`
@@ -46,7 +46,7 @@ type TapdIteration struct {
 type TapdWorkspaceIteration struct {
 	common.NoPKModel
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	IterationId  uint64 `gorm:"primaryKey"`
 }
 
diff --git a/plugins/tapd/models/iteration_bug.go b/plugins/tapd/models/iteration_bug.go
index 091d754a..09c948e2 100644
--- a/plugins/tapd/models/iteration_bug.go
+++ b/plugins/tapd/models/iteration_bug.go
@@ -26,7 +26,7 @@ type TapdIterationBug struct {
 	common.NoPKModel
 	ConnectionId   uint64 `gorm:"primaryKey"`
 	IterationId    uint64 `gorm:"primaryKey"`
-	WorkspaceID    uint64 `gorm:"primaryKey"`
+	WorkspaceId    uint64 `gorm:"primaryKey"`
 	BugId          uint64 `gorm:"primaryKey"`
 	ResolutionDate helper.CSTTime
 	BugCreatedDate helper.CSTTime
diff --git a/plugins/tapd/models/iteration_story.go b/plugins/tapd/models/iteration_story.go
index bb55fac2..11fd058c 100644
--- a/plugins/tapd/models/iteration_story.go
+++ b/plugins/tapd/models/iteration_story.go
@@ -26,7 +26,7 @@ type TapdIterationStory struct {
 	common.NoPKModel
 	ConnectionId uint64 `gorm:"primaryKey"`
 	IterationId  uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 
 	StoryId          uint64 `gorm:"primaryKey"`
 	ResolutionDate   helper.CSTTime
diff --git a/plugins/tapd/models/iteration_task.go b/plugins/tapd/models/iteration_task.go
index 3d66f5ba..65c1ad82 100644
--- a/plugins/tapd/models/iteration_task.go
+++ b/plugins/tapd/models/iteration_task.go
@@ -26,7 +26,7 @@ type TapdIterationTask struct {
 	common.NoPKModel
 	ConnectionId uint64 `gorm:"primaryKey"`
 	IterationId  uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 
 	TaskId          uint64 `gorm:"primaryKey"`
 	ResolutionDate  helper.CSTTime
diff --git a/plugins/tapd/models/migrationscripts/archived/bug.go b/plugins/tapd/models/migrationscripts/archived/bug.go
index f4063b7f..e8a817d4 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug.go
@@ -24,11 +24,11 @@ import (
 
 type TapdBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	EpicKey      string
 	Title        string         `json:"name" gorm:"type:varchar(255)"`
 	Description  string         `json:"description"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	Created      helper.CSTTime `json:"created"`
 	Modified     helper.CSTTime `json:"modified" gorm:"index"`
 	Status       string         `json:"status" gorm:"type:varchar(255)"`
@@ -36,10 +36,10 @@ type TapdBug struct {
 	Begin        helper.CSTTime `json:"begin"`
 	Due          helper.CSTTime `json:"due"`
 	Priority     string         `json:"priority" gorm:"type:varchar(255)"`
-	IterationID  uint64         `json:"iteration_id,string"`
+	IterationId  uint64         `json:"iteration_id,string"`
 	Source       string         `json:"source" gorm:"type:varchar(255)"`
 	Module       string         `json:"module" gorm:"type:varchar(255)"`
-	ReleaseID    uint64         `json:"release_id,string"`
+	ReleaseId    uint64         `json:"release_id,string"`
 	CreatedFrom  string         `json:"created_from" gorm:"type:varchar(255)"`
 	Feature      string         `json:"feature" gorm:"type:varchar(255)"`
 	common.NoPKModel
@@ -76,7 +76,7 @@ type TapdBug struct {
 	RegressionNumber string         `json:"regression_number" gorm:"type:varchar(20)"`
 	Flows            string         `json:"flows" gorm:"type:varchar(255)"`
 	Testmode         string         `json:"testmode" gorm:"type:varchar(50)"`
-	IssueID          uint64         `json:"issue_id,string"`
+	IssueId          uint64         `json:"issue_id,string"`
 	VerifyTime       helper.CSTTime `json:"verify_time"`
 	RejectTime       helper.CSTTime `json:"reject_time"`
 	ReopenTime       helper.CSTTime `json:"reopen_time"`
@@ -85,16 +85,16 @@ type TapdBug struct {
 	Deadline         helper.CSTTime `json:"deadline"`
 	InProgressTime   helper.CSTTime `json:"in_progress_time"`
 	AssignedTime     helper.CSTTime `json:"assigned_time"`
-	TemplateID       uint64         `json:"template_id,string"`
-	StoryID          uint64         `json:"story_id,string"`
+	TemplateId       uint64         `json:"template_id,string"`
+	StoryId          uint64         `json:"story_id,string"`
 	StdStatus        string         `gorm:"type:varchar(20)"`
 	StdType          string         `gorm:"type:varchar(20)"`
 	Type             string         `gorm:"type:varchar(20)"`
 	Url              string         `gorm:"type:varchar(255)"`
 
-	SupportID       uint64  `json:"support_id,string"`
-	SupportForumID  uint64  `json:"support_forum_id,string"`
-	TicketID        uint64  `json:"ticket_id,string"`
+	SupportId       uint64  `json:"support_id,string"`
+	SupportForumId  uint64  `json:"support_forum_id,string"`
+	TicketId        uint64  `json:"ticket_id,string"`
 	Follower        string  `json:"follower" gorm:"type:varchar(255)"`
 	SyncType        string  `json:"sync_type" gorm:"type:text"`
 	Label           string  `json:"label" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_changelog.go b/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
index da3617db..ec359123 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
@@ -24,9 +24,9 @@ import (
 
 type TapdBugChangelog struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	WorkspaceID  uint64         `gorm:"type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	BugID        uint64         `json:"bug_id,string"`
+	WorkspaceId  uint64         `gorm:"type:BIGINT  NOT NULL"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	BugId        uint64         `json:"bug_id,string"`
 	Author       string         `json:"author" gorm:"type:varchar(255)"`
 	Field        string         `gorm:"primaryKey;type:varchar(255)" json:"field"`
 	OldValue     string         `json:"old_value"`
@@ -39,7 +39,7 @@ type TapdBugChangelog struct {
 type TapdBugChangelogItem struct {
 	ConnectionId      uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
 	ChangelogId       uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	Field             string `json:"field" gorm:"primaryKey;foreignKey:ChangelogId;references:ID"`
+	Field             string `json:"field" gorm:"primaryKey;foreignKey:ChangelogId;references:Id"`
 	ValueBeforeParsed string `json:"value_before_parsed"`
 	ValueAfterParsed  string `json:"value_after_parsed"`
 	IterationIdFrom   uint64
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_commit.go b/plugins/tapd/models/migrationscripts/archived/bug_commit.go
index f47080b3..99b32fd6 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_commit.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_commit.go
@@ -24,12 +24,12 @@ import (
 
 type TapdBugCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_custom_field.go b/plugins/tapd/models/migrationscripts/archived/bug_custom_field.go
index 1027721e..40df4709 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_custom_field.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdBugCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_status.go b/plugins/tapd/models/migrationscripts/archived/bug_status.go
index 5d5876d0..ecc41369 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_status.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_status.go
@@ -23,7 +23,7 @@ import (
 
 type TapdBugStatus struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	EnglishName  string `gorm:"primaryKey;type:varchar(255)"`
 	ChineseName  string
 	IsLastStep   bool
diff --git a/plugins/tapd/models/migrationscripts/archived/issue.go b/plugins/tapd/models/migrationscripts/archived/issue.go
index f4ed12f6..e5146eb2 100644
--- a/plugins/tapd/models/migrationscripts/archived/issue.go
+++ b/plugins/tapd/models/migrationscripts/archived/issue.go
@@ -19,7 +19,7 @@ package archived
 
 type TapdIssue struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 }
 
 func (TapdIssue) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration.go b/plugins/tapd/models/migrationscripts/archived/iteration.go
index 396f45ab..196bc3d8 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration.go
@@ -24,13 +24,13 @@ import (
 
 type TapdIteration struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
 	Name         string         `gorm:"type:varchar(255)" json:"name"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	Startdate    helper.CSTTime `json:"startdate"`
 	Enddate      helper.CSTTime `json:"enddate"`
 	Status       string         `gorm:"type:varchar(255)" json:"status"`
-	ReleaseID    uint64         `gorm:"type:BIGINT" json:"release_id,string"`
+	ReleaseId    uint64         `gorm:"type:BIGINT" json:"release_id,string"`
 	Description  string         `json:"description"`
 	Creator      string         `gorm:"type:varchar(255)" json:"creator"`
 	Created      helper.CSTTime `json:"created"`
@@ -46,7 +46,7 @@ type TapdIteration struct {
 type TapdWorkspaceIteration struct {
 	common.NoPKModel
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	IterationId  uint64 `gorm:"primaryKey"`
 }
 
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_bug.go b/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
index ca447090..780304ee 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
@@ -26,7 +26,7 @@ type TapdIterationBug struct {
 	common.NoPKModel
 	ConnectionId   uint64 `gorm:"primaryKey"`
 	IterationId    uint64 `gorm:"primaryKey"`
-	WorkspaceID    uint64 `gorm:"primaryKey"`
+	WorkspaceId    uint64 `gorm:"primaryKey"`
 	BugId          uint64 `gorm:"primaryKey"`
 	ResolutionDate helper.CSTTime
 	BugCreatedDate helper.CSTTime
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_story.go b/plugins/tapd/models/migrationscripts/archived/iteration_story.go
index 5ffc720f..f4f81188 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_story.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_story.go
@@ -26,7 +26,7 @@ type TapdIterationStory struct {
 	common.NoPKModel
 	ConnectionId     uint64 `gorm:"primaryKey"`
 	IterationId      uint64 `gorm:"primaryKey"`
-	WorkspaceID      uint64 `gorm:"primaryKey"`
+	WorkspaceId      uint64 `gorm:"primaryKey"`
 	StoryId          uint64 `gorm:"primaryKey"`
 	ResolutionDate   helper.CSTTime
 	StoryCreatedDate helper.CSTTime
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_task.go b/plugins/tapd/models/migrationscripts/archived/iteration_task.go
index e01a3cf7..e92880d4 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_task.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_task.go
@@ -27,7 +27,7 @@ type TapdIterationTask struct {
 	ConnectionId    uint64 `gorm:"primaryKey"`
 	IterationId     uint64 `gorm:"primaryKey"`
 	TaskId          uint64 `gorm:"primaryKey"`
-	WorkspaceID     uint64 `gorm:"primaryKey"`
+	WorkspaceId     uint64 `gorm:"primaryKey"`
 	ResolutionDate  helper.CSTTime
 	TaskCreatedDate helper.CSTTime
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/story.go b/plugins/tapd/models/migrationscripts/archived/story.go
index 728a99ab..1bfe1246 100644
--- a/plugins/tapd/models/migrationscripts/archived/story.go
+++ b/plugins/tapd/models/migrationscripts/archived/story.go
@@ -24,11 +24,11 @@ import (
 
 type TapdStory struct {
 	ConnectionId    uint64         `gorm:"primaryKey"`
-	ID              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
-	WorkitemTypeID  uint64         `json:"workitem_type_id,string"`
+	Id              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	WorkitemTypeId  uint64         `json:"workitem_type_id,string"`
 	Name            string         `gorm:"type:varchar(255)" json:"name"`
 	Description     string         `json:"description"`
-	WorkspaceID     uint64         `json:"workspace_id,string"`
+	WorkspaceId     uint64         `json:"workspace_id,string"`
 	Creator         string         `gorm:"type:varchar(255)"`
 	Created         helper.CSTTime `json:"created"`
 	Modified        helper.CSTTime `json:"modified" gorm:"index"`
@@ -40,26 +40,26 @@ type TapdStory struct {
 	Size            int16          `json:"size,string"`
 	Priority        string         `gorm:"type:varchar(255)" json:"priority"`
 	Developer       string         `gorm:"type:varchar(255)" json:"developer"`
-	IterationID     uint64         `json:"iteration_id,string"`
+	IterationId     uint64         `json:"iteration_id,string"`
 	TestFocus       string         `json:"test_focus" gorm:"type:varchar(255)"`
 	Type            string         `json:"type" gorm:"type:varchar(20)"`
 	Source          string         `json:"source" gorm:"type:varchar(255)"`
 	Module          string         `json:"module" gorm:"type:varchar(255)"`
 	Version         string         `json:"version" gorm:"type:varchar(255)"`
 	Completed       helper.CSTTime `json:"completed"`
-	CategoryID      int64          `json:"category_id,string"`
+	CategoryId      int64          `json:"category_id,string"`
 	Path            string         `gorm:"type:varchar(255)" json:"path"`
-	ParentID        uint64         `json:"parent_id,string"`
-	ChildrenID      string         `gorm:"type:text" json:"children_id"`
-	AncestorID      uint64         `json:"ancestor_id,string"`
+	ParentId        uint64         `json:"parent_id,string"`
+	ChildrenId      string         `gorm:"type:text" json:"children_id"`
+	AncestorId      uint64         `json:"ancestor_id,string"`
 	BusinessValue   string         `gorm:"type:varchar(255)" json:"business_value"`
 	Effort          float32        `json:"effort,string"`
 	EffortCompleted float32        `json:"effort_completed,string"`
 	Exceed          float32        `json:"exceed,string"`
 	Remain          float32        `json:"remain,string"`
-	ReleaseID       uint64         `json:"release_id,string"`
+	ReleaseId       uint64         `json:"release_id,string"`
 	Confidential    string         `gorm:"type:varchar(255)" json:"confidential"`
-	TemplatedID     uint64         `json:"templated_id,string"`
+	TemplatedId     uint64         `json:"templated_id,string"`
 	CreatedFrom     string         `gorm:"type:varchar(255)" json:"created_from"`
 	Feature         string         `gorm:"type:varchar(255)" json:"feature"`
 	StdStatus       string         `gorm:"type:varchar(20)"`
@@ -68,7 +68,7 @@ type TapdStory struct {
 
 	AttachmentCount  int16  `json:"attachment_count,string"`
 	HasAttachment    string `json:"has_attachment" gorm:"type:varchar(255)"`
-	BugID            uint64 `json:"bug_id,string"`
+	BugId            uint64 `json:"bug_id,string"`
 	Follower         string `json:"follower" gorm:"type:varchar(255)"`
 	SyncType         string `json:"sync_type" gorm:"type:text"`
 	PredecessorCount int16  `json:"predecessor_count,string"`
diff --git a/plugins/tapd/models/migrationscripts/archived/story_bug.go b/plugins/tapd/models/migrationscripts/archived/story_bug.go
index b46781b5..b7f6e551 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_bug.go
@@ -23,7 +23,7 @@ import (
 
 type TapdStoryBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey" json:"workspace_id,string"`
+	WorkspaceId  uint64 `gorm:"primaryKey" json:"workspace_id,string"`
 	StoryId      uint64 `gorm:"primaryKey" json:"story_id,string"`
 	BugId        uint64 `gorm:"primaryKey" json:"bug_id,string"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/story_category.go b/plugins/tapd/models/migrationscripts/archived/story_category.go
index 3e99c8ac..5f7fe3b3 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_category.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_category.go
@@ -24,10 +24,10 @@ import (
 
 type TapdStoryCategory struct {
 	ConnectionId uint64         `gorm:"primaryKey"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name         string         `json:"name" gorm:"type:varchar(255)"`
 	Description  string         `json:"description"`
-	ParentID     uint64         `json:"parent_id,string"`
+	ParentId     uint64         `json:"parent_id,string"`
 	Created      helper.CSTTime `json:"created"`
 	Modified     helper.CSTTime `json:"modified"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/story_changelog.go b/plugins/tapd/models/migrationscripts/archived/story_changelog.go
index 21bd23f6..70e54b5b 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_changelog.go
@@ -24,16 +24,16 @@ import (
 
 type TapdStoryChangelog struct {
 	ConnectionId   uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID    uint64         `json:"workspace_id,string"`
-	WorkitemTypeID uint64         `json:"workitem_type_id,string"`
+	Id             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId    uint64         `json:"workspace_id,string"`
+	WorkitemTypeId uint64         `json:"workitem_type_id,string"`
 	Creator        string         `json:"creator" gorm:"type:varchar(255)"`
 	Created        helper.CSTTime `json:"created"`
 	ChangeSummary  string         `json:"change_summary" gorm:"type:varchar(255)"`
 	Comment        string         `json:"comment"`
 	EntityType     string         `json:"entity_type" gorm:"type:varchar(255)"`
 	ChangeType     string         `json:"change_type" gorm:"type:varchar(255)"`
-	StoryID        uint64         `json:"story_id,string"`
+	StoryId        uint64         `json:"story_id,string"`
 	common.NoPKModel
 	FieldChanges []TapdStoryChangelogItem `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/story_commits.go b/plugins/tapd/models/migrationscripts/archived/story_commits.go
index 438508bd..10902165 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_commits.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_commits.go
@@ -24,12 +24,12 @@ import (
 
 type TapdStoryCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/story_custom_field.go b/plugins/tapd/models/migrationscripts/archived/story_custom_field.go
index 79360672..26eff16a 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_custom_field.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdStoryCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/story_status.go b/plugins/tapd/models/migrationscripts/archived/story_status.go
index c9180aae..6100ddd4 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_status.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_status.go
@@ -23,7 +23,7 @@ import (
 
 type TapdStoryStatus struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	EnglishName  string `gorm:"primaryKey;type:varchar(255)"`
 	ChineseName  string
 	IsLastStep   bool
diff --git a/plugins/tapd/models/migrationscripts/archived/task.go b/plugins/tapd/models/migrationscripts/archived/task.go
index 81398c4a..62827f74 100644
--- a/plugins/tapd/models/migrationscripts/archived/task.go
+++ b/plugins/tapd/models/migrationscripts/archived/task.go
@@ -24,10 +24,10 @@ import (
 
 type TapdTask struct {
 	ConnectionId    uint64         `gorm:"primaryKey"`
-	ID              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name            string         `gorm:"type:varchar(255)" json:"name"`
 	Description     string         `json:"description"`
-	WorkspaceID     uint64         `json:"workspace_id,string"`
+	WorkspaceId     uint64         `json:"workspace_id,string"`
 	Creator         string         `gorm:"type:varchar(255)" json:"creator"`
 	Created         helper.CSTTime `json:"created"`
 	Modified        helper.CSTTime `json:"modified" gorm:"index"`
@@ -37,7 +37,7 @@ type TapdTask struct {
 	Begin           helper.CSTTime `json:"begin"`
 	Due             helper.CSTTime `json:"due"`
 	Priority        string         `gorm:"type:varchar(255)" json:"priority"`
-	IterationID     uint64         `json:"iteration_id,string"`
+	IterationId     uint64         `json:"iteration_id,string"`
 	Completed       helper.CSTTime `json:"completed"`
 	Effort          float32        `json:"effort,string"`
 	EffortCompleted float32        `json:"effort_completed,string"`
@@ -46,7 +46,7 @@ type TapdTask struct {
 	StdStatus       string         `gorm:"type:varchar(20)"`
 	StdType         string         `gorm:"type:varchar(20)"`
 	Type            string         `gorm:"type:varchar(20)"`
-	StoryID         uint64         `json:"story_id,string"`
+	StoryId         uint64         `json:"story_id,string"`
 	Progress        int16          `json:"progress,string"`
 	HasAttachment   string         `gorm:"type:varchar(255)"`
 	Url             string         `gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/task_changelog.go b/plugins/tapd/models/migrationscripts/archived/task_changelog.go
index 41559a2a..44ac8b78 100644
--- a/plugins/tapd/models/migrationscripts/archived/task_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/task_changelog.go
@@ -24,9 +24,9 @@ import (
 
 type TapdTaskChangelog struct {
 	ConnectionId   uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID    uint64         `json:"workspace_id,string"`
-	WorkitemTypeID uint64         `json:"workitem_type_id,string"`
+	Id             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId    uint64         `json:"workspace_id,string"`
+	WorkitemTypeId uint64         `json:"workitem_type_id,string"`
 	Creator        string         `json:"creator" gorm:"type:varchar(255)"`
 	Created        helper.CSTTime `json:"created"`
 	ChangeSummary  string         `json:"change_summary" gorm:"type:varchar(255)"`
@@ -34,7 +34,7 @@ type TapdTaskChangelog struct {
 	EntityType     string         `json:"entity_type" gorm:"type:varchar(255)"`
 	ChangeType     string         `json:"change_type" gorm:"type:varchar(255)"`
 	ChangeTypeText string         `json:"change_type_text" gorm:"type:varchar(255)"`
-	TaskID         uint64         `json:"task_id,string"`
+	TaskId         uint64         `json:"task_id,string"`
 	common.NoPKModel
 	FieldChanges []TapdTaskChangelogItem `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/task_commits.go b/plugins/tapd/models/migrationscripts/archived/task_commits.go
index 91d6dc8d..4bd89c4e 100644
--- a/plugins/tapd/models/migrationscripts/archived/task_commits.go
+++ b/plugins/tapd/models/migrationscripts/archived/task_commits.go
@@ -24,12 +24,12 @@ import (
 
 type TapdTaskCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/task_custom_field.go b/plugins/tapd/models/migrationscripts/archived/task_custom_field.go
index afc20788..ebd17cb6 100644
--- a/plugins/tapd/models/migrationscripts/archived/task_custom_field.go
+++ b/plugins/tapd/models/migrationscripts/archived/task_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdTaskCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/migrationscripts/archived/user.go b/plugins/tapd/models/migrationscripts/archived/user.go
index ef78381b..62991b4e 100644
--- a/plugins/tapd/models/migrationscripts/archived/user.go
+++ b/plugins/tapd/models/migrationscripts/archived/user.go
@@ -23,7 +23,7 @@ import (
 
 type TapdUser struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT"`
-	WorkspaceID  uint64 `gorm:"primaryKey;type:BIGINT"`
+	WorkspaceId  uint64 `gorm:"primaryKey;type:BIGINT"`
 	Name         string `gorm:"index;type:varchar(255)" json:"name"`
 	User         string `gorm:"primaryKey;type:varchar(255)" json:"user"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/worklog.go b/plugins/tapd/models/migrationscripts/archived/worklog.go
index f553b510..a46821d9 100644
--- a/plugins/tapd/models/migrationscripts/archived/worklog.go
+++ b/plugins/tapd/models/migrationscripts/archived/worklog.go
@@ -24,10 +24,10 @@ import (
 
 type TapdWorklog struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	EntityType   string         `gorm:"type:varchar(255)" json:"entity_type"`
-	EntityID     uint64         `json:"entity_id,string"`
+	EntityId     uint64         `json:"entity_id,string"`
 	Timespent    float32        `json:"timespent,string"`
 	Spentdate    helper.CSTTime `json:"spentdate"`
 	Owner        string         `gorm:"type:varchar(255)" json:"owner"`
diff --git a/plugins/tapd/models/migrationscripts/archived/workspace.go b/plugins/tapd/models/migrationscripts/archived/workspace.go
index 8d0a81c1..9777fe13 100644
--- a/plugins/tapd/models/migrationscripts/archived/workspace.go
+++ b/plugins/tapd/models/migrationscripts/archived/workspace.go
@@ -24,7 +24,7 @@ import (
 
 type TapdWorkspace struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name         string         `gorm:"type:varchar(255)" json:"name"`
 	PrettyName   string         `gorm:"type:varchar(255)" json:"pretty_name"`
 	Category     string         `gorm:"type:varchar(255)" json:"category"`
@@ -41,7 +41,7 @@ type TapdWorkspace struct {
 
 type TapdWorkSpaceIssue struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	IssueId      uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/workspace_bug.go b/plugins/tapd/models/migrationscripts/archived/workspace_bug.go
index f199162b..6d61a97e 100644
--- a/plugins/tapd/models/migrationscripts/archived/workspace_bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/workspace_bug.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	BugId        uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/workspace_story.go b/plugins/tapd/models/migrationscripts/archived/workspace_story.go
index 2b388a5e..def8557f 100644
--- a/plugins/tapd/models/migrationscripts/archived/workspace_story.go
+++ b/plugins/tapd/models/migrationscripts/archived/workspace_story.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceStory struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	StoryId      uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/workspace_task.go b/plugins/tapd/models/migrationscripts/archived/workspace_task.go
index b737dc02..d43aae21 100644
--- a/plugins/tapd/models/migrationscripts/archived/workspace_task.go
+++ b/plugins/tapd/models/migrationscripts/archived/workspace_task.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceTask struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	TaskId       uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/story.go b/plugins/tapd/models/story.go
index 60de3ecd..5363dc15 100644
--- a/plugins/tapd/models/story.go
+++ b/plugins/tapd/models/story.go
@@ -24,11 +24,11 @@ import (
 
 type TapdStory struct {
 	ConnectionId    uint64         `gorm:"primaryKey"`
-	ID              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
-	WorkitemTypeID  uint64         `json:"workitem_type_id,string"`
+	Id              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	WorkitemTypeId  uint64         `json:"workitem_type_id,string"`
 	Name            string         `gorm:"type:varchar(255)" json:"name"`
 	Description     string         `json:"description"`
-	WorkspaceID     uint64         `json:"workspace_id,string"`
+	WorkspaceId     uint64         `json:"workspace_id,string"`
 	Creator         string         `gorm:"type:varchar(255)"`
 	Created         helper.CSTTime `json:"created"`
 	Modified        helper.CSTTime `json:"modified" gorm:"index"`
@@ -40,26 +40,26 @@ type TapdStory struct {
 	Size            int16          `json:"size,string"`
 	Priority        string         `gorm:"type:varchar(255)" json:"priority"`
 	Developer       string         `gorm:"type:varchar(255)" json:"developer"`
-	IterationID     uint64         `json:"iteration_id,string"`
+	IterationId     uint64         `json:"iteration_id,string"`
 	TestFocus       string         `json:"test_focus" gorm:"type:varchar(255)"`
 	Type            string         `json:"type" gorm:"type:varchar(20)"`
 	Source          string         `json:"source" gorm:"type:varchar(255)"`
 	Module          string         `json:"module" gorm:"type:varchar(255)"`
 	Version         string         `json:"version" gorm:"type:varchar(255)"`
 	Completed       helper.CSTTime `json:"completed"`
-	CategoryID      int64          `json:"category_id,string"`
+	CategoryId      int64          `json:"category_id,string"`
 	Path            string         `gorm:"type:varchar(255)" json:"path"`
-	ParentID        uint64         `json:"parent_id,string"`
-	ChildrenID      string         `gorm:"type:text" json:"children_id"`
-	AncestorID      uint64         `json:"ancestor_id,string"`
+	ParentId        uint64         `json:"parent_id,string"`
+	ChildrenId      string         `gorm:"type:text" json:"children_id"`
+	AncestorId      uint64         `json:"ancestor_id,string"`
 	BusinessValue   string         `gorm:"type:varchar(255)" json:"business_value"`
 	Effort          float32        `json:"effort,string"`
 	EffortCompleted float32        `json:"effort_completed,string"`
 	Exceed          float32        `json:"exceed,string"`
 	Remain          float32        `json:"remain,string"`
-	ReleaseID       uint64         `json:"release_id,string"`
+	ReleaseId       uint64         `json:"release_id,string"`
 	Confidential    string         `gorm:"type:varchar(255)" json:"confidential"`
-	TemplatedID     uint64         `json:"templated_id,string"`
+	TemplatedId     uint64         `json:"templated_id,string"`
 	CreatedFrom     string         `gorm:"type:varchar(255)" json:"created_from"`
 	Feature         string         `gorm:"type:varchar(255)" json:"feature"`
 	StdStatus       string         `gorm:"type:varchar(20)"`
@@ -68,7 +68,7 @@ type TapdStory struct {
 
 	AttachmentCount  int16  `json:"attachment_count,string"`
 	HasAttachment    string `json:"has_attachment" gorm:"type:varchar(255)"`
-	BugID            uint64 `json:"bug_id,string"`
+	BugId            uint64 `json:"bug_id,string"`
 	Follower         string `json:"follower" gorm:"type:varchar(255)"`
 	SyncType         string `json:"sync_type" gorm:"type:text"`
 	PredecessorCount int16  `json:"predecessor_count,string"`
diff --git a/plugins/tapd/models/story_bug.go b/plugins/tapd/models/story_bug.go
index 15f023ce..af7f6a84 100644
--- a/plugins/tapd/models/story_bug.go
+++ b/plugins/tapd/models/story_bug.go
@@ -23,7 +23,7 @@ import (
 
 type TapdStoryBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey" json:"workspace_id,string"`
+	WorkspaceId  uint64 `gorm:"primaryKey" json:"workspace_id,string"`
 	StoryId      uint64 `gorm:"primaryKey" json:"story_id,string"`
 	BugId        uint64 `gorm:"primaryKey" json:"bug_id,string"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/story_category.go b/plugins/tapd/models/story_category.go
index 085818f6..330b3c59 100644
--- a/plugins/tapd/models/story_category.go
+++ b/plugins/tapd/models/story_category.go
@@ -24,10 +24,10 @@ import (
 
 type TapdStoryCategory struct {
 	ConnectionId uint64         `gorm:"primaryKey"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name         string         `json:"name" gorm:"type:varchar(255)"`
 	Description  string         `json:"description"`
-	ParentID     uint64         `json:"parent_id,string"`
+	ParentId     uint64         `json:"parent_id,string"`
 	Created      helper.CSTTime `json:"created"`
 	Modified     helper.CSTTime `json:"modified"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/story_changelog.go b/plugins/tapd/models/story_changelog.go
index 9649c783..1f084496 100644
--- a/plugins/tapd/models/story_changelog.go
+++ b/plugins/tapd/models/story_changelog.go
@@ -25,16 +25,16 @@ import (
 
 type TapdStoryChangelog struct {
 	ConnectionId   uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID    uint64         `json:"workspace_id,string"`
-	WorkitemTypeID uint64         `json:"workitem_type_id,string"`
+	Id             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId    uint64         `json:"workspace_id,string"`
+	WorkitemTypeId uint64         `json:"workitem_type_id,string"`
 	Creator        string         `json:"creator" gorm:"type:varchar(255)"`
 	Created        helper.CSTTime `json:"created"`
 	ChangeSummary  string         `json:"change_summary" gorm:"type:varchar(255)"`
 	Comment        string         `json:"comment"`
 	EntityType     string         `json:"entity_type" gorm:"type:varchar(255)"`
 	ChangeType     string         `json:"change_type" gorm:"type:varchar(255)"`
-	StoryID        uint64         `json:"story_id,string"`
+	StoryId        uint64         `json:"story_id,string"`
 	common.NoPKModel
 	FieldChanges []TapdStoryChangelogItemRes `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/story_commits.go b/plugins/tapd/models/story_commits.go
index 1e72d4f8..ae906f72 100644
--- a/plugins/tapd/models/story_commits.go
+++ b/plugins/tapd/models/story_commits.go
@@ -24,12 +24,12 @@ import (
 
 type TapdStoryCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/story_custom_field.go b/plugins/tapd/models/story_custom_field.go
index 2d54e588..0504ef32 100644
--- a/plugins/tapd/models/story_custom_field.go
+++ b/plugins/tapd/models/story_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdStoryCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/story_status.go b/plugins/tapd/models/story_status.go
index d62adde2..77e4c1fb 100644
--- a/plugins/tapd/models/story_status.go
+++ b/plugins/tapd/models/story_status.go
@@ -21,7 +21,7 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdStoryStatus struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	EnglishName  string `gorm:"primaryKey;type:varchar(255)"`
 	ChineseName  string
 	IsLastStep   bool
diff --git a/plugins/tapd/models/task.go b/plugins/tapd/models/task.go
index 00fc9d62..14bee844 100644
--- a/plugins/tapd/models/task.go
+++ b/plugins/tapd/models/task.go
@@ -24,10 +24,10 @@ import (
 
 type TapdTask struct {
 	ConnectionId    uint64         `gorm:"primaryKey"`
-	ID              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id              uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name            string         `gorm:"type:varchar(255)" json:"name"`
 	Description     string         `json:"description"`
-	WorkspaceID     uint64         `json:"workspace_id,string"`
+	WorkspaceId     uint64         `json:"workspace_id,string"`
 	Creator         string         `gorm:"type:varchar(255)" json:"creator"`
 	Created         helper.CSTTime `json:"created"`
 	Modified        helper.CSTTime `json:"modified" gorm:"index"`
@@ -37,7 +37,7 @@ type TapdTask struct {
 	Begin           helper.CSTTime `json:"begin"`
 	Due             helper.CSTTime `json:"due"`
 	Priority        string         `gorm:"type:varchar(255)" json:"priority"`
-	IterationID     uint64         `json:"iteration_id,string"`
+	IterationId     uint64         `json:"iteration_id,string"`
 	Completed       helper.CSTTime `json:"completed"`
 	Effort          float32        `json:"effort,string"`
 	EffortCompleted float32        `json:"effort_completed,string"`
@@ -46,7 +46,7 @@ type TapdTask struct {
 	StdStatus       string         `gorm:"type:varchar(20)"`
 	StdType         string         `gorm:"type:varchar(20)"`
 	Type            string         `gorm:"type:varchar(20)"`
-	StoryID         uint64         `json:"story_id,string"`
+	StoryId         uint64         `json:"story_id,string"`
 	Progress        int16          `json:"progress,string"`
 	HasAttachment   string         `gorm:"type:varchar(255)"`
 	Url             string         `gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/task_changelog.go b/plugins/tapd/models/task_changelog.go
index 50510b99..280eebba 100644
--- a/plugins/tapd/models/task_changelog.go
+++ b/plugins/tapd/models/task_changelog.go
@@ -26,9 +26,9 @@ import (
 
 type TapdTaskChangelog struct {
 	ConnectionId   uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID    uint64         `json:"workspace_id,string"`
-	WorkitemTypeID uint64         `json:"workitem_type_id,string"`
+	Id             uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId    uint64         `json:"workspace_id,string"`
+	WorkitemTypeId uint64         `json:"workitem_type_id,string"`
 	Creator        string         `json:"creator" gorm:"type:varchar(255)"`
 	Created        helper.CSTTime `json:"created"`
 	ChangeSummary  string         `json:"change_summary" gorm:"type:varchar(255)"`
@@ -36,7 +36,7 @@ type TapdTaskChangelog struct {
 	EntityType     string         `json:"entity_type" gorm:"type:varchar(255)"`
 	ChangeType     string         `json:"change_type" gorm:"type:varchar(255)"`
 	ChangeTypeText string         `json:"change_type_text" gorm:"type:varchar(255)"`
-	TaskID         uint64         `json:"task_id,string"`
+	TaskId         uint64         `json:"task_id,string"`
 	common.NoPKModel
 	FieldChanges []TapdTaskChangelogItemRes `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/task_commits.go b/plugins/tapd/models/task_commits.go
index c7c882d5..873dd6b9 100644
--- a/plugins/tapd/models/task_commits.go
+++ b/plugins/tapd/models/task_commits.go
@@ -24,12 +24,12 @@ import (
 
 type TapdTaskCommit struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 
-	UserID          string `json:"user_id" gorm:"type:varchar(255)"`
+	UserId          string `json:"user_id" gorm:"type:varchar(255)"`
 	HookUserName    string `json:"hook_user_name" gorm:"type:varchar(255)"`
-	CommitID        string `json:"commit_id" gorm:"type:varchar(255)"`
-	WorkspaceID     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
+	CommitId        string `json:"commit_id" gorm:"type:varchar(255)"`
+	WorkspaceId     uint64 `json:"workspace_id,string" gorm:"type:BIGINT"`
 	Message         string `json:"message" gorm:"type:text"`
 	Path            string `json:"path" gorm:"type:varchar(255)"`
 	WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
diff --git a/plugins/tapd/models/task_custom_field.go b/plugins/tapd/models/task_custom_field.go
index 62b6f101..31793bdf 100644
--- a/plugins/tapd/models/task_custom_field.go
+++ b/plugins/tapd/models/task_custom_field.go
@@ -21,8 +21,8 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdTaskCustomFields struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64 `json:"workspace_id,string"`
+	Id           uint64 `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64 `json:"workspace_id,string"`
 	EntryType    string `json:"entry_type" gorm:"type:varchar(20)"`
 	CustomField  string `json:"custom_field" gorm:"type:varchar(255)"`
 	Type         string `json:"type" gorm:"type:varchar(20)"`
diff --git a/plugins/tapd/models/user.go b/plugins/tapd/models/user.go
index 01b56537..3653c7db 100644
--- a/plugins/tapd/models/user.go
+++ b/plugins/tapd/models/user.go
@@ -21,7 +21,7 @@ import "github.com/apache/incubator-devlake/models/common"
 
 type TapdUser struct {
 	ConnectionId uint64 `gorm:"primaryKey;type:BIGINT"`
-	WorkspaceID  uint64 `gorm:"primaryKey;type:BIGINT"`
+	WorkspaceId  uint64 `gorm:"primaryKey;type:BIGINT"`
 	Name         string `gorm:"index;type:varchar(255)" json:"name"`
 	User         string `gorm:"primaryKey;type:varchar(255)" json:"user"`
 	common.NoPKModel
diff --git a/plugins/tapd/models/worklog.go b/plugins/tapd/models/worklog.go
index d6d54e11..b602bfc2 100644
--- a/plugins/tapd/models/worklog.go
+++ b/plugins/tapd/models/worklog.go
@@ -24,10 +24,10 @@ import (
 
 type TapdWorklog struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
-	WorkspaceID  uint64         `json:"workspace_id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id,string"`
+	WorkspaceId  uint64         `json:"workspace_id,string"`
 	EntityType   string         `gorm:"type:varchar(255)" json:"entity_type"`
-	EntityID     uint64         `json:"entity_id,string"`
+	EntityId     uint64         `json:"entity_id,string"`
 	Timespent    float32        `json:"timespent,string"`
 	Spentdate    helper.CSTTime `json:"spentdate"`
 	Owner        string         `gorm:"type:varchar(255)" json:"owner"`
diff --git a/plugins/tapd/models/workspace.go b/plugins/tapd/models/workspace.go
index 8d35b347..c78268e6 100644
--- a/plugins/tapd/models/workspace.go
+++ b/plugins/tapd/models/workspace.go
@@ -24,7 +24,7 @@ import (
 
 type TapdWorkspace struct {
 	ConnectionId uint64         `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
+	Id           uint64         `gorm:"primaryKey;type:BIGINT" json:"id,string"`
 	Name         string         `gorm:"type:varchar(255)" json:"name"`
 	PrettyName   string         `gorm:"type:varchar(255)" json:"pretty_name"`
 	Category     string         `gorm:"type:varchar(255)" json:"category"`
diff --git a/plugins/tapd/models/workspace_bug.go b/plugins/tapd/models/workspace_bug.go
index d083a70c..04fdc795 100644
--- a/plugins/tapd/models/workspace_bug.go
+++ b/plugins/tapd/models/workspace_bug.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceBug struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	BugId        uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/workspace_story.go b/plugins/tapd/models/workspace_story.go
index bd901089..842bda1a 100644
--- a/plugins/tapd/models/workspace_story.go
+++ b/plugins/tapd/models/workspace_story.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceStory struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	StoryId      uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/models/workspace_task.go b/plugins/tapd/models/workspace_task.go
index 9f47ce61..53212af6 100644
--- a/plugins/tapd/models/workspace_task.go
+++ b/plugins/tapd/models/workspace_task.go
@@ -23,7 +23,7 @@ import (
 
 type TapdWorkSpaceTask struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
-	WorkspaceID  uint64 `gorm:"primaryKey"`
+	WorkspaceId  uint64 `gorm:"primaryKey"`
 	TaskId       uint64 `gorm:"primaryKey"`
 	common.NoPKModel
 }
diff --git a/plugins/tapd/tapd.go b/plugins/tapd/tapd.go
index b4db1216..fbaeb371 100644
--- a/plugins/tapd/tapd.go
+++ b/plugins/tapd/tapd.go
@@ -59,7 +59,7 @@ func main() {
 		// 	panic(err)
 		// }
 		// for _, v := range wsList {
-		// 	*workspaceId = v.ID
+		// 	*workspaceId = v.Id
 		// 	runner.DirectRun(c, args, PluginEntry, map[string]interface{}{
 		// 		"connectionId": *connectionId,
 		// 		"workspaceId":  *workspaceId,
diff --git a/plugins/tapd/tasks/bug_changelog_collector.go b/plugins/tapd/tasks/bug_changelog_collector.go
index 6cedc5a8..ce7632c2 100644
--- a/plugins/tapd/tasks/bug_changelog_collector.go
+++ b/plugins/tapd/tasks/bug_changelog_collector.go
@@ -42,14 +42,14 @@ func CollectBugChangelogs(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdBugChangelog
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -63,7 +63,7 @@ func CollectBugChangelogs(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "bug_changes",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("order", "created asc")
@@ -82,8 +82,8 @@ func CollectBugChangelogs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectBugChangelogMeta = core.SubTaskMeta{
-	Name:        "collectBugChangelogs",
-	EntryPoint:  CollectBugChangelogs,
-	Required:    true,
-	Description: "collect Tapd bugChangelogs",
+	Name:             "collectBugChangelogs",
+	EntryPoint:       CollectBugChangelogs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd bugChangelogs",
 }
diff --git a/plugins/tapd/tasks/bug_changelog_converter.go b/plugins/tapd/tasks/bug_changelog_converter.go
index 314006a8..60d864d8 100644
--- a/plugins/tapd/tasks/bug_changelog_converter.go
+++ b/plugins/tapd/tasks/bug_changelog_converter.go
@@ -33,9 +33,9 @@ import (
 
 type BugChangelogItemResult struct {
 	ConnectionId      uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	WorkspaceID       uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
-	BugID             uint64    `json:"bug_id"`
+	WorkspaceId       uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+	Id                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
+	BugId             uint64    `json:"bug_id"`
 	Author            string    `json:"author" gorm:"type:varchar(255)"`
 	Field             string    `json:"field"`
 	OldValue          string    `json:"old_value"`
@@ -54,13 +54,13 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_BUG_CHANGELOG_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert changelog :%d", data.Options.WorkspaceID)
+	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdBugChangelog{})
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.bug_id, tc.author, _tool_tapd_bug_changelog_items.*"),
 		dal.From(&models.TapdBugChangelogItem{}),
 		dal.Join("left join _tool_tapd_bug_changelogs tc on tc.id = _tool_tapd_bug_changelog_items.changelog_id "),
-		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 		dal.Orderby("created DESC"),
 	}
 
@@ -78,10 +78,10 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) error {
 			cl := inputRow.(*BugChangelogItemResult)
 			domainCl := &ticket.Changelog{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: clIdGen.Generate(data.Connection.ID, cl.ID, cl.Field),
+					Id: clIdGen.Generate(data.Connection.ID, cl.Id, cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.BugID),
-				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceID, cl.Author),
+				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.BugId),
+				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceId, cl.Author),
 				AuthorName:        cl.Author,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,
diff --git a/plugins/tapd/tasks/bug_changelog_extractor.go b/plugins/tapd/tasks/bug_changelog_extractor.go
index 36dd59cf..437c0244 100644
--- a/plugins/tapd/tasks/bug_changelog_extractor.go
+++ b/plugins/tapd/tasks/bug_changelog_extractor.go
@@ -49,10 +49,10 @@ func ExtractBugChangelog(taskCtx core.SubTaskContext) error {
 			bugChangelog := bugChangelogBody.BugChange
 
 			bugChangelog.ConnectionId = data.Connection.ID
-			bugChangelog.WorkspaceID = data.Options.WorkspaceID
+			bugChangelog.WorkspaceId = data.Options.WorkspaceId
 			item := &models.TapdBugChangelogItem{
 				ConnectionId:      data.Connection.ID,
-				ChangelogId:       bugChangelog.ID,
+				ChangelogId:       bugChangelog.Id,
 				Field:             bugChangelog.Field,
 				ValueBeforeParsed: bugChangelog.OldValue,
 				ValueAfterParsed:  bugChangelog.NewValue,
diff --git a/plugins/tapd/tasks/bug_collector.go b/plugins/tapd/tasks/bug_collector.go
index 7fe04b61..bfc159ce 100644
--- a/plugins/tapd/tasks/bug_collector.go
+++ b/plugins/tapd/tasks/bug_collector.go
@@ -43,14 +43,14 @@ func CollectBugs(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdBug
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("modified DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Modified)
 			incremental = true
 		}
@@ -64,7 +64,7 @@ func CollectBugs(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "bugs",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("fields", "labels")
@@ -84,8 +84,8 @@ func CollectBugs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectBugMeta = core.SubTaskMeta{
-	Name:        "collectBugs",
-	EntryPoint:  CollectBugs,
-	Required:    true,
-	Description: "collect Tapd bugs",
+	Name:             "collectBugs",
+	EntryPoint:       CollectBugs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd bugs",
 }
diff --git a/plugins/tapd/tasks/bug_commit_collector.go b/plugins/tapd/tasks/bug_commit_collector.go
index 0516cbdf..190f9459 100644
--- a/plugins/tapd/tasks/bug_commit_collector.go
+++ b/plugins/tapd/tasks/bug_commit_collector.go
@@ -50,14 +50,14 @@ func CollectBugCommits(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdBugCommit
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -65,7 +65,7 @@ func CollectBugCommits(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Select("id"),
 		dal.From(&models.TapdBug{}),
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 	}
 	if since != nil {
 		clauses = append(clauses, dal.Where("modified > ?", since))
@@ -89,7 +89,7 @@ func CollectBugCommits(taskCtx core.SubTaskContext) error {
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			input := reqData.Input.(*SimpleBug)
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("type", "bug")
 			query.Set("object_id", fmt.Sprintf("%v", input.Id))
 			query.Set("order", "created asc")
@@ -117,8 +117,8 @@ func CollectBugCommits(taskCtx core.SubTaskContext) error {
 }
 
 var CollectBugCommitMeta = core.SubTaskMeta{
-	Name:        "collectBugCommits",
-	EntryPoint:  CollectBugCommits,
-	Required:    true,
-	Description: "collect Tapd issueCommits",
+	Name:             "collectBugCommits",
+	EntryPoint:       CollectBugCommits,
+	EnabledByDefault: true,
+	Description:      "collect Tapd issueCommits",
 }
diff --git a/plugins/tapd/tasks/bug_commit_converter.go b/plugins/tapd/tasks/bug_commit_converter.go
index e2dc5795..fd5e7c37 100644
--- a/plugins/tapd/tasks/bug_commit_converter.go
+++ b/plugins/tapd/tasks/bug_commit_converter.go
@@ -30,10 +30,10 @@ func ConvertBugCommit(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_BUG_COMMIT_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 	clauses := []dal.Clause{
 		dal.From(&models.TapdBugCommit{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 	cursor, err := db.Cursor(clauses...)
 	if err != nil {
@@ -48,7 +48,7 @@ func ConvertBugCommit(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdBugCommit)
 			domainL := &crossdomain.IssueCommit{
 				IssueId:   IssueIdGen.Generate(data.Connection.ID, toolL.BugId),
-				CommitSha: toolL.CommitID,
+				CommitSha: toolL.CommitId,
 			}
 
 			return []interface{}{
diff --git a/plugins/tapd/tasks/bug_commit_extractor.go b/plugins/tapd/tasks/bug_commit_extractor.go
index c03df3f5..a1a77176 100644
--- a/plugins/tapd/tasks/bug_commit_extractor.go
+++ b/plugins/tapd/tasks/bug_commit_extractor.go
@@ -51,7 +51,7 @@ func ExtractBugCommits(taskCtx core.SubTaskContext) error {
 				return nil, err
 			}
 			toolL.BugId = issue.Id
-			toolL.WorkspaceID = data.Options.WorkspaceID
+			toolL.WorkspaceId = data.Options.WorkspaceId
 			results := make([]interface{}, 0, 1)
 			results = append(results, &toolL)
 
diff --git a/plugins/tapd/tasks/bug_converter.go b/plugins/tapd/tasks/bug_converter.go
index c18612d5..3f35059b 100644
--- a/plugins/tapd/tasks/bug_converter.go
+++ b/plugins/tapd/tasks/bug_converter.go
@@ -33,10 +33,10 @@ func ConvertBug(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_BUG_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 	clauses := []dal.Clause{
 		dal.From(&models.TapdBug{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -52,10 +52,10 @@ func ConvertBug(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdBug)
 			domainL := &ticket.Issue{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.ID),
+					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.Id),
 				},
 				Url:      toolL.Url,
-				IssueKey: strconv.FormatUint(toolL.ID, 10),
+				IssueKey: strconv.FormatUint(toolL.Id, 10),
 				Title:    toolL.Title,
 				EpicKey:  toolL.EpicKey,
 				Type:     "BUG",
@@ -63,11 +63,11 @@ func ConvertBug(taskCtx core.SubTaskContext) error {
 				//ResolutionDate: (*time.Time)(&toolL.Resolved),
 				//CreatedDate:    (*time.Time)(&toolL.Created),
 				//UpdatedDate:    (*time.Time)(&toolL.Modified),
-				ParentIssueId:  IssueIdGen.Generate(toolL.ConnectionId, toolL.IssueID),
+				ParentIssueId:  IssueIdGen.Generate(toolL.ConnectionId, toolL.IssueId),
 				Priority:       toolL.Priority,
-				CreatorId:      UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Reporter),
+				CreatorId:      UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Reporter),
 				CreatorName:    toolL.Reporter,
-				AssigneeId:     UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.CurrentOwner),
+				AssigneeId:     UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.CurrentOwner),
 				AssigneeName:   toolL.CurrentOwner,
 				Severity:       toolL.Severity,
 				Component:      toolL.Feature, // todo not sure about this
@@ -78,11 +78,11 @@ func ConvertBug(taskCtx core.SubTaskContext) error {
 			}
 			results := make([]interface{}, 0, 2)
 			boardIssue := &ticket.BoardIssue{
-				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceID),
+				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceId),
 				IssueId: domainL.Id,
 			}
 			sprintIssue := &ticket.SprintIssue{
-				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationID),
+				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationId),
 				IssueId:  domainL.Id,
 			}
 			results = append(results, domainL, boardIssue, sprintIssue)
diff --git a/plugins/tapd/tasks/bug_custom_fields_collector.go b/plugins/tapd/tasks/bug_custom_fields_collector.go
index 33a9cb5c..59b92e09 100644
--- a/plugins/tapd/tasks/bug_custom_fields_collector.go
+++ b/plugins/tapd/tasks/bug_custom_fields_collector.go
@@ -41,7 +41,7 @@ func CollectBugCustomFields(taskCtx core.SubTaskContext) error {
 		UrlTemplate: "bugs/custom_fields_settings",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			return query, nil
 		},
 		ResponseParser: func(res *http.Response) ([]json.RawMessage, error) {
@@ -60,8 +60,8 @@ func CollectBugCustomFields(taskCtx core.SubTaskContext) error {
 }
 
 var CollectBugCustomFieldsMeta = core.SubTaskMeta{
-	Name:        "collectBugCustomFields",
-	EntryPoint:  CollectBugCustomFields,
-	Required:    true,
-	Description: "collect Tapd BugCustomFields",
+	Name:             "collectBugCustomFields",
+	EntryPoint:       CollectBugCustomFields,
+	EnabledByDefault: true,
+	Description:      "collect Tapd BugCustomFields",
 }
diff --git a/plugins/tapd/tasks/bug_extractor.go b/plugins/tapd/tasks/bug_extractor.go
index 2105e5df..948182e2 100644
--- a/plugins/tapd/tasks/bug_extractor.go
+++ b/plugins/tapd/tasks/bug_extractor.go
@@ -42,7 +42,7 @@ func ExtractBugs(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	statusList := make([]*models.TapdBugStatus, 0)
 	clauses := []dal.Clause{
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 		dal.Orderby("created DESC"),
 	}
 	err := db.All(&statusList, clauses...)
@@ -82,23 +82,23 @@ func ExtractBugs(taskCtx core.SubTaskContext) error {
 			toolL.Type = "BUG"
 			toolL.StdType = "BUG"
 			toolL.StdStatus = getStdStatus(toolL.Status)
-			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceID, toolL.ID)
+			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceId, toolL.Id)
 			if strings.Contains(toolL.CurrentOwner, ";") {
 				toolL.CurrentOwner = strings.Split(toolL.CurrentOwner, ";")[0]
 			}
 			workSpaceBug := &models.TapdWorkSpaceBug{
 				ConnectionId: data.Connection.ID,
-				WorkspaceID:  toolL.WorkspaceID,
-				BugId:        toolL.ID,
+				WorkspaceId:  toolL.WorkspaceId,
+				BugId:        toolL.Id,
 			}
 			results := make([]interface{}, 0, 3)
 			results = append(results, &toolL, workSpaceBug)
-			if toolL.IterationID != 0 {
+			if toolL.IterationId != 0 {
 				iterationBug := &models.TapdIterationBug{
 					ConnectionId:   data.Connection.ID,
-					IterationId:    toolL.IterationID,
-					WorkspaceID:    toolL.WorkspaceID,
-					BugId:          toolL.ID,
+					IterationId:    toolL.IterationId,
+					WorkspaceId:    toolL.WorkspaceId,
+					BugId:          toolL.Id,
 					ResolutionDate: toolL.Resolved,
 					BugCreatedDate: toolL.Created,
 				}
@@ -108,7 +108,7 @@ func ExtractBugs(taskCtx core.SubTaskContext) error {
 				labelList := strings.Split(toolL.Label, "|")
 				for _, v := range labelList {
 					toolLIssueLabel := &models.TapdBugLabel{
-						BugId:     toolL.ID,
+						BugId:     toolL.Id,
 						LabelName: v,
 					}
 					results = append(results, toolLIssueLabel)
diff --git a/plugins/tapd/tasks/bug_label_convertor.go b/plugins/tapd/tasks/bug_label_convertor.go
index a9eaccc1..dbb56c30 100644
--- a/plugins/tapd/tasks/bug_label_convertor.go
+++ b/plugins/tapd/tasks/bug_label_convertor.go
@@ -40,7 +40,7 @@ func ConvertBugLabels(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Join(`left join _tool_tapd_workspace_bugs on _tool_tapd_workspace_bugs.bug_id = _tool_tapd_bug_labels.bug_id`),
 		dal.Where("_tool_tapd_workspace_bugs.workspace_id = ? and _tool_tapd_workspace_bugs.connection_id = ?",
-			data.Options.WorkspaceID, data.Options.ConnectionId),
+			data.Options.WorkspaceId, data.Options.ConnectionId),
 		dal.Orderby("bug_id ASC"),
 	}
 
diff --git a/plugins/tapd/tasks/bug_status_collector.go b/plugins/tapd/tasks/bug_status_collector.go
index 713ae903..02ef9134 100644
--- a/plugins/tapd/tasks/bug_status_collector.go
+++ b/plugins/tapd/tasks/bug_status_collector.go
@@ -40,7 +40,7 @@ func CollectBugStatus(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "workflows/status_map",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("system", "bug")
 			return query, nil
 		},
@@ -54,8 +54,8 @@ func CollectBugStatus(taskCtx core.SubTaskContext) error {
 }
 
 var CollectBugStatusMeta = core.SubTaskMeta{
-	Name:        "collectBugStatus",
-	EntryPoint:  CollectBugStatus,
-	Required:    true,
-	Description: "collect Tapd bugStatus",
+	Name:             "collectBugStatus",
+	EntryPoint:       CollectBugStatus,
+	EnabledByDefault: true,
+	Description:      "collect Tapd bugStatus",
 }
diff --git a/plugins/tapd/tasks/bug_status_extractor.go b/plugins/tapd/tasks/bug_status_extractor.go
index 234eb80d..a01a43e3 100644
--- a/plugins/tapd/tasks/bug_status_extractor.go
+++ b/plugins/tapd/tasks/bug_status_extractor.go
@@ -49,7 +49,7 @@ func ExtractBugStatus(taskCtx core.SubTaskContext) error {
 			for k, v := range statusRes.Data {
 				toolL := &models.TapdBugStatus{
 					ConnectionId: data.Connection.ID,
-					WorkspaceID:  data.Options.WorkspaceID,
+					WorkspaceId:  data.Options.WorkspaceId,
 					EnglishName:  k,
 					ChineseName:  v,
 					IsLastStep:   false,
diff --git a/plugins/tapd/tasks/iteration_collector.go b/plugins/tapd/tasks/iteration_collector.go
index 4f73e585..6a45f5f2 100644
--- a/plugins/tapd/tasks/iteration_collector.go
+++ b/plugins/tapd/tasks/iteration_collector.go
@@ -44,14 +44,14 @@ func CollectIterations(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdIteration
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Modified)
 			incremental = true
 		}
@@ -64,7 +64,7 @@ func CollectIterations(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "iterations",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("order", "created asc")
@@ -89,8 +89,8 @@ func CollectIterations(taskCtx core.SubTaskContext) error {
 }
 
 var CollectIterationMeta = core.SubTaskMeta{
-	Name:        "collectIterations",
-	EntryPoint:  CollectIterations,
-	Required:    true,
-	Description: "collect Tapd iterations",
+	Name:             "collectIterations",
+	EntryPoint:       CollectIterations,
+	EnabledByDefault: true,
+	Description:      "collect Tapd iterations",
 }
diff --git a/plugins/tapd/tasks/iteration_converter.go b/plugins/tapd/tasks/iteration_converter.go
index 1b91bfa7..8168d758 100644
--- a/plugins/tapd/tasks/iteration_converter.go
+++ b/plugins/tapd/tasks/iteration_converter.go
@@ -35,11 +35,11 @@ func ConvertIteration(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_ITERATION_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("collect board:%d", data.Options.WorkspaceID)
+	logger.Info("collect board:%d", data.Options.WorkspaceId)
 	iterIdGen := didgen.NewDomainIdGenerator(&models.TapdIteration{})
 	clauses := []dal.Clause{
 		dal.From(&models.TapdIteration{}),
-		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -54,13 +54,13 @@ func ConvertIteration(taskCtx core.SubTaskContext) error {
 		Convert: func(inputRow interface{}) ([]interface{}, error) {
 			iter := inputRow.(*models.TapdIteration)
 			domainIter := &ticket.Sprint{
-				DomainEntity:    domainlayer.DomainEntity{Id: iterIdGen.Generate(data.Connection.ID, iter.ID)},
-				Url:             fmt.Sprintf("https://www.tapd.cn/%d/prong/iterations/view/%d", iter.WorkspaceID, iter.ID),
+				DomainEntity:    domainlayer.DomainEntity{Id: iterIdGen.Generate(data.Connection.ID, iter.Id)},
+				Url:             fmt.Sprintf("https://www.tapd.cn/%d/prong/iterations/view/%d", iter.WorkspaceId, iter.Id),
 				Status:          strings.ToUpper(iter.Status),
 				Name:            iter.Name,
 				StartedDate:     (*time.Time)(&iter.Startdate),
 				EndedDate:       (*time.Time)(&iter.Enddate),
-				OriginalBoardID: WorkspaceIdGen.Generate(iter.ConnectionId, iter.WorkspaceID),
+				OriginalBoardID: WorkspaceIdGen.Generate(iter.ConnectionId, iter.WorkspaceId),
 				CompletedDate:   (*time.Time)(&iter.Completed),
 			}
 			results := make([]interface{}, 0)
diff --git a/plugins/tapd/tasks/iteration_extractor.go b/plugins/tapd/tasks/iteration_extractor.go
index ca7d9029..b5dfd893 100644
--- a/plugins/tapd/tasks/iteration_extractor.go
+++ b/plugins/tapd/tasks/iteration_extractor.go
@@ -50,8 +50,8 @@ func ExtractIterations(taskCtx core.SubTaskContext) error {
 			iter.ConnectionId = data.Connection.ID
 			workspaceIter := &models.TapdWorkspaceIteration{
 				ConnectionId: data.Connection.ID,
-				WorkspaceID:  iter.WorkspaceID,
-				IterationId:  iter.ID,
+				WorkspaceId:  iter.WorkspaceId,
+				IterationId:  iter.Id,
 			}
 			return []interface{}{
 				&iter, workspaceIter,
diff --git a/plugins/tapd/tasks/shared.go b/plugins/tapd/tasks/shared.go
index 8ec4d100..27e894ce 100644
--- a/plugins/tapd/tasks/shared.go
+++ b/plugins/tapd/tasks/shared.go
@@ -50,7 +50,7 @@ func GetTotalPagesFromResponse(r *http.Response, args *helper.ApiCollectorArgs)
 		return 0, err
 	}
 	query := url.Values{}
-	query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+	query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 	res, err := apiClient.Get(fmt.Sprintf("%s/count", r.Request.URL.Path), query, nil)
 	if err != nil {
 		return 0, err
@@ -71,7 +71,7 @@ func parseIterationChangelog(taskCtx core.SubTaskContext, old string, new string
 	clauses := []dal.Clause{
 		dal.From(&models.TapdIteration{}),
 		dal.Where("connection_id = ? and workspace_id = ? and name = ?",
-			data.Connection.ID, data.Options.WorkspaceID, old),
+			data.Connection.ID, data.Options.WorkspaceId, old),
 	}
 	err := db.First(iterationFrom, clauses...)
 	if err != nil {
@@ -82,13 +82,13 @@ func parseIterationChangelog(taskCtx core.SubTaskContext, old string, new string
 	clauses = []dal.Clause{
 		dal.From(&models.TapdIteration{}),
 		dal.Where("connection_id = ? and workspace_id = ? and name = ?",
-			data.Connection.ID, data.Options.WorkspaceID, new),
+			data.Connection.ID, data.Options.WorkspaceId, new),
 	}
 	err = db.First(iterationTo, clauses...)
 	if err != nil {
 		return 0, 0, err
 	}
-	return iterationFrom.ID, iterationTo.ID, nil
+	return iterationFrom.Id, iterationTo.Id, nil
 }
 func GetRawMessageDirectFromResponse(res *http.Response) ([]json.RawMessage, error) {
 	body, err := ioutil.ReadAll(res.Body)
@@ -110,14 +110,14 @@ func GetRawMessageArrayFromResponse(res *http.Response) ([]json.RawMessage, erro
 type TapdApiParams struct {
 	ConnectionId uint64
 	CompanyId    uint64
-	WorkspaceID  uint64
+	WorkspaceId  uint64
 }
 
 func CreateRawDataSubTaskArgs(taskCtx core.SubTaskContext, rawTable string) (*helper.RawDataSubTaskArgs, *TapdTaskData) {
 	data := taskCtx.GetData().(*TapdTaskData)
 	var params = TapdApiParams{
 		ConnectionId: data.Connection.ID,
-		WorkspaceID:  data.Options.WorkspaceID,
+		WorkspaceId:  data.Options.WorkspaceId,
 	}
 	if data.Options.CompanyId != 0 {
 		params.CompanyId = data.Options.CompanyId
diff --git a/plugins/tapd/tasks/story_bug_collector.go b/plugins/tapd/tasks/story_bug_collector.go
index 854fb782..ea5acd99 100644
--- a/plugins/tapd/tasks/story_bug_collector.go
+++ b/plugins/tapd/tasks/story_bug_collector.go
@@ -39,7 +39,7 @@ func CollectStoryBugs(taskCtx core.SubTaskContext) error {
 
 	clauses := []dal.Clause{
 		dal.From(&models.TapdStory{}),
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -58,7 +58,7 @@ func CollectStoryBugs(taskCtx core.SubTaskContext) error {
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			input := reqData.Input.(*SimpleStory)
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("story_id", fmt.Sprintf("%v", input.Id))
 			return query, nil
 		},
@@ -72,8 +72,8 @@ func CollectStoryBugs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryBugMeta = core.SubTaskMeta{
-	Name:        "collectStoryBugs",
-	EntryPoint:  CollectStoryBugs,
-	Required:    true,
-	Description: "collect Tapd storyBugs",
+	Name:             "collectStoryBugs",
+	EntryPoint:       CollectStoryBugs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd storyBugs",
 }
diff --git a/plugins/tapd/tasks/story_category_collector.go b/plugins/tapd/tasks/story_category_collector.go
index 0f1acfeb..99d7ae7f 100644
--- a/plugins/tapd/tasks/story_category_collector.go
+++ b/plugins/tapd/tasks/story_category_collector.go
@@ -41,7 +41,7 @@ func CollectStoryCategories(taskCtx core.SubTaskContext) error {
 		UrlTemplate: "story_categories",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			return query, nil
 		},
 		ResponseParser: func(res *http.Response) ([]json.RawMessage, error) {
@@ -60,8 +60,8 @@ func CollectStoryCategories(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryCategoriesMeta = core.SubTaskMeta{
-	Name:        "collectStoryCategories",
-	EntryPoint:  CollectStoryCategories,
-	Required:    true,
-	Description: "collect Tapd StoryCategories",
+	Name:             "collectStoryCategories",
+	EntryPoint:       CollectStoryCategories,
+	EnabledByDefault: true,
+	Description:      "collect Tapd StoryCategories",
 }
diff --git a/plugins/tapd/tasks/story_changelog_collector.go b/plugins/tapd/tasks/story_changelog_collector.go
index 69bbffbb..75133a9b 100644
--- a/plugins/tapd/tasks/story_changelog_collector.go
+++ b/plugins/tapd/tasks/story_changelog_collector.go
@@ -42,14 +42,14 @@ func CollectStoryChangelogs(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdStoryChangelog
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -63,7 +63,7 @@ func CollectStoryChangelogs(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "story_changes",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("order", "created asc")
@@ -82,8 +82,8 @@ func CollectStoryChangelogs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryChangelogMeta = core.SubTaskMeta{
-	Name:        "collectStoryChangelogs",
-	EntryPoint:  CollectStoryChangelogs,
-	Required:    true,
-	Description: "collect Tapd storyChangelogs",
+	Name:             "collectStoryChangelogs",
+	EntryPoint:       CollectStoryChangelogs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd storyChangelogs",
 }
diff --git a/plugins/tapd/tasks/story_changelog_converter.go b/plugins/tapd/tasks/story_changelog_converter.go
index 541f779c..132a8851 100644
--- a/plugins/tapd/tasks/story_changelog_converter.go
+++ b/plugins/tapd/tasks/story_changelog_converter.go
@@ -34,16 +34,16 @@ import (
 
 type StoryChangelogItemResult struct {
 	ConnectionId      uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
-	WorkspaceID       uint64    `json:"workspace_id"`
-	WorkitemTypeID    uint64    `json:"workitem_type_id"`
+	Id                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
+	WorkspaceId       uint64    `json:"workspace_id"`
+	WorkitemTypeId    uint64    `json:"workitem_type_id"`
 	Creator           string    `json:"creator"`
 	Created           time.Time `json:"created"`
 	ChangeSummary     string    `json:"change_summary"`
 	Comment           string    `json:"comment"`
 	EntityType        string    `json:"entity_type"`
 	ChangeType        string    `json:"change_type"`
-	StoryID           uint64    `json:"story_id"`
+	StoryId           uint64    `json:"story_id"`
 	ChangelogId       uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
 	Field             string    `json:"field" gorm:"primaryKey;type:varchar(255)"`
 	ValueBeforeParsed string    `json:"value_before"`
@@ -57,14 +57,14 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_STORY_CHANGELOG_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert changelog :%d", data.Options.WorkspaceID)
+	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdStoryChangelog{})
 
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.story_id, tc.author, _tool_tapd_story_changelog_items.*"),
 		dal.From(&models.TapdStoryChangelogItem{}),
 		dal.Join("left join _tool_tapd_story_changelogs tc on tc.id = _tool_tapd_story_changelog_items.changelog_id "),
-		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 		dal.Orderby("created DESC"),
 	}
 
@@ -81,10 +81,10 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error {
 			cl := inputRow.(*StoryChangelogItemResult)
 			domainCl := &ticket.Changelog{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Connection.ID, cl.ID), cl.Field),
+					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Connection.ID, cl.Id), cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.StoryID),
-				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceID, cl.Creator),
+				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.StoryId),
+				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceId, cl.Creator),
 				AuthorName:        cl.Creator,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,
diff --git a/plugins/tapd/tasks/story_changelog_extractor.go b/plugins/tapd/tasks/story_changelog_extractor.go
index 3bc3ac4b..7ec2fc82 100644
--- a/plugins/tapd/tasks/story_changelog_extractor.go
+++ b/plugins/tapd/tasks/story_changelog_extractor.go
@@ -66,14 +66,14 @@ func ExtractStoryChangelog(taskCtx core.SubTaskContext) error {
 					}
 					for k, v := range valueAfterMap.(map[string]interface{}) {
 						item.ConnectionId = data.Connection.ID
-						item.ChangelogId = storyChangelog.ID
+						item.ChangelogId = storyChangelog.Id
 						item.Field = k
 						item.ValueAfterParsed = v.(string)
 						item.ValueBeforeParsed = valueBeforeMap[k]
 					}
 				default:
 					item.ConnectionId = data.Connection.ID
-					item.ChangelogId = storyChangelog.ID
+					item.ChangelogId = storyChangelog.Id
 					item.Field = fc.Field
 					item.ValueAfterParsed = strings.Trim(string(fc.ValueAfterParsed), `"`)
 					item.ValueBeforeParsed = strings.Trim(string(fc.ValueBeforeParsed), `"`)
diff --git a/plugins/tapd/tasks/story_collector.go b/plugins/tapd/tasks/story_collector.go
index dd15f9df..23eaf627 100644
--- a/plugins/tapd/tasks/story_collector.go
+++ b/plugins/tapd/tasks/story_collector.go
@@ -42,14 +42,14 @@ func CollectStorys(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdStory
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("modified DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Modified)
 			incremental = true
 		}
@@ -62,7 +62,7 @@ func CollectStorys(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "stories",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("fields", "labels")
@@ -82,8 +82,8 @@ func CollectStorys(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryMeta = core.SubTaskMeta{
-	Name:        "collectStorys",
-	EntryPoint:  CollectStorys,
-	Required:    true,
-	Description: "collect Tapd stories",
+	Name:             "collectStorys",
+	EntryPoint:       CollectStorys,
+	EnabledByDefault: true,
+	Description:      "collect Tapd stories",
 }
diff --git a/plugins/tapd/tasks/story_commit_collector.go b/plugins/tapd/tasks/story_commit_collector.go
index 5650b8c6..e2986881 100644
--- a/plugins/tapd/tasks/story_commit_collector.go
+++ b/plugins/tapd/tasks/story_commit_collector.go
@@ -50,14 +50,14 @@ func CollectStoryCommits(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdStoryCommit
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -66,7 +66,7 @@ func CollectStoryCommits(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Select("id"),
 		dal.From(&models.TapdStory{}),
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 	}
 	if since != nil {
 		clauses = append(clauses, dal.Where("modified > ?", since))
@@ -89,7 +89,7 @@ func CollectStoryCommits(taskCtx core.SubTaskContext) error {
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			input := reqData.Input.(*SimpleStory)
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("type", "story")
 			query.Set("object_id", fmt.Sprintf("%v", input.Id))
 			query.Set("order", "created asc")
@@ -118,8 +118,8 @@ func CollectStoryCommits(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryCommitMeta = core.SubTaskMeta{
-	Name:        "collectStoryCommits",
-	EntryPoint:  CollectStoryCommits,
-	Required:    true,
-	Description: "collect Tapd issueCommits",
+	Name:             "collectStoryCommits",
+	EntryPoint:       CollectStoryCommits,
+	EnabledByDefault: true,
+	Description:      "collect Tapd issueCommits",
 }
diff --git a/plugins/tapd/tasks/story_commit_converter.go b/plugins/tapd/tasks/story_commit_converter.go
index 7397bf82..f762f6d2 100644
--- a/plugins/tapd/tasks/story_commit_converter.go
+++ b/plugins/tapd/tasks/story_commit_converter.go
@@ -30,11 +30,11 @@ func ConvertStoryCommit(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_STORY_COMMIT_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 
 	clauses := []dal.Clause{
 		dal.From(&models.TapdStoryCommit{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 	cursor, err := db.Cursor(clauses...)
 	if err != nil {
@@ -49,7 +49,7 @@ func ConvertStoryCommit(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdStoryCommit)
 			domainL := &crossdomain.IssueCommit{
 				IssueId:   IssueIdGen.Generate(data.Connection.ID, toolL.StoryId),
-				CommitSha: toolL.CommitID,
+				CommitSha: toolL.CommitId,
 			}
 
 			return []interface{}{
diff --git a/plugins/tapd/tasks/story_commit_extractor.go b/plugins/tapd/tasks/story_commit_extractor.go
index 39982fa0..9649b57d 100644
--- a/plugins/tapd/tasks/story_commit_extractor.go
+++ b/plugins/tapd/tasks/story_commit_extractor.go
@@ -51,7 +51,7 @@ func ExtractStoryCommits(taskCtx core.SubTaskContext) error {
 				return nil, err
 			}
 			toolL.StoryId = issue.Id
-			toolL.WorkspaceID = data.Options.WorkspaceID
+			toolL.WorkspaceId = data.Options.WorkspaceId
 			results := make([]interface{}, 0, 1)
 			results = append(results, &toolL)
 
diff --git a/plugins/tapd/tasks/story_converter.go b/plugins/tapd/tasks/story_converter.go
index 764feab8..919811a2 100644
--- a/plugins/tapd/tasks/story_converter.go
+++ b/plugins/tapd/tasks/story_converter.go
@@ -34,11 +34,11 @@ func ConvertStory(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_STORY_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 
 	clauses := []dal.Clause{
 		dal.From(&models.TapdStory{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -54,10 +54,10 @@ func ConvertStory(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdStory)
 			domainL := &ticket.Issue{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.ID),
+					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.Id),
 				},
 				Url:                  toolL.Url,
-				IssueKey:             strconv.FormatUint(toolL.ID, 10),
+				IssueKey:             strconv.FormatUint(toolL.Id, 10),
 				Title:                toolL.Name,
 				Type:                 toolL.StdType,
 				Status:               toolL.StdStatus,
@@ -66,12 +66,12 @@ func ConvertStory(taskCtx core.SubTaskContext) error {
 				ResolutionDate:       (*time.Time)(&toolL.Completed),
 				CreatedDate:          (*time.Time)(&toolL.Created),
 				UpdatedDate:          (*time.Time)(&toolL.Modified),
-				ParentIssueId:        IssueIdGen.Generate(toolL.ConnectionId, toolL.ParentID),
+				ParentIssueId:        IssueIdGen.Generate(toolL.ConnectionId, toolL.ParentId),
 				Priority:             toolL.Priority,
 				TimeRemainingMinutes: int64(toolL.Remain),
-				CreatorId:            UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Creator),
+				CreatorId:            UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Creator),
 				CreatorName:          toolL.Creator,
-				AssigneeId:           UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Owner),
+				AssigneeId:           UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Owner),
 				AssigneeName:         toolL.Owner,
 				Severity:             "",
 				Component:            toolL.Feature,
@@ -81,11 +81,11 @@ func ConvertStory(taskCtx core.SubTaskContext) error {
 			}
 			results := make([]interface{}, 0, 2)
 			boardIssue := &ticket.BoardIssue{
-				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceID),
+				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceId),
 				IssueId: domainL.Id,
 			}
 			sprintIssue := &ticket.SprintIssue{
-				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationID),
+				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationId),
 				IssueId:  domainL.Id,
 			}
 			results = append(results, domainL, boardIssue, sprintIssue)
diff --git a/plugins/tapd/tasks/story_custom_fields_collector.go b/plugins/tapd/tasks/story_custom_fields_collector.go
index b7f9d9c2..cbf2b492 100644
--- a/plugins/tapd/tasks/story_custom_fields_collector.go
+++ b/plugins/tapd/tasks/story_custom_fields_collector.go
@@ -41,7 +41,7 @@ func CollectStoryCustomFields(taskCtx core.SubTaskContext) error {
 		UrlTemplate: "stories/custom_fields_settings",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			return query, nil
 		},
 		ResponseParser: func(res *http.Response) ([]json.RawMessage, error) {
@@ -60,8 +60,8 @@ func CollectStoryCustomFields(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryCustomFieldsMeta = core.SubTaskMeta{
-	Name:        "collectStoryCustomFields",
-	EntryPoint:  CollectStoryCustomFields,
-	Required:    true,
-	Description: "collect Tapd StoryCustomFields",
+	Name:             "collectStoryCustomFields",
+	EntryPoint:       CollectStoryCustomFields,
+	EnabledByDefault: true,
+	Description:      "collect Tapd StoryCustomFields",
 }
diff --git a/plugins/tapd/tasks/story_extractor.go b/plugins/tapd/tasks/story_extractor.go
index 68446ae3..725a2907 100644
--- a/plugins/tapd/tasks/story_extractor.go
+++ b/plugins/tapd/tasks/story_extractor.go
@@ -42,7 +42,7 @@ func ExtractStories(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	statusList := make([]*models.TapdStoryStatus, 0)
 	clauses := []dal.Clause{
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 		dal.Orderby("created DESC"),
 	}
 	err := db.All(&statusList, clauses...)
@@ -79,23 +79,23 @@ func ExtractStories(taskCtx core.SubTaskContext) error {
 			toolL.ConnectionId = data.Connection.ID
 			toolL.StdType = "REQUIREMENT"
 			toolL.StdStatus = getStdStatus(toolL.Status)
-			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceID, toolL.ID)
+			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceId, toolL.Id)
 			if strings.Contains(toolL.Owner, ";") {
 				toolL.Owner = strings.Split(toolL.Owner, ";")[0]
 			}
 			workSpaceStory := &models.TapdWorkSpaceStory{
 				ConnectionId: data.Connection.ID,
-				WorkspaceID:  toolL.WorkspaceID,
-				StoryId:      toolL.ID,
+				WorkspaceId:  toolL.WorkspaceId,
+				StoryId:      toolL.Id,
 			}
 			results := make([]interface{}, 0, 3)
 			results = append(results, &toolL, workSpaceStory)
-			if toolL.IterationID != 0 {
+			if toolL.IterationId != 0 {
 				iterationStory := &models.TapdIterationStory{
 					ConnectionId:     data.Connection.ID,
-					IterationId:      toolL.IterationID,
-					StoryId:          toolL.ID,
-					WorkspaceID:      toolL.WorkspaceID,
+					IterationId:      toolL.IterationId,
+					StoryId:          toolL.Id,
+					WorkspaceId:      toolL.WorkspaceId,
 					ResolutionDate:   toolL.Completed,
 					StoryCreatedDate: toolL.Created,
 				}
@@ -105,7 +105,7 @@ func ExtractStories(taskCtx core.SubTaskContext) error {
 				labelList := strings.Split(toolL.Label, "|")
 				for _, v := range labelList {
 					toolLIssueLabel := &models.TapdStoryLabel{
-						StoryId:   toolL.ID,
+						StoryId:   toolL.Id,
 						LabelName: v,
 					}
 					results = append(results, toolLIssueLabel)
diff --git a/plugins/tapd/tasks/story_label_convertor.go b/plugins/tapd/tasks/story_label_convertor.go
index 0f21cd6b..79295fc6 100644
--- a/plugins/tapd/tasks/story_label_convertor.go
+++ b/plugins/tapd/tasks/story_label_convertor.go
@@ -41,7 +41,7 @@ func ConvertStoryLabels(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Join(`left join _tool_tapd_workspace_stories on _tool_tapd_workspace_stories.story_id = _tool_tapd_story_labels.story_id`),
 		dal.Where("_tool_tapd_workspace_stories.workspace_id = ? and _tool_tapd_workspace_stories.connection_id = ?",
-			data.Options.WorkspaceID, data.Options.ConnectionId),
+			data.Options.WorkspaceId, data.Options.ConnectionId),
 		dal.Orderby("story_id ASC"),
 	}
 
diff --git a/plugins/tapd/tasks/story_status_collector.go b/plugins/tapd/tasks/story_status_collector.go
index 2938d1aa..740b867b 100644
--- a/plugins/tapd/tasks/story_status_collector.go
+++ b/plugins/tapd/tasks/story_status_collector.go
@@ -40,7 +40,7 @@ func CollectStoryStatus(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "workflows/status_map",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("system", "story")
 			return query, nil
 		},
@@ -54,8 +54,8 @@ func CollectStoryStatus(taskCtx core.SubTaskContext) error {
 }
 
 var CollectStoryStatusMeta = core.SubTaskMeta{
-	Name:        "collectStoryStatus",
-	EntryPoint:  CollectStoryStatus,
-	Required:    true,
-	Description: "collect Tapd bugStatus",
+	Name:             "collectStoryStatus",
+	EntryPoint:       CollectStoryStatus,
+	EnabledByDefault: true,
+	Description:      "collect Tapd bugStatus",
 }
diff --git a/plugins/tapd/tasks/story_status_extractor.go b/plugins/tapd/tasks/story_status_extractor.go
index 7cca80ed..03055f6e 100644
--- a/plugins/tapd/tasks/story_status_extractor.go
+++ b/plugins/tapd/tasks/story_status_extractor.go
@@ -49,7 +49,7 @@ func ExtractStoryStatus(taskCtx core.SubTaskContext) error {
 			for k, v := range storyStatusRes.Data {
 				toolL := &models.TapdStoryStatus{
 					ConnectionId: data.Connection.ID,
-					WorkspaceID:  data.Options.WorkspaceID,
+					WorkspaceId:  data.Options.WorkspaceId,
 					EnglishName:  k,
 					ChineseName:  v,
 					IsLastStep:   false,
diff --git a/plugins/tapd/tasks/task_changelog_collector.go b/plugins/tapd/tasks/task_changelog_collector.go
index 4e3a010e..e0b425f2 100644
--- a/plugins/tapd/tasks/task_changelog_collector.go
+++ b/plugins/tapd/tasks/task_changelog_collector.go
@@ -42,14 +42,14 @@ func CollectTaskChangelogs(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdTaskChangelog
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -63,7 +63,7 @@ func CollectTaskChangelogs(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "task_changes",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("order", "created asc")
@@ -82,8 +82,8 @@ func CollectTaskChangelogs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectTaskChangelogMeta = core.SubTaskMeta{
-	Name:        "collectTaskChangelogs",
-	EntryPoint:  CollectTaskChangelogs,
-	Required:    true,
-	Description: "collect Tapd taskChangelogs",
+	Name:             "collectTaskChangelogs",
+	EntryPoint:       CollectTaskChangelogs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd taskChangelogs",
 }
diff --git a/plugins/tapd/tasks/task_changelog_converter.go b/plugins/tapd/tasks/task_changelog_converter.go
index 641b0fff..935d6c1a 100644
--- a/plugins/tapd/tasks/task_changelog_converter.go
+++ b/plugins/tapd/tasks/task_changelog_converter.go
@@ -34,9 +34,9 @@ import (
 
 type TaskChangelogItemResult struct {
 	ConnectionId      uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-	ID                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
-	WorkspaceID       uint64    `json:"workspace_id"`
-	WorkitemTypeID    uint64    `json:"workitem_type_id"`
+	Id                uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL" json:"id"`
+	WorkspaceId       uint64    `json:"workspace_id"`
+	WorkitemTypeId    uint64    `json:"workitem_type_id"`
 	Creator           string    `json:"creator"`
 	Created           time.Time `json:"created"`
 	ChangeSummary     string    `json:"change_summary"`
@@ -44,7 +44,7 @@ type TaskChangelogItemResult struct {
 	EntityType        string    `json:"entity_type"`
 	ChangeType        string    `json:"change_type"`
 	ChangeTypeText    string    `json:"change_type_text"`
-	TaskID            uint64    `json:"task_id"`
+	TaskId            uint64    `json:"task_id"`
 	ChangelogId       uint64    `gorm:"primaryKey;type:BIGINT  NOT NULL"`
 	Field             string    `json:"field" gorm:"primaryKey;type:varchar(255)"`
 	ValueBeforeParsed string    `json:"value_before"`
@@ -58,14 +58,14 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_TASK_CHANGELOG_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert changelog :%d", data.Options.WorkspaceID)
+	logger.Info("convert changelog :%d", data.Options.WorkspaceId)
 	clIdGen := didgen.NewDomainIdGenerator(&models.TapdTaskChangelog{})
 
 	clauses := []dal.Clause{
 		dal.Select("tc.created, tc.id, tc.workspace_id, tc.task_id, tc.author, _tool_tapd_task_changelog_items.*"),
 		dal.From(&models.TapdTaskChangelogItem{}),
 		dal.Join("left join _tool_tapd_task_changelogs tc on tc.id = _tool_tapd_task_changelog_items.changelog_id "),
-		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("tc.connection_id = ? AND tc.workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 		dal.Orderby("created DESC"),
 	}
 	cursor, err := db.Cursor(clauses...)
@@ -81,10 +81,10 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
 			cl := inputRow.(*TaskChangelogItemResult)
 			domainCl := &ticket.Changelog{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Connection.ID, cl.ID), cl.Field),
+					Id: fmt.Sprintf("%s:%s", clIdGen.Generate(data.Connection.ID, cl.Id), cl.Field),
 				},
-				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.TaskID),
-				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceID, cl.Creator),
+				IssueId:           IssueIdGen.Generate(data.Connection.ID, cl.TaskId),
+				AuthorId:          UserIdGen.Generate(data.Connection.ID, data.Options.WorkspaceId, cl.Creator),
 				AuthorName:        cl.Creator,
 				FieldId:           cl.Field,
 				FieldName:         cl.Field,
diff --git a/plugins/tapd/tasks/task_changelog_extractor.go b/plugins/tapd/tasks/task_changelog_extractor.go
index 59688f25..1e0a77c2 100644
--- a/plugins/tapd/tasks/task_changelog_extractor.go
+++ b/plugins/tapd/tasks/task_changelog_extractor.go
@@ -66,7 +66,7 @@ func ExtractTaskChangelog(taskCtx core.SubTaskContext) error {
 					}
 					for k, v := range valueAfterMap.(map[string]interface{}) {
 						item.ConnectionId = data.Connection.ID
-						item.ChangelogId = taskChangelog.ID
+						item.ChangelogId = taskChangelog.Id
 						item.Field = k
 						item.ValueAfterParsed = v.(string)
 						item.ValueBeforeParsed = valueBeforeMap[k]
@@ -74,7 +74,7 @@ func ExtractTaskChangelog(taskCtx core.SubTaskContext) error {
 					}
 				default:
 					item.ConnectionId = data.Connection.ID
-					item.ChangelogId = taskChangelog.ID
+					item.ChangelogId = taskChangelog.Id
 					item.Field = fc.Field
 					item.ValueAfterParsed = strings.Trim(string(fc.ValueAfterParsed), `"`)
 					item.ValueBeforeParsed = strings.Trim(string(fc.ValueBeforeParsed), `"`)
diff --git a/plugins/tapd/tasks/task_collector.go b/plugins/tapd/tasks/task_collector.go
index 069ec3f1..e52e4158 100644
--- a/plugins/tapd/tasks/task_collector.go
+++ b/plugins/tapd/tasks/task_collector.go
@@ -44,14 +44,14 @@ func CollectTasks(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdTask
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("modified DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Modified)
 			incremental = true
 		}
@@ -65,7 +65,7 @@ func CollectTasks(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "tasks",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("fields", "labels")
@@ -85,8 +85,8 @@ func CollectTasks(taskCtx core.SubTaskContext) error {
 }
 
 var CollectTaskMeta = core.SubTaskMeta{
-	Name:        "collectTasks",
-	EntryPoint:  CollectTasks,
-	Required:    true,
-	Description: "collect Tapd tasks",
+	Name:             "collectTasks",
+	EntryPoint:       CollectTasks,
+	EnabledByDefault: true,
+	Description:      "collect Tapd tasks",
 }
diff --git a/plugins/tapd/tasks/task_commit_collector.go b/plugins/tapd/tasks/task_commit_collector.go
index 7c6ebaf4..1c546fd5 100644
--- a/plugins/tapd/tasks/task_commit_collector.go
+++ b/plugins/tapd/tasks/task_commit_collector.go
@@ -50,14 +50,14 @@ func CollectTaskCommits(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdTaskCommit
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -66,7 +66,7 @@ func CollectTaskCommits(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Select("id"),
 		dal.From(&models.TapdTask{}),
-		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId),
 	}
 	if since != nil {
 		clauses = append(clauses, dal.Where("modified > ?", since))
@@ -89,7 +89,7 @@ func CollectTaskCommits(taskCtx core.SubTaskContext) error {
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			input := reqData.Input.(*SimpleTask)
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("type", "task")
 			query.Set("object_id", fmt.Sprintf("%v", input.Id))
 			query.Set("order", "created asc")
@@ -117,8 +117,8 @@ func CollectTaskCommits(taskCtx core.SubTaskContext) error {
 }
 
 var CollectTaskCommitMeta = core.SubTaskMeta{
-	Name:        "collectTaskCommits",
-	EntryPoint:  CollectTaskCommits,
-	Required:    true,
-	Description: "collect Tapd issueCommits",
+	Name:             "collectTaskCommits",
+	EntryPoint:       CollectTaskCommits,
+	EnabledByDefault: true,
+	Description:      "collect Tapd issueCommits",
 }
diff --git a/plugins/tapd/tasks/task_commit_converter.go b/plugins/tapd/tasks/task_commit_converter.go
index d0c58cfb..2d0884e7 100644
--- a/plugins/tapd/tasks/task_commit_converter.go
+++ b/plugins/tapd/tasks/task_commit_converter.go
@@ -30,11 +30,11 @@ func ConvertTaskCommit(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_TASK_COMMIT_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 
 	clauses := []dal.Clause{
 		dal.From(&models.TapdTaskCommit{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 	cursor, err := db.Cursor(clauses...)
 	if err != nil {
@@ -49,7 +49,7 @@ func ConvertTaskCommit(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdTaskCommit)
 			domainL := &crossdomain.IssueCommit{
 				IssueId:   IssueIdGen.Generate(data.Connection.ID, toolL.TaskId),
-				CommitSha: toolL.CommitID,
+				CommitSha: toolL.CommitId,
 			}
 
 			return []interface{}{
diff --git a/plugins/tapd/tasks/task_commit_extractor.go b/plugins/tapd/tasks/task_commit_extractor.go
index fe563c45..a1f745b3 100644
--- a/plugins/tapd/tasks/task_commit_extractor.go
+++ b/plugins/tapd/tasks/task_commit_extractor.go
@@ -51,7 +51,7 @@ func ExtractTaskCommits(taskCtx core.SubTaskContext) error {
 				return nil, err
 			}
 			toolL.TaskId = issue.Id
-			toolL.WorkspaceID = data.Options.WorkspaceID
+			toolL.WorkspaceId = data.Options.WorkspaceId
 			results := make([]interface{}, 0, 1)
 			results = append(results, &toolL)
 
diff --git a/plugins/tapd/tasks/task_converter.go b/plugins/tapd/tasks/task_converter.go
index f6daf8c7..001cfaf8 100644
--- a/plugins/tapd/tasks/task_converter.go
+++ b/plugins/tapd/tasks/task_converter.go
@@ -34,11 +34,11 @@ func ConvertTask(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_TASK_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 
 	clauses := []dal.Clause{
 		dal.From(&models.TapdTask{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -54,10 +54,10 @@ func ConvertTask(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdTask)
 			domainL := &ticket.Issue{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.ID),
+					Id: IssueIdGen.Generate(toolL.ConnectionId, toolL.Id),
 				},
 				Url:            toolL.Url,
-				IssueKey:       strconv.FormatUint(toolL.ID, 10),
+				IssueKey:       strconv.FormatUint(toolL.Id, 10),
 				Title:          toolL.Name,
 				Description:    toolL.Description,
 				Type:           toolL.StdType,
@@ -66,11 +66,11 @@ func ConvertTask(taskCtx core.SubTaskContext) error {
 				ResolutionDate: (*time.Time)(&toolL.Completed),
 				CreatedDate:    (*time.Time)(&toolL.Created),
 				UpdatedDate:    (*time.Time)(&toolL.Modified),
-				ParentIssueId:  IssueIdGen.Generate(toolL.ConnectionId, toolL.StoryID),
+				ParentIssueId:  IssueIdGen.Generate(toolL.ConnectionId, toolL.StoryId),
 				Priority:       toolL.Priority,
-				CreatorId:      UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Creator),
+				CreatorId:      UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Creator),
 				CreatorName:    toolL.Creator,
-				AssigneeId:     UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Owner),
+				AssigneeId:     UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Owner),
 				AssigneeName:   toolL.Owner,
 			}
 			if domainL.ResolutionDate != nil && domainL.CreatedDate != nil {
@@ -78,11 +78,11 @@ func ConvertTask(taskCtx core.SubTaskContext) error {
 			}
 			results := make([]interface{}, 0, 2)
 			boardIssue := &ticket.BoardIssue{
-				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceID),
+				BoardId: WorkspaceIdGen.Generate(toolL.WorkspaceId),
 				IssueId: domainL.Id,
 			}
 			sprintIssue := &ticket.SprintIssue{
-				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationID),
+				SprintId: IterIdGen.Generate(data.Connection.ID, toolL.IterationId),
 				IssueId:  domainL.Id,
 			}
 			results = append(results, domainL, boardIssue, sprintIssue)
diff --git a/plugins/tapd/tasks/task_custom_fields_collector.go b/plugins/tapd/tasks/task_custom_fields_collector.go
index 6be3027e..e6ebe505 100644
--- a/plugins/tapd/tasks/task_custom_fields_collector.go
+++ b/plugins/tapd/tasks/task_custom_fields_collector.go
@@ -41,7 +41,7 @@ func CollectTaskCustomFields(taskCtx core.SubTaskContext) error {
 		UrlTemplate: "tasks/custom_fields_settings",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			return query, nil
 		},
 		ResponseParser: func(res *http.Response) ([]json.RawMessage, error) {
@@ -60,8 +60,8 @@ func CollectTaskCustomFields(taskCtx core.SubTaskContext) error {
 }
 
 var CollectTaskCustomFieldsMeta = core.SubTaskMeta{
-	Name:        "collectTaskCustomFields",
-	EntryPoint:  CollectTaskCustomFields,
-	Required:    true,
-	Description: "collect Tapd TaskCustomFields",
+	Name:             "collectTaskCustomFields",
+	EntryPoint:       CollectTaskCustomFields,
+	EnabledByDefault: true,
+	Description:      "collect Tapd TaskCustomFields",
 }
diff --git a/plugins/tapd/tasks/task_data.go b/plugins/tapd/tasks/task_data.go
index 77f299d1..587b3168 100644
--- a/plugins/tapd/tasks/task_data.go
+++ b/plugins/tapd/tasks/task_data.go
@@ -25,10 +25,10 @@ import (
 )
 
 type TapdOptions struct {
-	ConnectionId uint64   `json:"connectionId"`
-	WorkspaceID  uint64   `json:"workspceId"`
-	CompanyId    uint64   `json:"companyId"`
-	Tasks        []string `json:"tasks,omitempty"`
+	ConnectionId uint64   `mapstruct:"connectionId"`
+	WorkspaceId  uint64   `mapstruct:"workspaceId"`
+	CompanyId    uint64   `mapstruct:"companyId"`
+	Tasks        []string `mapstruct:"tasks,omitempty"`
 	Since        string
 }
 
diff --git a/plugins/tapd/tasks/task_extractor.go b/plugins/tapd/tasks/task_extractor.go
index 59d84cd4..20e0c7b0 100644
--- a/plugins/tapd/tasks/task_extractor.go
+++ b/plugins/tapd/tasks/task_extractor.go
@@ -68,21 +68,21 @@ func ExtractTasks(taskCtx core.SubTaskContext) error {
 			if strings.Contains(toolL.Owner, ";") {
 				toolL.Owner = strings.Split(toolL.Owner, ";")[0]
 			}
-			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceID, toolL.ID)
+			toolL.Url = fmt.Sprintf("https://www.tapd.cn/%d/prong/stories/view/%d", toolL.WorkspaceId, toolL.Id)
 
 			workSpaceTask := &models.TapdWorkSpaceTask{
 				ConnectionId: data.Connection.ID,
-				WorkspaceID:  toolL.WorkspaceID,
-				TaskId:       toolL.ID,
+				WorkspaceId:  toolL.WorkspaceId,
+				TaskId:       toolL.Id,
 			}
 			results := make([]interface{}, 0, 3)
 			results = append(results, &toolL, workSpaceTask)
-			if toolL.IterationID != 0 {
+			if toolL.IterationId != 0 {
 				iterationTask := &models.TapdIterationTask{
 					ConnectionId:    data.Connection.ID,
-					IterationId:     toolL.IterationID,
-					TaskId:          toolL.ID,
-					WorkspaceID:     toolL.WorkspaceID,
+					IterationId:     toolL.IterationId,
+					TaskId:          toolL.Id,
+					WorkspaceId:     toolL.WorkspaceId,
 					ResolutionDate:  toolL.Completed,
 					TaskCreatedDate: toolL.Created,
 				}
@@ -92,7 +92,7 @@ func ExtractTasks(taskCtx core.SubTaskContext) error {
 				labelList := strings.Split(toolL.Label, "|")
 				for _, v := range labelList {
 					toolLIssueLabel := &models.TapdTaskLabel{
-						TaskId:    toolL.ID,
+						TaskId:    toolL.Id,
 						LabelName: v,
 					}
 					results = append(results, toolLIssueLabel)
diff --git a/plugins/tapd/tasks/task_label_convertor.go b/plugins/tapd/tasks/task_label_convertor.go
index 639827a7..4222d3b2 100644
--- a/plugins/tapd/tasks/task_label_convertor.go
+++ b/plugins/tapd/tasks/task_label_convertor.go
@@ -41,7 +41,7 @@ func ConvertTaskLabels(taskCtx core.SubTaskContext) error {
 	clauses := []dal.Clause{
 		dal.Join(`left join _tool_tapd_workspace_tasks on _tool_tapd_workspace_tasks.task_id = _tool_tapd_task_labels.task_id`),
 		dal.Where("_tool_tapd_workspace_tasks.workspace_id = ? and _tool_tapd_workspace_tasks.connection_id = ?",
-			data.Options.WorkspaceID, data.Options.ConnectionId),
+			data.Options.WorkspaceId, data.Options.ConnectionId),
 		dal.Orderby("task_id ASC"),
 	}
 
diff --git a/plugins/tapd/tasks/user_collector.go b/plugins/tapd/tasks/user_collector.go
index 8d22786e..49bdbfe2 100644
--- a/plugins/tapd/tasks/user_collector.go
+++ b/plugins/tapd/tasks/user_collector.go
@@ -41,7 +41,7 @@ func CollectUsers(taskCtx core.SubTaskContext) error {
 		//PageSize:    100,
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			//query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			//query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			return query, nil
@@ -62,8 +62,8 @@ func CollectUsers(taskCtx core.SubTaskContext) error {
 }
 
 var CollectUserMeta = core.SubTaskMeta{
-	Name:        "collectUsers",
-	EntryPoint:  CollectUsers,
-	Required:    true,
-	Description: "collect Tapd users",
+	Name:             "collectUsers",
+	EntryPoint:       CollectUsers,
+	EnabledByDefault: true,
+	Description:      "collect Tapd users",
 }
diff --git a/plugins/tapd/tasks/user_converter.go b/plugins/tapd/tasks/user_converter.go
index 01b1108f..f5f5643e 100644
--- a/plugins/tapd/tasks/user_converter.go
+++ b/plugins/tapd/tasks/user_converter.go
@@ -31,10 +31,10 @@ func ConvertUser(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_USER_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 	clauses := []dal.Clause{
 		dal.From(&models.TapdUser{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -50,7 +50,7 @@ func ConvertUser(taskCtx core.SubTaskContext) error {
 			userTool := inputRow.(*models.TapdUser)
 			issue := &user.User{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: UserIdGen.Generate(userTool.ConnectionId, userTool.WorkspaceID, userTool.User),
+					Id: UserIdGen.Generate(userTool.ConnectionId, userTool.WorkspaceId, userTool.User),
 				},
 				Name: userTool.Name,
 			}
diff --git a/plugins/tapd/tasks/user_extractor.go b/plugins/tapd/tasks/user_extractor.go
index 0c7606c0..51ccfa67 100644
--- a/plugins/tapd/tasks/user_extractor.go
+++ b/plugins/tapd/tasks/user_extractor.go
@@ -47,7 +47,7 @@ func ExtractUsers(taskCtx core.SubTaskContext) error {
 			}
 			toolL := models.TapdUser{
 				ConnectionId: data.Connection.ID,
-				WorkspaceID:  data.Options.WorkspaceID,
+				WorkspaceId:  data.Options.WorkspaceId,
 				Name:         userRes.UserWorkspace.Name,
 				User:         userRes.UserWorkspace.User,
 			}
diff --git a/plugins/tapd/tasks/worklog_collector.go b/plugins/tapd/tasks/worklog_collector.go
index e6ee59bb..67b66647 100644
--- a/plugins/tapd/tasks/worklog_collector.go
+++ b/plugins/tapd/tasks/worklog_collector.go
@@ -42,14 +42,14 @@ func CollectWorklogs(taskCtx core.SubTaskContext) error {
 		// user didn't specify a time range to sync, try load from database
 		var latestUpdated models.TapdWorklog
 		clauses := []dal.Clause{
-			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+			dal.Where("connection_id = ? and workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 			dal.Orderby("created DESC"),
 		}
 		err := db.First(&latestUpdated, clauses...)
 		if err != nil {
 			return fmt.Errorf("failed to get latest tapd changelog record: %w", err)
 		}
-		if latestUpdated.ID > 0 {
+		if latestUpdated.Id > 0 {
 			since = (*time.Time)(&latestUpdated.Created)
 			incremental = true
 		}
@@ -62,7 +62,7 @@ func CollectWorklogs(taskCtx core.SubTaskContext) error {
 		UrlTemplate:        "timesheets",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			query.Set("order", "created asc")
@@ -81,8 +81,8 @@ func CollectWorklogs(taskCtx core.SubTaskContext) error {
 }
 
 var CollectWorklogMeta = core.SubTaskMeta{
-	Name:        "collectWorklogs",
-	EntryPoint:  CollectWorklogs,
-	Required:    true,
-	Description: "collect Tapd worklogs",
+	Name:             "collectWorklogs",
+	EntryPoint:       CollectWorklogs,
+	EnabledByDefault: true,
+	Description:      "collect Tapd worklogs",
 }
diff --git a/plugins/tapd/tasks/worklog_converter.go b/plugins/tapd/tasks/worklog_converter.go
index 8ea8ba62..0f2f1afb 100644
--- a/plugins/tapd/tasks/worklog_converter.go
+++ b/plugins/tapd/tasks/worklog_converter.go
@@ -33,11 +33,11 @@ func ConvertWorklog(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_WORKLOG_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("convert board:%d", data.Options.WorkspaceID)
+	logger.Info("convert board:%d", data.Options.WorkspaceId)
 	worklogIdGen := didgen.NewDomainIdGenerator(&models.TapdWorklog{})
 	clauses := []dal.Clause{
 		dal.From(&models.TapdWorklog{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -53,24 +53,24 @@ func ConvertWorklog(taskCtx core.SubTaskContext) error {
 			toolL := inputRow.(*models.TapdWorklog)
 			domainL := &ticket.IssueWorklog{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: worklogIdGen.Generate(data.Connection.ID, toolL.ID),
+					Id: worklogIdGen.Generate(data.Connection.ID, toolL.Id),
 				},
-				AuthorId:         UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceID, toolL.Owner),
+				AuthorId:         UserIdGen.Generate(data.Connection.ID, toolL.WorkspaceId, toolL.Owner),
 				Comment:          toolL.Memo,
 				TimeSpentMinutes: int(toolL.Timespent),
 				LoggedDate:       (*time.Time)(&toolL.Created),
-				//IssueId:          toolL.EntityID,
+				//IssueId:          toolL.EntityId,
 			}
 			switch toolL.EntityType {
 			case "TASK":
 				domainL.IssueId = didgen.
-					NewDomainIdGenerator(&models.TapdTask{}).Generate(toolL.EntityID)
+					NewDomainIdGenerator(&models.TapdTask{}).Generate(toolL.EntityId)
 			case "BUG":
 				domainL.IssueId = didgen.
-					NewDomainIdGenerator(&models.TapdBug{}).Generate(toolL.EntityID)
+					NewDomainIdGenerator(&models.TapdBug{}).Generate(toolL.EntityId)
 			case "STORY":
 				domainL.IssueId = didgen.
-					NewDomainIdGenerator(&models.TapdStory{}).Generate(toolL.EntityID)
+					NewDomainIdGenerator(&models.TapdStory{}).Generate(toolL.EntityId)
 			}
 			return []interface{}{
 				domainL,
diff --git a/plugins/tapd/tasks/workspace_collector.go b/plugins/tapd/tasks/workspace_collector.go
index feaf438e..30facf79 100644
--- a/plugins/tapd/tasks/workspace_collector.go
+++ b/plugins/tapd/tasks/workspace_collector.go
@@ -41,7 +41,7 @@ func CollectWorkspaces(taskCtx core.SubTaskContext) error {
 		UrlTemplate: "workspaces/sub_workspaces",
 		Query: func(reqData *helper.RequestData) (url.Values, error) {
 			query := url.Values{}
-			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceID))
+			query.Set("workspace_id", fmt.Sprintf("%v", data.Options.WorkspaceId))
 			//query.Set("page", fmt.Sprintf("%v", reqData.Pager.Page))
 			//query.Set("limit", fmt.Sprintf("%v", reqData.Pager.Size))
 			return query, nil
@@ -62,8 +62,8 @@ func CollectWorkspaces(taskCtx core.SubTaskContext) error {
 }
 
 var CollectWorkspaceMeta = core.SubTaskMeta{
-	Name:        "collectWorkspaces",
-	EntryPoint:  CollectWorkspaces,
-	Required:    true,
-	Description: "collect Tapd workspaces",
+	Name:             "collectWorkspaces",
+	EntryPoint:       CollectWorkspaces,
+	EnabledByDefault: true,
+	Description:      "collect Tapd workspaces",
 }
diff --git a/plugins/tapd/tasks/workspace_converter.go b/plugins/tapd/tasks/workspace_converter.go
index e2901807..71a35ba1 100644
--- a/plugins/tapd/tasks/workspace_converter.go
+++ b/plugins/tapd/tasks/workspace_converter.go
@@ -32,10 +32,10 @@ func ConvertWorkspace(taskCtx core.SubTaskContext) error {
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_WORKSPACE_TABLE)
 	logger := taskCtx.GetLogger()
 	db := taskCtx.GetDal()
-	logger.Info("collect board:%d", data.Options.WorkspaceID)
+	logger.Info("collect board:%d", data.Options.WorkspaceId)
 	clauses := []dal.Clause{
 		dal.From(&models.TapdWorkspace{}),
-		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID),
+		dal.Where("connection_id = ? AND workspace_id = ?", data.Connection.ID, data.Options.WorkspaceId),
 	}
 
 	cursor, err := db.Cursor(clauses...)
@@ -51,10 +51,10 @@ func ConvertWorkspace(taskCtx core.SubTaskContext) error {
 			workspace := inputRow.(*models.TapdWorkspace)
 			domainBoard := &ticket.Board{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: WorkspaceIdGen.Generate(workspace.ConnectionId, workspace.ID),
+					Id: WorkspaceIdGen.Generate(workspace.ConnectionId, workspace.Id),
 				},
 				Name: workspace.Name,
-				Url:  fmt.Sprintf("%s/%d", "https://tapd.cn", workspace.ID),
+				Url:  fmt.Sprintf("%s/%d", "https://tapd.cn", workspace.Id),
 			}
 			return []interface{}{
 				domainBoard,