You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by zh...@apache.org on 2023/05/10 08:43:25 UTC

[incubator-devlake] branch release-v0.17 updated: Cherry pick#5103#5091#5147 (#5148)

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

zhangliang2022 pushed a commit to branch release-v0.17
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.17 by this push:
     new 4a318b96d Cherry pick#5103#5091#5147 (#5148)
4a318b96d is described below

commit 4a318b96d318d9dec8db0b90023d06e32baef52a
Author: Liang Zhang <li...@merico.dev>
AuthorDate: Wed May 10 16:43:21 2023 +0800

    Cherry pick#5103#5091#5147 (#5148)
    
    * feat: save board as kanban type (#5103)
    
    * fix: set correct values to issues_changelogs (#5091)
    
    * fix: set correct values to issues_changelogs
    
    * fix: e2e for mysql
    
    * fix: the overflow error of _tool_jira_remotelinks.self (#5147)
    
    * fix: the overflow error of _tool_jira_remotelinks.self
    
    * fix: fix the defination of model JiraRemotelink
---
 backend/plugins/customize/service/service.go       |  1 +
 .../20230510_expand_remotelink_selfurl.go          | 69 ++++++++++++++++++++++
 .../jira/models/migrationscripts/register.go       |  1 +
 backend/plugins/jira/models/remotelink.go          |  2 +-
 .../raw_tables/_raw_tapd_api_story_changelogs.csv  | 10 ++++
 .../_raw_tapd_api_story_changelogs_1.csv           | 11 ++++
 .../_raw_tapd_api_story_changelogs_3.csv           | 11 ++++
 .../_tool_tapd_story_changelog_items.csv           | 20 +++++++
 .../_tool_tapd_story_changelogs.csv                | 10 ++++
 .../e2e/snapshot_tables/issue_changelogs_story.csv | 20 +++++++
 .../plugins/tapd/tasks/bug_changelog_converter.go  | 18 ++++--
 .../tapd/tasks/story_changelog_converter.go        | 18 ++++--
 .../plugins/tapd/tasks/task_changelog_converter.go | 18 ++++--
 13 files changed, 196 insertions(+), 13 deletions(-)

diff --git a/backend/plugins/customize/service/service.go b/backend/plugins/customize/service/service.go
index 4871018e0..905a3cd74 100644
--- a/backend/plugins/customize/service/service.go
+++ b/backend/plugins/customize/service/service.go
@@ -167,6 +167,7 @@ func (s *Service) SaveBoard(boardId, boardName string) errors.Error {
 			Id: boardId,
 		},
 		Name: boardName,
+		Type: "kanban",
 	})
 }
 
diff --git a/backend/plugins/jira/models/migrationscripts/20230510_expand_remotelink_selfurl.go b/backend/plugins/jira/models/migrationscripts/20230510_expand_remotelink_selfurl.go
new file mode 100644
index 000000000..b7aeb527b
--- /dev/null
+++ b/backend/plugins/jira/models/migrationscripts/20230510_expand_remotelink_selfurl.go
@@ -0,0 +1,69 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+	"github.com/apache/incubator-devlake/core/context"
+	"github.com/apache/incubator-devlake/core/dal"
+	"github.com/apache/incubator-devlake/core/errors"
+	"github.com/apache/incubator-devlake/core/plugin"
+	"github.com/apache/incubator-devlake/helpers/migrationhelper"
+)
+
+var _ plugin.MigrationScript = (*expandRemotelinkUrl)(nil)
+
+type jiraRemotelink20230510 struct {
+	Self string
+}
+
+func (jiraRemotelink20230510) TableName() string {
+	return "_tool_jira_remotelinks"
+}
+
+type expandRemotelinkSelfUrl struct{}
+
+func (script *expandRemotelinkSelfUrl) Up(basicRes context.BasicRes) errors.Error {
+	db := basicRes.GetDal()
+	// expand _tool_jira_remotelinks.url to LONGTEXT
+	err := migrationhelper.ChangeColumnsType[jiraRemotelink20230510](
+		basicRes,
+		script,
+		jiraRemotelink20230510{}.TableName(),
+		[]string{"self"},
+		func(tmpColumnParams []interface{}) errors.Error {
+			return db.UpdateColumn(
+				&jiraRemotelink20230510{},
+				"self",
+				dal.DalClause{Expr: " ? ", Params: tmpColumnParams},
+				dal.Where("? is not null ", tmpColumnParams...),
+			)
+		},
+	)
+	if err != nil {
+		return err
+	}
+	return err
+}
+
+func (*expandRemotelinkSelfUrl) Version() uint64 {
+	return 20230510110029
+}
+
+func (*expandRemotelinkSelfUrl) Name() string {
+	return "expand _tool_jira_remotelinks.self to LONGTEXT"
+}
diff --git a/backend/plugins/jira/models/migrationscripts/register.go b/backend/plugins/jira/models/migrationscripts/register.go
index 8e1ba5bf2..a14efc9ec 100644
--- a/backend/plugins/jira/models/migrationscripts/register.go
+++ b/backend/plugins/jira/models/migrationscripts/register.go
@@ -35,5 +35,6 @@ func All() []plugin.MigrationScript {
 		new(expandRemotelinkUrl),
 		new(addConnectionIdToTransformationRule),
 		new(addChangeTotal20230412),
+		new(expandRemotelinkSelfUrl),
 	}
 }
diff --git a/backend/plugins/jira/models/remotelink.go b/backend/plugins/jira/models/remotelink.go
index 534b4483b..a9de08b13 100644
--- a/backend/plugins/jira/models/remotelink.go
+++ b/backend/plugins/jira/models/remotelink.go
@@ -31,7 +31,7 @@ type JiraRemotelink struct {
 	RemotelinkId uint64 `gorm:"primarykey"`
 	IssueId      uint64 `gorm:"index"`
 	RawJson      datatypes.JSON
-	Self         string `gorm:"type:varchar(255)"`
+	Self         string
 	Title        string
 	Url          string
 	IssueUpdated *time.Time
diff --git a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
index d581fabfa..6c817d947 100644
--- a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
@@ -5,3 +5,13 @@ id,params,data,url,input,created_at
 557,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018772"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17 10:38:59"",""change_summary"":""create_story"",""comment"":null,""changes"":""[{\""field\"":\""owner\"",\""value_before\"":\""\"",\""value_after\"":\""\\u90dd\\u7433;\""},{\""field\"":\""priority\"",\""value_before\"":\""\"",\""value_after\"":\""4\""},{\""field\"":\""iteration_id\"",\""valu [...]
 559,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018777"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17 10:43:59"",""change_summary"":""status_4"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代2\"",\""value_after\"":\""迭代3\"",\""before_iteration_id\"":\""11991001000077\"",\""after_iteration_id\"":\""11991001000099\"",\""before_iteration_name\"":\""\"" [...]
 560,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018778"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17 12:12:18"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代1\"",\""value_after\"":\""迭代4\"",\""before_iteration_id\"":\""11991001000078\"",\""after_iteration_id\"":\""11991001000205\"",\""before_iteration_name\"":\""\"" [...]
+57,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001018979"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 15:38:41"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_iteration_name\"":\""\"",\""after_ [...]
+72,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001018994"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 16:36:34"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_iteration_name\"":\""\"",\ [...]
+73,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001018996"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 17:35:05"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_iteration_name\"":\""\"",\ [...]
+88,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019022"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_re [...]
+89,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019023"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_re [...]
+90,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019024"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_re [...]
+91,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019025"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_re [...]
+92,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019026"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_re [...]
+123,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019058"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 17:39:19"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""\\u8fed\\u4ee32\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_request_id\"",\""value_before\"":\""\"",\""value_after\"":\""0 [...]
+120,"{""ConnectionId"":1,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""1139091999001019055"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 17:39:19"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""\\u8fed\\u4ee32\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_request_id\"",\""value_before\"":\""\"",\""value_after\"":\""0 [...]
diff --git a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_1.csv b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_1.csv
new file mode 100644
index 000000000..cec53c83f
--- /dev/null
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_1.csv
@@ -0,0 +1,11 @@
+id,params,data,url,input,created_at
+180,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":44918535}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313434393138353335303031303139313733222c22776f726b73706163655f6964223a223434393138353335222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75393064645c7537343333222c2263726561746564223a22323032332d30332d33312031383a31373a3133222c226368616e67655f73756d6d617279223a227265736f6c766564222c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c2266 [...]
+179,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":44918535}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313434393138353335303031303139313732222c22776f726b73706163655f6964223a223434393138353335222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75393064645c7537343333222c2263726561746564223a22323032332d30332d33312031383a31363a3439222c226368616e67655f73756d6d617279223a22706c616e6e696e67222c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c2266 [...]
+178,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":44918535}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313434393138353335303031303139313731222c22776f726b73706163655f6964223a223434393138353335222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75393064645c7537343333222c2263726561746564223a22323032332d30332d33312031383a31363a3337222c226368616e67655f73756d6d617279223a22646576656c6f70696e67222c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c [...]
+123,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303538222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031373a33393a3139222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c22 [...]
+120,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303535222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031373a33393a3139222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c22 [...]
+121,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303536222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031373a33393a3139222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c22 [...]
+122,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303537222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031373a33393a3139222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c22 [...]
+88,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303232222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031363a30333a3537222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c223 [...]
+89,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303233222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031363a30333a3537222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c223 [...]
+92,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}",\x7b22576f726b6974656d4368616e6765223a7b226964223a2231313339303931393939303031303139303236222c22776f726b73706163655f6964223a223339303931393939222c22776f726b6974656d5f747970655f6964223a2230222c2263726561746f72223a225c75363734655c7538663839222c2263726561746564223a22323032332d30332d32322031363a30333a3537222c226368616e67655f73756d6d617279223a6e756c6c2c22636f6d6d656e74223a6e756c6c2c226368616e676573223a225b7b5c226669656c645c223 [...]
diff --git a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_3.csv b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_3.csv
new file mode 100644
index 000000000..5b17085eb
--- /dev/null
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs_3.csv
@@ -0,0 +1,11 @@
+id,params,data,url,input,created_at
+57,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001018979"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 15:38:41"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_iteratio [...]
+72,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001018994"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 16:36:34"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_ [...]
+73,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001018996"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-21 17:35:05"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee31\"",\""value_after\"":0,\""before_iteration_id\"":\""1139091999001000270\"",\""after_iteration_id\"":0,\""before_ [...]
+88,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019022"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"": [...]
+89,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019023"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"": [...]
+90,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019024"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"": [...]
+91,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019025"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"": [...]
+92,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019026"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 16:03:57"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""test\\u8fed\\u4ee33-\\u9a8c\\u8bc1\\u5df2\\u5b8c\\u6210\\u7684\\u8fed\\u4ee3\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"": [...]
+123,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019058"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 17:39:19"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""\\u8fed\\u4ee32\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_request_id\"",\""value_before\"":\"" [...]
+120,"{""ConnectionId"":2,""CompanyId"":0,""WorkspaceId"":39091999}","{""WorkitemChange"":{""id"":""1139091999001019055"",""workspace_id"":""39091999"",""workitem_type_id"":""0"",""creator"":""\u674e\u8f89"",""created"":""2023-03-22 17:39:19"",""change_summary"":null,""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""\\u8fed\\u4ee32\\uff08\\u5f53\\u524d\\u8fed\\u4ee3\\uff09\"",\""value_after\"":0},{\""field\"":\""tapd_request_id\"",\""value_before\"":\"" [...]
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
index 71d7d1c68..d107b195a 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
@@ -17,3 +17,23 @@ connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteratio
 1,11991001018777,tapd_request_id,,1624c25163294aff59dc84958f179241,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
 1,11991001018778,iteration_id,迭代3,迭代7,11991001000099,11991001000381,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
 1,11991001018778,tapd_request_id,,374a5c21b7a8b2dc598a8557406fe847,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
+1,1139091999001018979,iteration_id,test迭代1,0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,57,
+1,1139091999001018979,tapd_request_id,,f0e9650850066f03b97fe765ecef230c,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,57,
+1,1139091999001018994,iteration_id,test迭代1,0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,72,
+1,1139091999001018994,tapd_request_id,,c8d18efecc50d8a7587480f1af8461ed,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,72,
+1,1139091999001018996,iteration_id,test迭代1,0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,73,
+1,1139091999001018996,tapd_request_id,,e8fd37b67885fb1e17f778ae99ff0078,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,73,
+1,1139091999001019022,iteration_id,test迭代3-验证已完成的迭代(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,88,
+1,1139091999001019022,tapd_request_id,,0a2cec9741328f77ca5aff4bbea8af7f,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,88,
+1,1139091999001019023,iteration_id,test迭代3-验证已完成的迭代(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,89,
+1,1139091999001019023,tapd_request_id,,0a2cec9741328f77ca5aff4bbea8af7f,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,89,
+1,1139091999001019024,iteration_id,test迭代3-验证已完成的迭代(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,90,
+1,1139091999001019024,tapd_request_id,,0a2cec9741328f77ca5aff4bbea8af7f,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,90,
+1,1139091999001019025,iteration_id,test迭代3-验证已完成的迭代(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,91,
+1,1139091999001019025,tapd_request_id,,0a2cec9741328f77ca5aff4bbea8af7f,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,91,
+1,1139091999001019026,iteration_id,test迭代3-验证已完成的迭代(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,92,
+1,1139091999001019026,tapd_request_id,,0a2cec9741328f77ca5aff4bbea8af7f,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,92,
+1,1139091999001019055,iteration_id,迭代2(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,120,
+1,1139091999001019055,tapd_request_id,,042f0e261d7c79dc7c4bfb7f42d33ec0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,120,
+1,1139091999001019058,iteration_id,迭代2(当前迭代),0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,123,
+1,1139091999001019058,tapd_request_id,,042f0e261d7c79dc7c4bfb7f42d33ec0,0,0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,123,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
index ef1429cc7..7b77db1e0 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
@@ -5,3 +5,13 @@ connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,co
 1,11991001018772,991,0,郝琳,2023-03-17T02:38:59.000+00:00,create_story,,Story,create_story,11991001017184,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
 1,11991001018777,991,0,郝琳,2023-03-17T02:43:59.000+00:00,status_4,,Story,manual_update,11991001017174,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
 1,11991001018778,991,0,郝琳,2023-03-17T04:12:18.000+00:00,planning,,Story,manual_update,11991001017185,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
+1,1139091999001018979,991,0,李辉,2023-03-21T07:38:41.000+00:00,,,Story,manual_update,1139091999001017219,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,57,
+1,1139091999001018994,991,0,李辉,2023-03-21T08:36:34.000+00:00,planning,,Story,manual_update,1139091999001017220,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,72,
+1,1139091999001018996,991,0,李辉,2023-03-21T09:35:05.000+00:00,planning,,Story,manual_update,1139091999001017218,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,73,
+1,1139091999001019022,991,0,李辉,2023-03-22T08:03:57.000+00:00,,,Story,,1139091999001017228,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,88,
+1,1139091999001019023,991,0,李辉,2023-03-22T08:03:57.000+00:00,,,Story,,1139091999001017227,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,89,
+1,1139091999001019024,991,0,李辉,2023-03-22T08:03:57.000+00:00,,,Story,,1139091999001017226,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,90,
+1,1139091999001019025,991,0,李辉,2023-03-22T08:03:57.000+00:00,,,Story,,1139091999001017225,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,91,
+1,1139091999001019026,991,0,李辉,2023-03-22T08:03:57.000+00:00,,,Story,,1139091999001017224,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,92,
+1,1139091999001019055,991,0,李辉,2023-03-22T09:39:19.000+00:00,,,Story,,1139091999001017207,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,120,
+1,1139091999001019058,991,0,李辉,2023-03-22T09:39:19.000+00:00,,,Story,,1139091999001017197,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,123,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
index b52c36f3f..a2c389682 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
@@ -1,4 +1,24 @@
 id,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+tapd:TapdStoryChangelog:1:1139091999001018979:iteration_id,tapd:TapdStory:1:1139091999001017219,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-21T07:38:41.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,57,
+tapd:TapdStoryChangelog:1:1139091999001018979:tapd_request_id,tapd:TapdStory:1:1139091999001017219,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-21T07:38:41.000+00:00,,f0e9650850066f03b97fe765ecef230c,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,57,
+tapd:TapdStoryChangelog:1:1139091999001018994:iteration_id,tapd:TapdStory:1:1139091999001017220,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-21T08:36:34.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,72,
+tapd:TapdStoryChangelog:1:1139091999001018994:tapd_request_id,tapd:TapdStory:1:1139091999001017220,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-21T08:36:34.000+00:00,,c8d18efecc50d8a7587480f1af8461ed,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,72,
+tapd:TapdStoryChangelog:1:1139091999001018996:iteration_id,tapd:TapdStory:1:1139091999001017218,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-21T09:35:05.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,73,
+tapd:TapdStoryChangelog:1:1139091999001018996:tapd_request_id,tapd:TapdStory:1:1139091999001017218,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-21T09:35:05.000+00:00,,e8fd37b67885fb1e17f778ae99ff0078,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,73,
+tapd:TapdStoryChangelog:1:1139091999001019022:iteration_id,tapd:TapdStory:1:1139091999001017228,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T08:03:57.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,88,
+tapd:TapdStoryChangelog:1:1139091999001019022:tapd_request_id,tapd:TapdStory:1:1139091999001017228,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T08:03:57.000+00:00,,0a2cec9741328f77ca5aff4bbea8af7f,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,88,
+tapd:TapdStoryChangelog:1:1139091999001019023:iteration_id,tapd:TapdStory:1:1139091999001017227,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T08:03:57.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,89,
+tapd:TapdStoryChangelog:1:1139091999001019023:tapd_request_id,tapd:TapdStory:1:1139091999001017227,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T08:03:57.000+00:00,,0a2cec9741328f77ca5aff4bbea8af7f,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,89,
+tapd:TapdStoryChangelog:1:1139091999001019024:iteration_id,tapd:TapdStory:1:1139091999001017226,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T08:03:57.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,90,
+tapd:TapdStoryChangelog:1:1139091999001019024:tapd_request_id,tapd:TapdStory:1:1139091999001017226,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T08:03:57.000+00:00,,0a2cec9741328f77ca5aff4bbea8af7f,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,90,
+tapd:TapdStoryChangelog:1:1139091999001019025:iteration_id,tapd:TapdStory:1:1139091999001017225,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T08:03:57.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,91,
+tapd:TapdStoryChangelog:1:1139091999001019025:tapd_request_id,tapd:TapdStory:1:1139091999001017225,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T08:03:57.000+00:00,,0a2cec9741328f77ca5aff4bbea8af7f,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,91,
+tapd:TapdStoryChangelog:1:1139091999001019026:iteration_id,tapd:TapdStory:1:1139091999001017224,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T08:03:57.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,92,
+tapd:TapdStoryChangelog:1:1139091999001019026:tapd_request_id,tapd:TapdStory:1:1139091999001017224,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T08:03:57.000+00:00,,0a2cec9741328f77ca5aff4bbea8af7f,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,92,
+tapd:TapdStoryChangelog:1:1139091999001019055:iteration_id,tapd:TapdStory:1:1139091999001017207,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T09:39:19.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,120,
+tapd:TapdStoryChangelog:1:1139091999001019055:tapd_request_id,tapd:TapdStory:1:1139091999001017207,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T09:39:19.000+00:00,,042f0e261d7c79dc7c4bfb7f42d33ec0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,120,
+tapd:TapdStoryChangelog:1:1139091999001019058:iteration_id,tapd:TapdStory:1:1139091999001017197,tapd:TapdAccount:1:李辉,李辉,iteration_id,Sprint,,,2023-03-22T09:39:19.000+00:00,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,123,
+tapd:TapdStoryChangelog:1:1139091999001019058:tapd_request_id,tapd:TapdStory:1:1139091999001017197,tapd:TapdAccount:1:李辉,李辉,tapd_request_id,tapd_request_id,,,2023-03-22T09:39:19.000+00:00,,042f0e261d7c79dc7c4bfb7f42d33ec0,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,123,
 tapd:TapdStoryChangelog:1:11991001000093:owner,tapd:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,assignee,,,2019-12-12T10:01:42.000+00:00,,tapd:TapdAccount:1:u5d14u6600,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,2,
 tapd:TapdStoryChangelog:1:11991001000095:comment,tapd:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,comment,comment,,,2019-12-12T10:12:07.000+00:00,,test-11test-11test-11test-11,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,
 tapd:TapdStoryChangelog:1:11991001000095:owner,tapd:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,assignee,,,2019-12-12T10:12:07.000+00:00,tapd:TapdAccount:1:u5d14u6600,"tapd:TapdAccount:1:u5d14u6600,tapd:TapdAccount:1:u9648u5fd7u9274","{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,
diff --git a/backend/plugins/tapd/tasks/bug_changelog_converter.go b/backend/plugins/tapd/tasks/bug_changelog_converter.go
index 0fbebc13e..89f537314 100644
--- a/backend/plugins/tapd/tasks/bug_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/bug_changelog_converter.go
@@ -99,10 +99,20 @@ func ConvertBugChangelog(taskCtx plugin.SubTaskContext) errors.Error {
 			}
 			if domainCl.FieldId == "iteration_id" {
 				domainCl.FieldName = "Sprint"
-				domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
-				domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
-				domainCl.ToValue = cl.ValueAfterParsed
-				domainCl.FromValue = cl.ValueBeforeParsed
+				if cl.IterationIdFrom == 0 {
+					domainCl.OriginalFromValue = ""
+					domainCl.FromValue = ""
+				} else {
+					domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+					domainCl.FromValue = cl.ValueBeforeParsed
+				}
+				if cl.IterationIdTo == 0 {
+					domainCl.OriginalToValue = ""
+					domainCl.ToValue = ""
+				} else {
+					domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+					domainCl.ToValue = cl.ValueAfterParsed
+				}
 			}
 			if domainCl.FieldId == "current_owner" {
 				domainCl.FieldName = "assignee"
diff --git a/backend/plugins/tapd/tasks/story_changelog_converter.go b/backend/plugins/tapd/tasks/story_changelog_converter.go
index 58c28956c..eb6701d61 100644
--- a/backend/plugins/tapd/tasks/story_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/story_changelog_converter.go
@@ -111,10 +111,20 @@ func ConvertStoryChangelog(taskCtx plugin.SubTaskContext) errors.Error {
 			}
 			if domainCl.FieldName == "iteration_id" {
 				domainCl.FieldName = "Sprint"
-				domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
-				domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
-				domainCl.ToValue = cl.ValueAfterParsed
-				domainCl.FromValue = cl.ValueBeforeParsed
+				if cl.IterationIdFrom == 0 {
+					domainCl.OriginalFromValue = ""
+					domainCl.FromValue = ""
+				} else {
+					domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+					domainCl.FromValue = cl.ValueBeforeParsed
+				}
+				if cl.IterationIdTo == 0 {
+					domainCl.OriginalToValue = ""
+					domainCl.ToValue = ""
+				} else {
+					domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+					domainCl.ToValue = cl.ValueAfterParsed
+				}
 			}
 			if domainCl.FieldName == "workitem_type_id" {
 				// As OriginalFromValue is value_before_parsed, so we don't need to transform id to name
diff --git a/backend/plugins/tapd/tasks/task_changelog_converter.go b/backend/plugins/tapd/tasks/task_changelog_converter.go
index 23a7ee138..979b38390 100644
--- a/backend/plugins/tapd/tasks/task_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/task_changelog_converter.go
@@ -114,10 +114,20 @@ func ConvertTaskChangelog(taskCtx plugin.SubTaskContext) errors.Error {
 			}
 			if domainCl.FieldName == "iteration_id" {
 				domainCl.FieldName = "Sprint"
-				domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
-				domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
-				domainCl.ToValue = cl.ValueAfterParsed
-				domainCl.FromValue = cl.ValueBeforeParsed
+				if cl.IterationIdFrom == 0 {
+					domainCl.OriginalFromValue = ""
+					domainCl.FromValue = ""
+				} else {
+					domainCl.OriginalFromValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+					domainCl.FromValue = cl.ValueBeforeParsed
+				}
+				if cl.IterationIdTo == 0 {
+					domainCl.OriginalToValue = ""
+					domainCl.ToValue = ""
+				} else {
+					domainCl.OriginalToValue = clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+					domainCl.ToValue = cl.ValueAfterParsed
+				}
 			}
 			if domainCl.FieldId == "owner" {
 				domainCl.FieldName = "assignee"