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

[incubator-devlake] branch main updated: test: jira e2e (#2349)

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

klesh 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 120cd95f test: jira e2e (#2349)
120cd95f is described below

commit 120cd95f0b4629746d696be200ee189de88c80e6
Author: mindlesscloud <li...@merico.dev>
AuthorDate: Mon Jun 27 15:05:40 2022 +0800

    test: jira e2e (#2349)
    
    * test: jira e2e
    
    * fix: fix some comments from GitHub
    
    * refactor: move config into JiraOptions.TransformationRules
    
    * refactor: remove the field JiraTaskData.Connection
    
    * fix: VerifyTable does not need pk fields
---
 plugins/jira/e2e/changelog_test.go                 | 105 +++++++++++++++++++++
 .../e2e/raw_tables/_raw_jira_api_changelogs.csv    |  31 ++++++
 .../e2e/raw_tables/_raw_jira_api_remotelinks.csv   |  31 ++++++
 .../jira/e2e/raw_tables/_raw_jira_api_sprints.csv  |  31 ++++++
 .../jira/e2e/raw_tables/_raw_jira_api_users.csv    |  31 ++++++
 .../jira/e2e/raw_tables/_raw_jira_api_worklogs.csv |  31 ++++++
 plugins/jira/e2e/remotelink_test.go                |  79 ++++++++++++++++
 .../_tool_jira_board_issues_for_changelog.csv      |  31 ++++++
 .../_tool_jira_board_issues_for_worklog.csv        |  31 ++++++
 .../snapshot_tables/_tool_jira_board_sprints.csv   |  31 ++++++
 .../snapshot_tables/_tool_jira_changelog_items.csv |  31 ++++++
 .../e2e/snapshot_tables/_tool_jira_changelogs.csv  |  31 ++++++
 .../snapshot_tables/_tool_jira_issue_commits.csv   |  10 ++
 .../e2e/snapshot_tables/_tool_jira_remotelinks.csv |  31 ++++++
 .../e2e/snapshot_tables/_tool_jira_sprints.csv     |  31 ++++++
 .../e2e/snapshot_tables/_tool_jira_worklogs.csv    |  31 ++++++
 plugins/jira/e2e/snapshot_tables/board_sprints.csv |  31 ++++++
 plugins/jira/e2e/snapshot_tables/changelogs.csv    |  31 ++++++
 plugins/jira/e2e/snapshot_tables/sprints.csv       |  31 ++++++
 plugins/jira/e2e/snapshot_tables/worklogs.csv      |   7 ++
 plugins/jira/e2e/sprint_test.go                    |  97 +++++++++++++++++++
 plugins/jira/e2e/worklog_test.go                   |  85 +++++++++++++++++
 plugins/jira/impl/impl.go                          |   1 -
 plugins/jira/tasks/issue_extractor.go              |  10 +-
 plugins/jira/tasks/remotelink_extractor.go         |   2 +-
 plugins/jira/tasks/sprint_convertor.go             |   3 +-
 plugins/jira/tasks/task_data.go                    |  26 ++---
 27 files changed, 901 insertions(+), 20 deletions(-)

diff --git a/plugins/jira/e2e/changelog_test.go b/plugins/jira/e2e/changelog_test.go
new file mode 100644
index 00000000..8dcaec25
--- /dev/null
+++ b/plugins/jira/e2e/changelog_test.go
@@ -0,0 +1,105 @@
+/*
+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 e2e
+
+import (
+	"testing"
+
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+	"github.com/apache/incubator-devlake/plugins/jira/impl"
+	"github.com/apache/incubator-devlake/plugins/jira/models"
+	"github.com/apache/incubator-devlake/plugins/jira/tasks"
+)
+
+func TestChangelogDataFlow(t *testing.T) {
+	var plugin impl.Jira
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "jira", plugin)
+
+	taskData := &tasks.JiraTaskData{
+		Options: &tasks.JiraOptions{
+			ConnectionId: 2,
+			BoardId:      8,
+		},
+	}
+
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_jira_api_changelogs.csv", "_raw_jira_api_changelogs")
+
+	// verify changelog extraction
+	dataflowTester.FlushTabler(&models.JiraChangelog{})
+	dataflowTester.FlushTabler(&models.JiraChangelogItem{})
+	dataflowTester.FlushTabler(&models.JiraUser{})
+	dataflowTester.Subtask(tasks.ExtractChangelogsMeta, taskData)
+	dataflowTester.VerifyTable(
+		models.JiraChangelog{},
+		"./snapshot_tables/_tool_jira_changelogs.csv",
+		[]string{
+			"connection_id",
+			"changelog_id",
+			"issue_id",
+			"author_account_id",
+			"author_display_name",
+			"author_active",
+			"created",
+			"issue_updated",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+
+	dataflowTester.VerifyTable(
+		models.JiraChangelogItem{},
+		"./snapshot_tables/_tool_jira_changelog_items.csv",
+		[]string{
+			"connection_id",
+			"changelog_id",
+			"field",
+			"field_type",
+			"field_id",
+			"from_value",
+			"from_string",
+			"to_value",
+			"to_string",
+		},
+	)
+
+	// verify changelog conversion
+	dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_jira_board_issues_for_changelog.csv", &models.JiraBoardIssue{})
+	dataflowTester.FlushTabler(&ticket.Changelog{})
+	dataflowTester.Subtask(tasks.ConvertChangelogsMeta, taskData)
+	dataflowTester.VerifyTable(
+		ticket.Changelog{},
+		"./snapshot_tables/changelogs.csv",
+		[]string{
+			"id",
+			"issue_id",
+			"author_id",
+			"author_name",
+			"field_id",
+			"field_name",
+			"original_from_value",
+			"original_to_value",
+			"from_value",
+			"to_value",
+			"created_date",
+		},
+	)
+}
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_changelogs.csv b/plugins/jira/e2e/raw_tables/_raw_jira_api_changelogs.csv
new file mode 100644
index 00000000..73431e2c
--- /dev/null
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_changelogs.csv
@@ -0,0 +1,31 @@
+"id","params","data","url","input","created_at"
+986053,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11646"", ""items"": [{""to"": ""5ecfbd0ba04d9c0c220c18d8"", ""from"": null, ""field"": ""assignee"", ""fieldId"": ""assignee"", ""toString"": ""yanghui"", ""fieldtype"": ""jira"", ""fromString"": null, ""tmpToAccountId"": ""5ecfbd0ba04d9c0c220c18d8"", ""tmpFromAccountId"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5ecfbd0ba04d9c0c220c18d8"", ""active"": true, ""timeZone"": ""Asia/Shangha [...]
+986054,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11648"", ""items"": [{""to"": ""5ecfbd0c2490cf0c09e2e598"", ""from"": ""5ecfbd0ba04d9c0c220c18d8"", ""field"": ""assignee"", ""fieldId"": ""assignee"", ""toString"": ""Gerile Tu"", ""fieldtype"": ""jira"", ""fromString"": ""yanghui"", ""tmpToAccountId"": ""5ecfbd0c2490cf0c09e2e598"", ""tmpFromAccountId"": ""5ecfbd0ba04d9c0c220c18d8""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0 [...]
+986055,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11677"", ""items"": [{""to"": null, ""from"": null, ""field"": ""summary"", ""fieldId"": ""summary"", ""toString"": ""[Industry Metrics]"", ""fieldtype"": ""jira"", ""fromString"": ""[Industry Metrics]""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5ecfbd0ba04d9c0c220c18d8"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0ba04d9c0c220c18d8"", ""avatarUrls"": {""16x16" [...]
+986056,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11798"", ""items"": [{""to"": null, ""from"": null, ""field"": ""summary"", ""fieldId"": ""summary"", ""toString"": ""[Industry Metrics] "", ""fieldtype"": ""jira"", ""fromString"": ""[Industry Metrics]""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5ecfbd0c2490cf0c09e2e598"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0c2490cf0c09e2e598"", ""avatarUrls"": {""16x16 [...]
+986057,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11913"", ""items"": [{""to"": ""10003"", ""from"": null, ""field"": ""Component"", ""fieldId"": ""components"", ""toString"": ""Industry Metrics"", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5ecfbd0c2490cf0c09e2e598"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0c2490cf0c09e2e598"", ""avatarUrls"": {""16x16"": ""https [...]
+986058,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11915"", ""items"": [{""to"": ""10004"", ""from"": null, ""field"": ""Component"", ""fieldId"": ""components"", ""toString"": ""Charts"", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5ecfbd0c2490cf0c09e2e598"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0c2490cf0c09e2e598"", ""avatarUrls"": {""16x16"": ""https://secure. [...]
+986059,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11935"", ""items"": [{""to"": null, ""from"": ""10003"", ""field"": ""Component"", ""fieldId"": ""components"", ""toString"": null, ""fieldtype"": ""jira"", ""fromString"": ""Industry Metrics""}, {""to"": null, ""from"": ""10004"", ""field"": ""Component"", ""fieldId"": ""components"", ""toString"": null, ""fieldtype"": ""jira"", ""fromString"": ""Charts""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?acco [...]
+986060,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""11993"", ""items"": [{""to"": """", ""from"": """", ""field"": ""Rank"", ""fieldId"": ""customfield_10019"", ""toString"": ""Ranked higher"", ""fieldtype"": ""custom"", ""fromString"": """"}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https://s [...]
+986061,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""12011"", ""items"": [{""to"": ""10084"", ""from"": null, ""field"": ""Epic Link"", ""fieldId"": ""customfield_10014"", ""toString"": ""EE-22"", ""fieldtype"": ""custom"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https:/ [...]
+986062,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""12016"", ""items"": [{""to"": null, ""from"": null, ""field"": ""summary"", ""fieldId"": ""summary"", ""toString"": """", ""fieldtype"": ""jira"", ""fromString"": ""[Industry Metrics] ""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https://secu [...]
+986063,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""12058"", ""items"": [{""to"": """", ""from"": """", ""field"": ""Rank"", ""fieldId"": ""customfield_10019"", ""toString"": ""Ranked higher"", ""fieldtype"": ""custom"", ""fromString"": """"}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https://s [...]
+986064,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""12766"", ""items"": [{""to"": ""10111"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add industry unittest (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", [...]
+986065,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13012"", ""items"": [{""to"": ""10131"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba3 [...]
+986066,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13181"", ""items"": [{""to"": ""10144"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryQuery.test.ts (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d [...]
+986067,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13187"", ""items"": [{""to"": ""10145"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asi [...]
+986068,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13189"", ""items"": [{""to"": ""10146"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba3 [...]
+986069,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13190"", ""items"": [{""to"": ""10147"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add Industry model (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", "" [...]
+986070,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13192"", ""items"": [{""to"": ""10148"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 rename (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"" [...]
+986071,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13193"", ""items"": [{""to"": ""10149"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add industry unittest (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", [...]
+986072,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13194"", ""items"": [{""to"": ""10150"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add getQualityMetric (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"",  [...]
+986073,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""13257"", ""items"": [{""to"": ""10154"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": "" [...]
+986074,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15273"", ""items"": [{""to"": ""10154"", ""from"": ""10154"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user [...]
+986075,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15274"", ""items"": [{""to"": ""10145"", ""from"": ""10145"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)\""""}], ""autho [...]
+986076,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15305"", ""items"": [{""to"": ""10250"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add group industy data (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"" [...]
+986077,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15310"", ""items"": [{""to"": ""10251"", ""from"": null, ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 fix group industry data's bug (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": null}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fb [...]
+986078,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15351"", ""items"": [{""to"": ""10154"", ""from"": ""10154"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user [...]
+986079,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15357"", ""items"": [{""to"": ""10251"", ""from"": ""10251"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 fix group industry data's bug (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 fix group industry data's bug (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", [...]
+986080,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15397"", ""items"": [{""to"": ""10154"", ""from"": ""10154"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user [...]
+986081,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15400"", ""items"": [{""to"": ""10251"", ""from"": ""10251"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 fix group industry data's bug (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 fix group industry data's bug (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user?accountId=5e9711ba34f7b90c0fbc37d3"", [...]
+986082,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""15536"", ""items"": [{""to"": ""10154"", ""from"": ""10154"", ""field"": ""RemoteIssueLink"", ""toString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\"""", ""fieldtype"": ""jira"", ""fromString"": ""This issue links to \""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)\""""}], ""author"": {""self"": ""https://merico.atlassian.net/rest/api/3/user [...]
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_remotelinks.csv b/plugins/jira/e2e/raw_tables/_raw_jira_api_remotelinks.csv
new file mode 100644
index 00000000..aac90434
--- /dev/null
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_remotelinks.csv
@@ -0,0 +1,31 @@
+"id","params","data","url","input","created_at"
+101041,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10042, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-1/remotelink/10042"", ""object"": {""url"": ""https://example.com/-/commit/8748a066cbaf67b15e86f2c636f9931347e987cf"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Feat(EE-1): add modularity metric chart"", ""status"": {""icon"": {}, "" [...]
+101042,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10035, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-3/remotelink/10035"", ""object"": {""url"": ""https://example.com/-/commit/8f91020bcf684c6ad07adfafa3d8a2f826686c42"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Feat(EE-3): add issues grouped chart at quality report page"", ""status" [...]
+101043,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10032, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-2/remotelink/10032"", ""object"": {""url"": ""https://example.com/-/commit/abc0892edaee00dd7ee268dbee71620407a29bca"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Feat(EE-2): add issues stacked chart at quality report page"", ""status" [...]
+101044,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10033, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-2/remotelink/10033"", ""object"": {""url"": ""https://example.com/-/commit/e6bde456807818c5c78d7b265964d6d48b653af6"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Feat(EE-2): add issues stacked chart at quality report page"", ""status" [...]
+101045,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10036, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-4/remotelink/10036"", ""object"": {""url"": ""https://example.com/-/commit/0dfe2e9ed88ad4e27f825d9b67d4d56ac983c5ef"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Feat(EE-4): preliminarily add issues distribution chart at quality repor [...]
+101046,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10009, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-23/remotelink/10009"", ""object"": {""url"": ""https://example.com/-/issues/2313"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10085/remotelink","{""issue_id"": 10085, ""update_time"": ""2021-03-28T08:05:57.095Z""}","2022-06 [...]
+101047,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10053, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-57/remotelink/10053"", ""object"": {""url"": ""https://example.com/-/issues/2288"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""https://example.com/-/issues/2288"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10119/remotelink","{""issue_id"": 10119, ""update_time"": ""2021-03-28T08:07 [...]
+101048,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10010, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-64/remotelink/10010"", ""object"": {""url"": ""https://example.com/-/issues/2296"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10126/remotelink","{""issue_id"": 10126, ""update_time"": ""2021-03-28T08:05:57.002Z""}","2022-06 [...]
+101049,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10011, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-65/remotelink/10011"", ""object"": {""url"": ""https://example.com/-/issues/2283"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10127/remotelink","{""issue_id"": 10127, ""update_time"": ""2021-03-28T08:05:54.768Z""}","2022-06 [...]
+101050,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10012, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-66/remotelink/10012"", ""object"": {""url"": ""https://example.com/-/issues/2281"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10128/remotelink","{""issue_id"": 10128, ""update_time"": ""2021-03-28T08:05:54.816Z""}","2022-06 [...]
+101051,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10067, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10067"", ""object"": {""url"": ""https://merico.atlassian.net/wiki/pages/viewpage.action?pageId=11304962"", ""icon"": {}, ""title"": ""Wiki Page"", ""status"": {""icon"": {}}}, ""globalId"": ""appId=14a8b58c-61f0-3220-b8b4-22481b2fda95&pageId=11304962"", ""application"": {""name"": ""System Confluence"", ""type"": ""com.atlassian.confluence""}, ""relatio [...]
+101052,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10324, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10324"", ""object"": {""url"": ""https://example.com/-/merge_requests/1195"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Merge request - feat: EE-69 - Teams tree list view for 2.7"", ""status"": {""icon"": {}, ""resolved"": false [...]
+101053,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10325, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10325"", ""object"": {""url"": ""https://example.com/-/commit/8993c04249e9d549e8950daec86717548c53c423"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - Merge branch 'release/2.7-teams' into 'release/2.7'"", ""status"": {""i [...]
+101054,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10005, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-71/remotelink/10005"", ""object"": {""url"": ""https://example.com/-/issues/2282"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10141/remotelink","{""issue_id"": 10141, ""update_time"": ""2021-03-28T08:05:57.636Z""}","2022-06 [...]
+101055,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10006, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-72/remotelink/10006"", ""object"": {""url"": ""https://example.com/-/issues/2293"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10142/remotelink","{""issue_id"": 10142, ""update_time"": ""2021-03-28T08:05:57.68Z""}","2022-06- [...]
+101056,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10007, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-73/remotelink/10007"", ""object"": {""url"": ""https://example.com/-/issues/2323"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10143/remotelink","{""issue_id"": 10143, ""update_time"": ""2021-03-28T08:05:59.967Z""}","2022-06 [...]
+101057,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10008, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-74/remotelink/10008"", ""object"": {""url"": ""https://example.com/-/issues/2322"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10144/remotelink","{""issue_id"": 10144, ""update_time"": ""2021-03-28T08:05:59.772Z""}","2022-06 [...]
+101058,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10013, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10013"", ""object"": {""url"": ""https://example.com/-/issues/2112"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10145/remotelink","{""issue_id"": 10145, ""update_time"": ""2021-03-28T08:06:22.874Z""}","2022-06 [...]
+101059,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10037, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10037"", ""object"": {""url"": ""https://example.com/-/commit/07aa2ebed68e286dc51a7e0082031196a6135f74"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - EE-75. Fix #2112. Allow skip SMTP config"", ""status"": {""icon"": {},  [...]
+101060,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10038, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10038"", ""object"": {""url"": ""https://example.com/-/commit/d70d6687e06304d9b6e0cb32b3f8c0f0928400f7"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - EE-75. Fix #2112. Allow skip SMTP config"", ""status"": {""icon"": {},  [...]
+101061,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10039, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10039"", ""object"": {""url"": ""https://example.com/-/commit/ef5ab26111744f65f5191b247767a473c70d6c95"", ""icon"": {""title"": ""GitLab"", ""url16x16"": ""https://gitlab.com/assets/favicon-7901bd695fb93edb07975966062049829afb56cf11511236e61bcf425070e36e.png""}, ""title"": ""Commit - EE-75. Fix #2112. Allow skip SMTP config"", ""status"": {""icon"": {},  [...]
+101062,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10014, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-76/remotelink/10014"", ""object"": {""url"": ""https://example.com/-/issues/2277"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10146/remotelink","{""issue_id"": 10146, ""update_time"": ""2021-03-28T08:06:12.833Z""}","2022-06 [...]
+101063,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10027, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-77/remotelink/10027"", ""object"": {""url"": ""https://example.com/-/issues/2318"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10147/remotelink","{""issue_id"": 10147, ""update_time"": ""2021-03-28T08:05:57.439Z""}","2022-06 [...]
+101064,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10026, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-78/remotelink/10026"", ""object"": {""url"": ""https://example.com/-/issues/2330"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10148/remotelink","{""issue_id"": 10148, ""update_time"": ""2021-03-28T08:05:57.538Z""}","2022-06 [...]
+101065,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10025, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-79/remotelink/10025"", ""object"": {""url"": ""https://example.com/-/issues/2324"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10149/remotelink","{""issue_id"": 10149, ""update_time"": ""2021-03-28T08:05:57.587Z""}","2022-06 [...]
+101066,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10024, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-80/remotelink/10024"", ""object"": {""url"": ""https://example.com/-/issues/2341"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10150/remotelink","{""issue_id"": 10150, ""update_time"": ""2021-03-28T08:06:07.546Z""}","2022-06 [...]
+101067,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10023, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-81/remotelink/10023"", ""object"": {""url"": ""https://example.com/-/issues/2312"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10151/remotelink","{""issue_id"": 10151, ""update_time"": ""2021-03-28T08:05:57.876Z""}","2022-06 [...]
+101068,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10022, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-82/remotelink/10022"", ""object"": {""url"": ""https://example.com/-/issues/2305"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10152/remotelink","{""issue_id"": 10152, ""update_time"": ""2021-03-28T08:05:58.414Z""}","2022-06 [...]
+101069,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10021, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-83/remotelink/10021"", ""object"": {""url"": ""https://example.com/-/issues/2306"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10153/remotelink","{""issue_id"": 10153, ""update_time"": ""2021-03-28T08:05:58.464Z""}","2022-06 [...]
+101070,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 10020, ""self"": ""https://merico.atlassian.net/rest/api/2/issue/EE-84/remotelink/10020"", ""object"": {""url"": ""https://example.com/-/issues/2307"", ""icon"": {""url16x16"": ""https://gitlab.com/favicon.ico""}, ""title"": ""GitLab Issue"", ""status"": {""icon"": {}}}, ""application"": {}}","https://merico.atlassian.net/rest/api/2/issue/10154/remotelink","{""issue_id"": 10154, ""update_time"": ""2021-03-28T08:05:58.319Z""}","2022-06 [...]
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_sprints.csv b/plugins/jira/e2e/raw_tables/_raw_jira_api_sprints.csv
new file mode 100644
index 00000000..c351f21d
--- /dev/null
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_sprints.csv
@@ -0,0 +1,31 @@
+"id","params","data","url","input","created_at"
+1220,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 7, ""goal"": """", ""name"": ""EE Sprint 7"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/7"", ""state"": ""closed"", ""endDate"": ""2020-06-26T00:38:00.000Z"", ""startDate"": ""2020-06-12T00:38:51.882Z"", ""completeDate"": ""2020-06-22T05:59:58.980Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1221,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 9, ""goal"": """", ""name"": ""EE Sprint 8"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/9"", ""state"": ""closed"", ""endDate"": ""2020-07-10T06:00:00.000Z"", ""startDate"": ""2020-06-22T06:00:33.769Z"", ""completeDate"": ""2020-07-13T01:21:57.062Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1222,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 15, ""goal"": """", ""name"": ""Emma Sprint 1"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/15"", ""state"": ""closed"", ""endDate"": ""2020-07-06T01:32:52.000Z"", ""startDate"": ""2020-06-22T01:32:04.664Z"", ""completeDate"": ""2020-06-29T02:50:44.043Z"", ""originBoardId"": 13}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1223,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 17, ""goal"": """", ""name"": ""EE Sprint 9"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/17"", ""state"": ""closed"", ""endDate"": ""2020-07-27T01:22:00.000Z"", ""startDate"": ""2020-07-13T01:22:22.745Z"", ""completeDate"": ""2020-07-27T01:23:43.083Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1224,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 18, ""goal"": """", ""name"": ""EE Sprint 10"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/18"", ""state"": ""closed"", ""endDate"": ""2020-08-10T01:26:00.000Z"", ""startDate"": ""2020-07-27T01:26:13.465Z"", ""completeDate"": ""2020-08-10T02:29:10.811Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1225,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 19, ""goal"": """", ""name"": ""EE Sprint 11"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/19"", ""state"": ""closed"", ""endDate"": ""2020-08-21T01:15:00.000Z"", ""startDate"": ""2020-08-09T01:15:11.205Z"", ""completeDate"": ""2020-08-31T01:34:04.666Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1226,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 20, ""goal"": """", ""name"": ""EE Sprint 14"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/20"", ""state"": ""closed"", ""endDate"": ""2020-09-07T01:35:00.000Z"", ""startDate"": ""2020-08-31T01:35:38.626Z"", ""completeDate"": ""2020-11-05T07:46:55.346Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1227,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 21, ""goal"": """", ""name"": ""EE Sprint 15"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/21"", ""state"": ""closed"", ""endDate"": ""2020-11-16T08:29:00.000Z"", ""startDate"": ""2020-11-09T08:29:00.529Z"", ""completeDate"": ""2020-11-16T23:07:33.015Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1228,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 25, ""goal"": """", ""name"": ""EE Sprint 16"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/25"", ""state"": ""closed"", ""endDate"": ""2020-11-23T23:14:00.000Z"", ""startDate"": ""2020-11-16T23:14:57.590Z"", ""completeDate"": ""2020-11-24T03:56:42.281Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1229,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 26, ""goal"": """", ""name"": ""EE Sprint 17"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/26"", ""state"": ""closed"", ""endDate"": ""2020-11-27T03:56:00.000Z"", ""startDate"": ""2020-11-20T03:56:12.414Z"", ""completeDate"": ""2020-11-30T02:48:49.378Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1230,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 27, ""goal"": """", ""name"": ""EE Sprint 18"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/27"", ""state"": ""closed"", ""endDate"": ""2020-12-07T02:49:00.000Z"", ""startDate"": ""2020-11-30T02:49:24.536Z"", ""completeDate"": ""2020-12-07T01:41:17.786Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1231,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 28, ""goal"": """", ""name"": ""EE Sprint 19"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/28"", ""state"": ""closed"", ""endDate"": ""2020-12-14T01:41:00.000Z"", ""startDate"": ""2020-12-07T01:41:40.676Z"", ""completeDate"": ""2020-12-14T01:00:22.218Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1232,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 30, ""goal"": """", ""name"": ""EE Sprint 20"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/30"", ""state"": ""closed"", ""endDate"": ""2020-12-28T01:54:00.000Z"", ""startDate"": ""2020-12-14T01:54:34.826Z"", ""completeDate"": ""2020-12-28T06:11:27.241Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1233,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 31, ""goal"": """", ""name"": ""EE Sprint 21"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/31"", ""state"": ""closed"", ""endDate"": ""2021-01-10T18:11:00.000Z"", ""startDate"": ""2020-12-28T06:11:46.433Z"", ""completeDate"": ""2021-01-11T02:52:38.721Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1234,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 32, ""goal"": """", ""name"": ""EE Sprint 22"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/32"", ""state"": ""closed"", ""endDate"": ""2021-01-18T04:09:00.000Z"", ""startDate"": ""2021-01-11T04:09:10.389Z"", ""completeDate"": ""2021-01-18T03:10:51.076Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1235,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 33, ""goal"": """", ""name"": ""EE Sprint 23"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/33"", ""state"": ""closed"", ""endDate"": ""2021-01-25T03:45:00.000Z"", ""startDate"": ""2021-01-18T03:45:20.174Z"", ""completeDate"": ""2021-01-25T03:03:10.386Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1236,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 34, ""goal"": """", ""name"": ""EE Sprint 24"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/34"", ""state"": ""closed"", ""endDate"": ""2021-02-01T03:56:00.000Z"", ""startDate"": ""2021-01-25T03:56:45.942Z"", ""completeDate"": ""2021-02-01T03:05:30.868Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1237,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 35, ""goal"": """", ""name"": ""EE Sprint 25"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/35"", ""state"": ""closed"", ""endDate"": ""2021-02-08T03:39:00.000Z"", ""startDate"": ""2021-02-01T03:39:40.472Z"", ""completeDate"": ""2021-02-07T03:01:13.596Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1238,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 36, ""goal"": """", ""name"": ""EE Sprint 26"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/36"", ""state"": ""closed"", ""endDate"": ""2021-02-14T03:44:00.000Z"", ""startDate"": ""2021-02-07T03:44:55.158Z"", ""completeDate"": ""2021-02-22T03:05:16.997Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1239,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 37, ""goal"": """", ""name"": ""EE Sprint 27"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/37"", ""state"": ""closed"", ""endDate"": ""2021-03-01T03:30:00.000Z"", ""startDate"": ""2021-02-22T03:30:53.407Z"", ""completeDate"": ""2021-02-26T08:15:20.988Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1240,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 38, ""goal"": """", ""name"": ""EE Sprint 28"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/38"", ""state"": ""closed"", ""endDate"": ""2021-03-08T03:50:00.000Z"", ""startDate"": ""2021-03-01T03:50:54.464Z"", ""completeDate"": ""2021-03-05T08:03:48.144Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1241,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 40, ""goal"": """", ""name"": ""EE Sprint 29"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/40"", ""state"": ""closed"", ""endDate"": ""2021-03-14T17:34:00.000Z"", ""startDate"": ""2021-03-08T05:34:15.296Z"", ""completeDate"": ""2021-03-15T06:53:34.924Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1242,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 41, ""goal"": """", ""name"": ""EE Sprint 30"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/41"", ""state"": ""closed"", ""endDate"": ""2021-03-21T19:23:00.000Z"", ""startDate"": ""2021-03-15T07:23:47.468Z"", ""completeDate"": ""2021-03-19T08:57:51.706Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1243,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 42, ""goal"": """", ""name"": ""EE Sprint 31"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/42"", ""state"": ""closed"", ""endDate"": ""2021-03-28T15:00:00.000Z"", ""startDate"": ""2021-03-22T03:00:03.936Z"", ""completeDate"": ""2021-03-26T08:06:09.772Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1244,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 43, ""goal"": """", ""name"": ""EE Sprint 32"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/43"", ""state"": ""closed"", ""endDate"": ""2021-04-04T14:54:00.000Z"", ""startDate"": ""2021-03-29T02:54:16.155Z"", ""completeDate"": ""2021-04-06T03:29:56.386Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1245,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 46, ""goal"": """", ""name"": ""EE Sprint 33"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/46"", ""state"": ""closed"", ""endDate"": ""2021-04-12T21:59:00.000Z"", ""startDate"": ""2021-04-06T09:59:28.107Z"", ""completeDate"": ""2021-04-12T02:57:53.585Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1246,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 47, ""goal"": """", ""name"": ""EE Sprint 34"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/47"", ""state"": ""closed"", ""endDate"": ""2021-04-19T02:58:00.000Z"", ""startDate"": ""2021-04-12T02:58:51.011Z"", ""completeDate"": ""2021-04-16T08:43:09.709Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1247,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 50, ""goal"": """", ""name"": ""EE Sprint 35"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/50"", ""state"": ""closed"", ""endDate"": ""2021-04-26T03:17:00.000Z"", ""startDate"": ""2021-04-19T03:17:29.791Z"", ""completeDate"": ""2021-04-25T04:44:34.414Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1248,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 57, ""goal"": """", ""name"": ""EE Sprint 36"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/57"", ""state"": ""closed"", ""endDate"": ""2021-04-30T04:44:00.000Z"", ""startDate"": ""2021-04-25T04:45:23.592Z"", ""completeDate"": ""2021-05-06T05:43:54.939Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
+1249,"{""ConnectionId"":2,""BoardId"":8}","{""id"": 60, ""goal"": """", ""name"": ""EE Sprint 37"", ""self"": ""https://merico.atlassian.net/rest/agile/1.0/sprint/60"", ""state"": ""closed"", ""endDate"": ""2021-05-14T15:59:00.000Z"", ""startDate"": ""2021-05-05T17:55:31.879Z"", ""completeDate"": ""2021-05-17T01:51:41.754Z"", ""originBoardId"": 8}","https://merico.atlassian.net/rest/agile/1.0/board/8/sprint?jql=ORDER+BY+created+ASC&maxResults=50&startAt=0","null","2022-06-23 13:38:52.217"
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_users.csv b/plugins/jira/e2e/raw_tables/_raw_jira_api_users.csv
new file mode 100644
index 00000000..cce81945
--- /dev/null
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_users.csv
@@ -0,0 +1,31 @@
+"id","params","data","url","input","created_at"
+812101,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=557058:f58131cb-b67d-43c7-b30d-6b58d40bd077"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""557058:f58131cb-b67d-43c7-b30d-6b58d40bd077"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/600529a9c8bfef89daa848e6db28ed2d?d=https%3A%2F [...]
+812102,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=557058:46121f43-e58d-4ff4-83fd-a79fb4b71b45"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""557058:46121f43-e58d-4ff4-83fd-a79fb4b71b45"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/97f7c79b50890409584990ddde1920b3?d=https%3A%2F [...]
+812103,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/f1e7dd8eadd9170aff5df20da45c849d?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812104,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0947d31e0c2a15fd83"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0947d31e0c2a15fd83"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/fa7eb84a8ad9e90ff75a00dcc134ba4c?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812105,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0984083c0c12e5af8f"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0984083c0c12e5af8f"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5ecfbd0984083c0c12e5af8f/8bd19c25-c051-47f3-a41a- [...]
+812106,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812107,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0aaa47a00c1997ea8e"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0aaa47a00c1997ea8e"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/dfc23cdb7938ba887badda2e3fac179d?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812108,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0b0827650c1eeb2ab6"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0b0827650c1eeb2ab6"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5ecfbd0b0827650c1eeb2ab6/8f882204-a169-4200-8a07 [...]
+812109,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0ba04d9c0c220c18d8"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 3, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0ba04d9c0c220c18d8"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5ecfbd0ba04d9c0c220c18d8/22fb069e-32f9-4ab8-be11- [...]
+812110,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0beb77320c1f821a26"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 4, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0beb77320c1f821a26"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5ecfbd0beb77320c1f821a26/bb1e828a-f91b-4237-85b0- [...]
+812111,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0c2490cf0c09e2e598"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0c2490cf0c09e2e598"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/21c497af87015df6beee68b1829ccd38?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812112,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0c730ec90c1999cadf"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0c730ec90c1999cadf"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/9f2459a1fcb78fd5c1d8b70bf3917992?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812113,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5eec896fe571480ac2ae6ede"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 5, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5eec896fe571480ac2ae6ede"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5eec896fe571480ac2ae6ede/1a02d070-08b5-43df-bd7f- [...]
+812114,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5eef5ae43589f00ab40dc60f"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5eef5ae43589f00ab40dc60f"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/133f8093dfaf54f4a11902ad59702877?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812115,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5eef5ae43589f00ab40dc611"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5eef5ae43589f00ab40dc611"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/1f32b08d4afe93746e310bd3de23ff01?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812116,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ef16f3e7e95e80a81fedc0a"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ef16f3e7e95e80a81fedc0a"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/14370ded2a7ce4669403f7f895961c58?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812117,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ef3254a8624070abc590972"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ef3254a8624070abc590972"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/24c4783eaa37f4e32874cd58dae0a4b2?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812118,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f032527e407a4001cf04d5c"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f032527e407a4001cf04d5c"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/7967062a702c1bb9fa629748ab219f37?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812119,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f05f5b15ee2c300233b4436"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f05f5b15ee2c300233b4436"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/69667c2c63ce892e11b9ac098e3abc4f?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812120,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f184c6dd680320021c3f8a1"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f184c6dd680320021c3f8a1"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/849b584b0be6e2ab58555276fdb4e565?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812121,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f32012eea5e2f0039284885"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f32012eea5e2f0039284885"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/64fa1e6f684df098f2c748096893fbcc?d=https%3A%2F%2Favatar-management--avatars.us-west [...]
+812122,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f32012f347294003ed909fb"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f32012f347294003ed909fb"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/d1d69b6c79d3ef5f1c92022969a15485?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812123,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f586b28df83ab007d759bfa"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f586b28df83ab007d759bfa"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/401fe3b2e223239efc2e6407ebfcf77d?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812124,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f5ede6f3242e8006f3bd173"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f5ede6f3242e8006f3bd173"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5f5ede6f3242e8006f3bd173/fdfa3399-fe03-40d7-8c11- [...]
+812125,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f6c41784147d6007749dd66"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 4, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f6c41784147d6007749dd66"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5f6c41784147d6007749dd66/036cd333-40df-4b47-a5ee- [...]
+812126,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f73f85158899e007055c7d3"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f73f85158899e007055c7d3"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/dc81db75677218a2dce93b7abee1a752?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812127,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5f8d380729bd8a006f5a90a0"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5f8d380729bd8a006f5a90a0"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/bf2a5e92812cfcc9c1ac29582d619a19?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812128,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 2, ""items"": []}, ""locale"": ""zh_CN"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110-8a89- [...]
+812129,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fab870b7cfc240071f37525"", ""active"": true, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 1, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fab870b7cfc240071f37525"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/8d37abf9dd0fef7ab3f9123d641d791e?d=https%3A%2F%2Favatar-management--avatars.us-west- [...]
+812130,"{""ConnectionId"":2,""BoardId"":8}","{""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fb48fe20d2f61006f0d0106"", ""active"": false, ""expand"": ""groups,applicationRoles"", ""groups"": {""size"": 0, ""items"": []}, ""locale"": ""en_US"", ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fb48fe20d2f61006f0d0106"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fb48fe20d2f61006f0d0106/3233dbe8-0b15-45fa-96f3 [...]
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_worklogs.csv b/plugins/jira/e2e/raw_tables/_raw_jira_api_worklogs.csv
new file mode 100644
index 00000000..24ef3f6e
--- /dev/null
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_worklogs.csv
@@ -0,0 +1,31 @@
+"id","params","data","url","input","created_at"
+1248,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10010"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10085/worklog/10010"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1249,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10218"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10079/worklog/10218"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1250,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10007"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10077/worklog/10007"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1251,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10008"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10077/worklog/10008"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1252,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10006"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10076/worklog/10006"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1253,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10009"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/10078/worklog/10009"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5ecfbd0a47d31e0c2a15fd87"", ""active"": false, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5ecfbd0a47d31e0c2a15fd87"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/70034f92b12867f30613f25aadf6f8ca?d=https%3A%2F%2Favatar-management--avatars.us [...]
+1330,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10713"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10713"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1331,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10717"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10717"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1332,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10718"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10718"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1333,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10719"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10719"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1334,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10720"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10720"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1335,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10726"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10726"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1336,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10729"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10729"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1337,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10733"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/11956/worklog/10733"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1338,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10611"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12083/worklog/10611"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5e9711ba34f7b90c0fbc37d3"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5e9711ba34f7b90c0fbc37d3"", ""avatarUrls"": {""16x16"": ""https://secure.gravatar.com/avatar/f1e7dd8eadd9170aff5df20da45c849d?d=https%3A%2F%2Favatar-management--avatars.us- [...]
+1339,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10809"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12263/worklog/10809"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1340,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10810"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12263/worklog/10810"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1341,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10811"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12263/worklog/10811"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1342,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10922"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12263/worklog/10922"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1343,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10946"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12351/worklog/10946"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1344,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10708"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12411/worklog/10708"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1345,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10714"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12604/worklog/10714"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1346,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10728"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12604/worklog/10728"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1347,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10761"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12692/worklog/10761"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1348,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10738"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12760/worklog/10738"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1349,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10743"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12760/worklog/10743"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1350,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10750"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12760/worklog/10750"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1351,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10759"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12760/worklog/10759"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1352,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10732"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12796/worklog/10732"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
+1353,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10736"", ""self"": ""https://merico.atlassian.net/rest/api/2/issue/12796/worklog/10736"", ""author"": {""self"": ""https://merico.atlassian.net/rest/api/2/user?accountId=5fa8b6d142ab3b006eaa6f42"", ""active"": true, ""timeZone"": ""Asia/Shanghai"", ""accountId"": ""5fa8b6d142ab3b006eaa6f42"", ""avatarUrls"": {""16x16"": ""https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/5fa8b6d142ab3b006eaa6f42/a000c4fd-4022-4110- [...]
diff --git a/plugins/jira/e2e/remotelink_test.go b/plugins/jira/e2e/remotelink_test.go
new file mode 100644
index 00000000..9cc49977
--- /dev/null
+++ b/plugins/jira/e2e/remotelink_test.go
@@ -0,0 +1,79 @@
+/*
+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 e2e
+
+import (
+	"testing"
+
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/plugins/jira/impl"
+	"github.com/apache/incubator-devlake/plugins/jira/models"
+	"github.com/apache/incubator-devlake/plugins/jira/tasks"
+)
+
+func TestRemotelinkDataFlow(t *testing.T) {
+	var plugin impl.Jira
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "jira", plugin)
+
+	taskData := &tasks.JiraTaskData{
+		Options: &tasks.JiraOptions{
+			ConnectionId:        2,
+			BoardId:             8,
+			TransformationRules: tasks.TransformationRules{RemotelinkCommitShaPattern: ".*/commit/(.*)"},
+		},
+	}
+
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_jira_api_remotelinks.csv", "_raw_jira_api_remotelinks")
+
+	// verify remotelink extraction
+	dataflowTester.FlushTabler(&models.JiraRemotelink{})
+	dataflowTester.FlushTabler(&models.JiraIssueCommit{})
+	dataflowTester.Subtask(tasks.ExtractRemotelinksMeta, taskData)
+	dataflowTester.VerifyTable(
+		models.JiraRemotelink{},
+		"./snapshot_tables/_tool_jira_remotelinks.csv",
+		[]string{
+			"connection_id",
+			"remotelink_id",
+			"issue_id",
+			"self",
+			"title",
+			"url",
+			"issue_updated",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+	dataflowTester.VerifyTable(
+		models.JiraIssueCommit{},
+		"./snapshot_tables/_tool_jira_issue_commits.csv",
+		[]string{
+			"connection_id",
+			"issue_id",
+			"commit_sha",
+			"commit_url",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+}
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_changelog.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_changelog.csv
new file mode 100644
index 00000000..07e4cb49
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_changelog.csv
@@ -0,0 +1,31 @@
+connection_id,board_id,issue_id
+2,8,10063
+2,8,10064
+2,8,10065
+2,8,10066
+2,8,10067
+2,8,10068
+2,8,10070
+2,8,10071
+2,8,10072
+2,8,10076
+2,8,10077
+2,8,10078
+2,8,10079
+2,8,10081
+2,8,10082
+2,8,10085
+2,8,10086
+2,8,10087
+2,8,10088
+2,8,10089
+2,8,10090
+2,8,10091
+2,8,10092
+2,8,10093
+2,8,10094
+2,8,10095
+2,8,10096
+2,8,10097
+2,8,10098
+2,8,10099
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_worklog.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_worklog.csv
new file mode 100644
index 00000000..07e4cb49
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_issues_for_worklog.csv
@@ -0,0 +1,31 @@
+connection_id,board_id,issue_id
+2,8,10063
+2,8,10064
+2,8,10065
+2,8,10066
+2,8,10067
+2,8,10068
+2,8,10070
+2,8,10071
+2,8,10072
+2,8,10076
+2,8,10077
+2,8,10078
+2,8,10079
+2,8,10081
+2,8,10082
+2,8,10085
+2,8,10086
+2,8,10087
+2,8,10088
+2,8,10089
+2,8,10090
+2,8,10091
+2,8,10092
+2,8,10093
+2,8,10094
+2,8,10095
+2,8,10096
+2,8,10097
+2,8,10098
+2,8,10099
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_board_sprints.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_sprints.csv
new file mode 100644
index 00000000..740af284
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_board_sprints.csv
@@ -0,0 +1,31 @@
+connection_id,board_id,sprint_id
+2,8,7
+2,8,9
+2,8,15
+2,8,17
+2,8,18
+2,8,19
+2,8,20
+2,8,21
+2,8,25
+2,8,26
+2,8,27
+2,8,28
+2,8,30
+2,8,31
+2,8,32
+2,8,33
+2,8,34
+2,8,35
+2,8,36
+2,8,37
+2,8,38
+2,8,40
+2,8,41
+2,8,42
+2,8,43
+2,8,46
+2,8,47
+2,8,50
+2,8,57
+2,8,60
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_changelog_items.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_changelog_items.csv
new file mode 100644
index 00000000..2f445af8
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_changelog_items.csv
@@ -0,0 +1,31 @@
+connection_id,changelog_id,field,field_type,field_id,from_value,from_string,to_value,to_string
+2,11646,assignee,jira,,,,5ecfbd0ba04d9c0c220c18d8,yanghui
+2,11648,assignee,jira,,5ecfbd0ba04d9c0c220c18d8,yanghui,5ecfbd0c2490cf0c09e2e598,Gerile Tu
+2,11677,summary,jira,,,[Industry Metrics],,[Industry Metrics]
+2,11798,summary,jira,,,[Industry Metrics],,[Industry Metrics] 
+2,11913,Component,jira,,,,10003,Industry Metrics
+2,11915,Component,jira,,,,10004,Charts
+2,11935,Component,jira,,10004,Charts,,
+2,11993,Rank,custom,,,,,Ranked higher
+2,12011,Epic Link,custom,,,,10084,EE-22
+2,12016,summary,jira,,,[Industry Metrics] ,,
+2,12058,Rank,custom,,,,,Ranked higher
+2,12766,RemoteIssueLink,jira,,,,10111,"This issue links to ""Commit - #EE-160 add industry unittest (Web Link)"""
+2,13012,RemoteIssueLink,jira,,,,10131,"This issue links to ""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)"""
+2,13181,RemoteIssueLink,jira,,,,10144,"This issue links to ""Commit - #EE-160 add IndustryQuery.test.ts (Web Link)"""
+2,13187,RemoteIssueLink,jira,,,,10145,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)"""
+2,13189,RemoteIssueLink,jira,,,,10146,"This issue links to ""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)"""
+2,13190,RemoteIssueLink,jira,,,,10147,"This issue links to ""Commit - #EE-160 add Industry model (Web Link)"""
+2,13192,RemoteIssueLink,jira,,,,10148,"This issue links to ""Commit - #EE-160 rename (Web Link)"""
+2,13193,RemoteIssueLink,jira,,,,10149,"This issue links to ""Commit - #EE-160 add industry unittest (Web Link)"""
+2,13194,RemoteIssueLink,jira,,,,10150,"This issue links to ""Commit - #EE-160 add getQualityMetric (Web Link)"""
+2,13257,RemoteIssueLink,jira,,,,10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)"""
+2,15273,RemoteIssueLink,jira,,10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)"""
+2,15274,RemoteIssueLink,jira,,10145,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)""",10145,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)"""
+2,15305,RemoteIssueLink,jira,,,,10250,"This issue links to ""Commit - #EE-160 add group industy data (Web Link)"""
+2,15310,RemoteIssueLink,jira,,,,10251,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)"""
+2,15351,RemoteIssueLink,jira,,10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)"""
+2,15357,RemoteIssueLink,jira,,10251,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""",10251,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)"""
+2,15397,RemoteIssueLink,jira,,10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)"""
+2,15400,RemoteIssueLink,jira,,10251,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""",10251,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)"""
+2,15536,RemoteIssueLink,jira,,10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",10154,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)"""
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_changelogs.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_changelogs.csv
new file mode 100644
index 00000000..a27e4aef
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_changelogs.csv
@@ -0,0 +1,31 @@
+connection_id,changelog_id,issue_id,author_account_id,author_display_name,author_active,created,issue_updated,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+2,11646,10063,5ecfbd0ba04d9c0c220c18d8,yanghui,1,2020-06-17T07:39:14.729+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986053,
+2,11648,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-17T07:40:05.335+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986054,
+2,11677,10063,5ecfbd0ba04d9c0c220c18d8,yanghui,1,2020-06-17T07:46:44.006+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986055,
+2,11798,10063,5ecfbd0c2490cf0c09e2e598,Gerile Tu,1,2020-06-18T05:58:14.769+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986056,
+2,11913,10063,5ecfbd0c2490cf0c09e2e598,Gerile Tu,1,2020-06-19T01:07:20.709+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986057,
+2,11915,10063,5ecfbd0c2490cf0c09e2e598,Gerile Tu,1,2020-06-19T01:07:59.090+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986058,
+2,11935,10063,5ecfbd0c2490cf0c09e2e598,Gerile Tu,1,2020-06-19T01:31:52.567+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986059,
+2,11993,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-19T05:30:01.576+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986060,
+2,12011,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-19T06:25:41.732+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986061,
+2,12016,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-19T06:26:00.014+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986062,
+2,12058,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-19T08:37:40.933+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986063,
+2,12766,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-27T19:20:53.685+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986064,
+2,13012,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-28T19:33:53.703+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986065,
+2,13181,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:20.886+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986066,
+2,13187,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.216+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986067,
+2,13189,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.533+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986068,
+2,13190,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.602+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986069,
+2,13192,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.612+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986070,
+2,13193,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.632+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986071,
+2,13194,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-29T19:34:21.652+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986072,
+2,13257,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-06-30T07:08:13.527+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986073,
+2,15273,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T18:20:07.965+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986074,
+2,15274,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T18:20:09.481+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986075,
+2,15305,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T18:20:35.972+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986076,
+2,15310,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T18:20:36.221+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986077,
+2,15351,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T23:49:54.024+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986078,
+2,15357,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-05T23:49:54.265+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986079,
+2,15397,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-06T02:45:22.440+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986080,
+2,15400,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-06T02:45:22.555+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986081,
+2,15536,10063,5e9711ba34f7b90c0fbc37d3,Rankin Zheng,1,2020-07-06T12:38:44.036+00:00,2021-03-28T08:06:12.964+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_changelogs,986082,
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_issue_commits.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_issue_commits.csv
new file mode 100644
index 00000000..f4eebae4
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_issue_commits.csv
@@ -0,0 +1,10 @@
+connection_id,issue_id,commit_sha,commit_url,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+2,10063,8748a066cbaf67b15e86f2c636f9931347e987cf,https://example.com/-/commit/8748a066cbaf67b15e86f2c636f9931347e987cf,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101041,
+2,10064,abc0892edaee00dd7ee268dbee71620407a29bca,https://example.com/-/commit/abc0892edaee00dd7ee268dbee71620407a29bca,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101043,
+2,10064,e6bde456807818c5c78d7b265964d6d48b653af6,https://example.com/-/commit/e6bde456807818c5c78d7b265964d6d48b653af6,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101044,
+2,10065,8f91020bcf684c6ad07adfafa3d8a2f826686c42,https://example.com/-/commit/8f91020bcf684c6ad07adfafa3d8a2f826686c42,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101042,
+2,10066,0dfe2e9ed88ad4e27f825d9b67d4d56ac983c5ef,https://example.com/-/commit/0dfe2e9ed88ad4e27f825d9b67d4d56ac983c5ef,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101045,
+2,10139,8993c04249e9d549e8950daec86717548c53c423,https://example.com/-/commit/8993c04249e9d549e8950daec86717548c53c423,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101053,
+2,10145,07aa2ebed68e286dc51a7e0082031196a6135f74,https://example.com/-/commit/07aa2ebed68e286dc51a7e0082031196a6135f74,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101059,
+2,10145,d70d6687e06304d9b6e0cb32b3f8c0f0928400f7,https://example.com/-/commit/d70d6687e06304d9b6e0cb32b3f8c0f0928400f7,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101060,
+2,10145,ef5ab26111744f65f5191b247767a473c70d6c95,https://example.com/-/commit/ef5ab26111744f65f5191b247767a473c70d6c95,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101061,
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_remotelinks.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_remotelinks.csv
new file mode 100644
index 00000000..4b0f87fd
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_remotelinks.csv
@@ -0,0 +1,31 @@
+connection_id,remotelink_id,connection_id,remotelink_id,issue_id,self,title,url,issue_updated,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+2,10005,2,10005,10141,https://merico.atlassian.net/rest/api/2/issue/EE-71/remotelink/10005,GitLab Issue,https://example.com/-/issues/2282,2021-03-28T08:05:57.636+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101054,
+2,10006,2,10006,10142,https://merico.atlassian.net/rest/api/2/issue/EE-72/remotelink/10006,GitLab Issue,https://example.com/-/issues/2293,2021-03-28T08:05:57.680+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101055,
+2,10007,2,10007,10143,https://merico.atlassian.net/rest/api/2/issue/EE-73/remotelink/10007,GitLab Issue,https://example.com/-/issues/2323,2021-03-28T08:05:59.967+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101056,
+2,10008,2,10008,10144,https://merico.atlassian.net/rest/api/2/issue/EE-74/remotelink/10008,GitLab Issue,https://example.com/-/issues/2322,2021-03-28T08:05:59.772+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101057,
+2,10009,2,10009,10085,https://merico.atlassian.net/rest/api/2/issue/EE-23/remotelink/10009,GitLab Issue,https://example.com/-/issues/2313,2021-03-28T08:05:57.095+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101046,
+2,10010,2,10010,10126,https://merico.atlassian.net/rest/api/2/issue/EE-64/remotelink/10010,GitLab Issue,https://example.com/-/issues/2296,2021-03-28T08:05:57.002+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101048,
+2,10011,2,10011,10127,https://merico.atlassian.net/rest/api/2/issue/EE-65/remotelink/10011,GitLab Issue,https://example.com/-/issues/2283,2021-03-28T08:05:54.768+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101049,
+2,10012,2,10012,10128,https://merico.atlassian.net/rest/api/2/issue/EE-66/remotelink/10012,GitLab Issue,https://example.com/-/issues/2281,2021-03-28T08:05:54.816+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101050,
+2,10013,2,10013,10145,https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10013,GitLab Issue,https://example.com/-/issues/2112,2021-03-28T08:06:22.874+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101058,
+2,10014,2,10014,10146,https://merico.atlassian.net/rest/api/2/issue/EE-76/remotelink/10014,GitLab Issue,https://example.com/-/issues/2277,2021-03-28T08:06:12.833+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101062,
+2,10020,2,10020,10154,https://merico.atlassian.net/rest/api/2/issue/EE-84/remotelink/10020,GitLab Issue,https://example.com/-/issues/2307,2021-03-28T08:05:58.319+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101070,
+2,10021,2,10021,10153,https://merico.atlassian.net/rest/api/2/issue/EE-83/remotelink/10021,GitLab Issue,https://example.com/-/issues/2306,2021-03-28T08:05:58.464+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101069,
+2,10022,2,10022,10152,https://merico.atlassian.net/rest/api/2/issue/EE-82/remotelink/10022,GitLab Issue,https://example.com/-/issues/2305,2021-03-28T08:05:58.414+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101068,
+2,10023,2,10023,10151,https://merico.atlassian.net/rest/api/2/issue/EE-81/remotelink/10023,GitLab Issue,https://example.com/-/issues/2312,2021-03-28T08:05:57.876+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101067,
+2,10024,2,10024,10150,https://merico.atlassian.net/rest/api/2/issue/EE-80/remotelink/10024,GitLab Issue,https://example.com/-/issues/2341,2021-03-28T08:06:07.546+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101066,
+2,10025,2,10025,10149,https://merico.atlassian.net/rest/api/2/issue/EE-79/remotelink/10025,GitLab Issue,https://example.com/-/issues/2324,2021-03-28T08:05:57.587+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101065,
+2,10026,2,10026,10148,https://merico.atlassian.net/rest/api/2/issue/EE-78/remotelink/10026,GitLab Issue,https://example.com/-/issues/2330,2021-03-28T08:05:57.538+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101064,
+2,10027,2,10027,10147,https://merico.atlassian.net/rest/api/2/issue/EE-77/remotelink/10027,GitLab Issue,https://example.com/-/issues/2318,2021-03-28T08:05:57.439+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101063,
+2,10032,2,10032,10064,https://merico.atlassian.net/rest/api/2/issue/EE-2/remotelink/10032,Commit - Feat(EE-2): add issues stacked chart at quality report page,https://example.com/-/commit/abc0892edaee00dd7ee268dbee71620407a29bca,2021-03-28T08:05:55.016+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101043,
+2,10033,2,10033,10064,https://merico.atlassian.net/rest/api/2/issue/EE-2/remotelink/10033,Commit - Feat(EE-2): add issues stacked chart at quality report page,https://example.com/-/commit/e6bde456807818c5c78d7b265964d6d48b653af6,2021-03-28T08:05:55.016+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101044,
+2,10035,2,10035,10065,https://merico.atlassian.net/rest/api/2/issue/EE-3/remotelink/10035,Commit - Feat(EE-3): add issues grouped chart at quality report page,https://example.com/-/commit/8f91020bcf684c6ad07adfafa3d8a2f826686c42,2021-03-28T08:05:55.061+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101042,
+2,10036,2,10036,10066,https://merico.atlassian.net/rest/api/2/issue/EE-4/remotelink/10036,Commit - Feat(EE-4): preliminarily add issues distribution chart at quality report page,https://example.com/-/commit/0dfe2e9ed88ad4e27f825d9b67d4d56ac983c5ef,2021-03-28T08:06:09.535+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101045,
+2,10037,2,10037,10145,https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10037,Commit - EE-75. Fix #2112. Allow skip SMTP config,https://example.com/-/commit/07aa2ebed68e286dc51a7e0082031196a6135f74,2021-03-28T08:06:22.874+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101059,
+2,10038,2,10038,10145,https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10038,Commit - EE-75. Fix #2112. Allow skip SMTP config,https://example.com/-/commit/d70d6687e06304d9b6e0cb32b3f8c0f0928400f7,2021-03-28T08:06:22.874+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101060,
+2,10039,2,10039,10145,https://merico.atlassian.net/rest/api/2/issue/EE-75/remotelink/10039,Commit - EE-75. Fix #2112. Allow skip SMTP config,https://example.com/-/commit/ef5ab26111744f65f5191b247767a473c70d6c95,2021-03-28T08:06:22.874+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101061,
+2,10042,2,10042,10063,https://merico.atlassian.net/rest/api/2/issue/EE-1/remotelink/10042,Commit - Feat(EE-1): add modularity metric chart,https://example.com/-/commit/8748a066cbaf67b15e86f2c636f9931347e987cf,2021-03-28T08:06:08.713+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101041,
+2,10053,2,10053,10119,https://merico.atlassian.net/rest/api/2/issue/EE-57/remotelink/10053,https://example.com/-/issues/2288,https://example.com/-/issues/2288,2021-03-28T08:07:09.395+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101047,
+2,10067,2,10067,10139,https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10067,Wiki Page,https://merico.atlassian.net/wiki/pages/viewpage.action?pageId=11304962,2021-03-28T08:06:21.363+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101051,
+2,10324,2,10324,10139,https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10324,Merge request - feat: EE-69 - Teams tree list view for 2.7,https://example.com/-/merge_requests/1195,2021-03-28T08:06:21.363+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101052,
+2,10325,2,10325,10139,https://merico.atlassian.net/rest/api/2/issue/EE-69/remotelink/10325,Commit - Merge branch 'release/2.7-teams' into 'release/2.7',https://example.com/-/commit/8993c04249e9d549e8950daec86717548c53c423,2021-03-28T08:06:21.363+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_remotelinks,101053,
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_sprints.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_sprints.csv
new file mode 100644
index 00000000..82c7324f
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_sprints.csv
@@ -0,0 +1,31 @@
+connection_id,sprint_id,self,state,name,start_date,end_date,complete_date,origin_board_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+2,7,https://merico.atlassian.net/rest/agile/1.0/sprint/7,closed,EE Sprint 7,2020-06-12T00:38:51.882+00:00,2020-06-26T00:38:00.000+00:00,2020-06-22T05:59:58.980+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1220,
+2,9,https://merico.atlassian.net/rest/agile/1.0/sprint/9,closed,EE Sprint 8,2020-06-22T06:00:33.769+00:00,2020-07-10T06:00:00.000+00:00,2020-07-13T01:21:57.062+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1221,
+2,15,https://merico.atlassian.net/rest/agile/1.0/sprint/15,closed,Emma Sprint 1,2020-06-22T01:32:04.664+00:00,2020-07-06T01:32:52.000+00:00,2020-06-29T02:50:44.043+00:00,13,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1222,
+2,17,https://merico.atlassian.net/rest/agile/1.0/sprint/17,closed,EE Sprint 9,2020-07-13T01:22:22.745+00:00,2020-07-27T01:22:00.000+00:00,2020-07-27T01:23:43.083+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1223,
+2,18,https://merico.atlassian.net/rest/agile/1.0/sprint/18,closed,EE Sprint 10,2020-07-27T01:26:13.465+00:00,2020-08-10T01:26:00.000+00:00,2020-08-10T02:29:10.811+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1224,
+2,19,https://merico.atlassian.net/rest/agile/1.0/sprint/19,closed,EE Sprint 11,2020-08-09T01:15:11.205+00:00,2020-08-21T01:15:00.000+00:00,2020-08-31T01:34:04.666+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1225,
+2,20,https://merico.atlassian.net/rest/agile/1.0/sprint/20,closed,EE Sprint 14,2020-08-31T01:35:38.626+00:00,2020-09-07T01:35:00.000+00:00,2020-11-05T07:46:55.346+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1226,
+2,21,https://merico.atlassian.net/rest/agile/1.0/sprint/21,closed,EE Sprint 15,2020-11-09T08:29:00.529+00:00,2020-11-16T08:29:00.000+00:00,2020-11-16T23:07:33.015+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1227,
+2,25,https://merico.atlassian.net/rest/agile/1.0/sprint/25,closed,EE Sprint 16,2020-11-16T23:14:57.590+00:00,2020-11-23T23:14:00.000+00:00,2020-11-24T03:56:42.281+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1228,
+2,26,https://merico.atlassian.net/rest/agile/1.0/sprint/26,closed,EE Sprint 17,2020-11-20T03:56:12.414+00:00,2020-11-27T03:56:00.000+00:00,2020-11-30T02:48:49.378+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1229,
+2,27,https://merico.atlassian.net/rest/agile/1.0/sprint/27,closed,EE Sprint 18,2020-11-30T02:49:24.536+00:00,2020-12-07T02:49:00.000+00:00,2020-12-07T01:41:17.786+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1230,
+2,28,https://merico.atlassian.net/rest/agile/1.0/sprint/28,closed,EE Sprint 19,2020-12-07T01:41:40.676+00:00,2020-12-14T01:41:00.000+00:00,2020-12-14T01:00:22.218+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1231,
+2,30,https://merico.atlassian.net/rest/agile/1.0/sprint/30,closed,EE Sprint 20,2020-12-14T01:54:34.826+00:00,2020-12-28T01:54:00.000+00:00,2020-12-28T06:11:27.241+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1232,
+2,31,https://merico.atlassian.net/rest/agile/1.0/sprint/31,closed,EE Sprint 21,2020-12-28T06:11:46.433+00:00,2021-01-10T18:11:00.000+00:00,2021-01-11T02:52:38.721+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1233,
+2,32,https://merico.atlassian.net/rest/agile/1.0/sprint/32,closed,EE Sprint 22,2021-01-11T04:09:10.389+00:00,2021-01-18T04:09:00.000+00:00,2021-01-18T03:10:51.076+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1234,
+2,33,https://merico.atlassian.net/rest/agile/1.0/sprint/33,closed,EE Sprint 23,2021-01-18T03:45:20.174+00:00,2021-01-25T03:45:00.000+00:00,2021-01-25T03:03:10.386+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1235,
+2,34,https://merico.atlassian.net/rest/agile/1.0/sprint/34,closed,EE Sprint 24,2021-01-25T03:56:45.942+00:00,2021-02-01T03:56:00.000+00:00,2021-02-01T03:05:30.868+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1236,
+2,35,https://merico.atlassian.net/rest/agile/1.0/sprint/35,closed,EE Sprint 25,2021-02-01T03:39:40.472+00:00,2021-02-08T03:39:00.000+00:00,2021-02-07T03:01:13.596+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1237,
+2,36,https://merico.atlassian.net/rest/agile/1.0/sprint/36,closed,EE Sprint 26,2021-02-07T03:44:55.158+00:00,2021-02-14T03:44:00.000+00:00,2021-02-22T03:05:16.997+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1238,
+2,37,https://merico.atlassian.net/rest/agile/1.0/sprint/37,closed,EE Sprint 27,2021-02-22T03:30:53.407+00:00,2021-03-01T03:30:00.000+00:00,2021-02-26T08:15:20.988+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1239,
+2,38,https://merico.atlassian.net/rest/agile/1.0/sprint/38,closed,EE Sprint 28,2021-03-01T03:50:54.464+00:00,2021-03-08T03:50:00.000+00:00,2021-03-05T08:03:48.144+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1240,
+2,40,https://merico.atlassian.net/rest/agile/1.0/sprint/40,closed,EE Sprint 29,2021-03-08T05:34:15.296+00:00,2021-03-14T17:34:00.000+00:00,2021-03-15T06:53:34.924+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1241,
+2,41,https://merico.atlassian.net/rest/agile/1.0/sprint/41,closed,EE Sprint 30,2021-03-15T07:23:47.468+00:00,2021-03-21T19:23:00.000+00:00,2021-03-19T08:57:51.706+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1242,
+2,42,https://merico.atlassian.net/rest/agile/1.0/sprint/42,closed,EE Sprint 31,2021-03-22T03:00:03.936+00:00,2021-03-28T15:00:00.000+00:00,2021-03-26T08:06:09.772+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1243,
+2,43,https://merico.atlassian.net/rest/agile/1.0/sprint/43,closed,EE Sprint 32,2021-03-29T02:54:16.155+00:00,2021-04-04T14:54:00.000+00:00,2021-04-06T03:29:56.386+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1244,
+2,46,https://merico.atlassian.net/rest/agile/1.0/sprint/46,closed,EE Sprint 33,2021-04-06T09:59:28.107+00:00,2021-04-12T21:59:00.000+00:00,2021-04-12T02:57:53.585+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1245,
+2,47,https://merico.atlassian.net/rest/agile/1.0/sprint/47,closed,EE Sprint 34,2021-04-12T02:58:51.011+00:00,2021-04-19T02:58:00.000+00:00,2021-04-16T08:43:09.709+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1246,
+2,50,https://merico.atlassian.net/rest/agile/1.0/sprint/50,closed,EE Sprint 35,2021-04-19T03:17:29.791+00:00,2021-04-26T03:17:00.000+00:00,2021-04-25T04:44:34.414+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1247,
+2,57,https://merico.atlassian.net/rest/agile/1.0/sprint/57,closed,EE Sprint 36,2021-04-25T04:45:23.592+00:00,2021-04-30T04:44:00.000+00:00,2021-05-06T05:43:54.939+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1248,
+2,60,https://merico.atlassian.net/rest/agile/1.0/sprint/60,closed,EE Sprint 37,2021-05-05T17:55:31.879+00:00,2021-05-14T15:59:00.000+00:00,2021-05-17T01:51:41.754+00:00,8,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_sprints,1249,
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_worklogs.csv b/plugins/jira/e2e/snapshot_tables/_tool_jira_worklogs.csv
new file mode 100644
index 00000000..0f65f409
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_worklogs.csv
@@ -0,0 +1,31 @@
+connection_id,issue_id,worklog_id,author_id,update_author_id,time_spent,time_spent_seconds,updated,started,issue_updated,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+2,10076,10006,,,1d 2h,36000,2020-06-15T08:59:51.302+00:00,2020-06-05T20:59:00.000+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1252,
+2,10077,10007,,,4h,14400,2020-06-15T09:00:26.952+00:00,2020-06-15T09:00:00.000+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1250,
+2,10077,10008,,,4h,14400,2020-06-15T09:01:06.211+00:00,2020-06-15T05:00:42.836+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1251,
+2,10078,10009,,,1h,3600,2020-06-15T09:01:44.154+00:00,2020-06-15T09:01:00.000+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1253,
+2,10079,10218,,,2h,7200,2020-07-22T07:25:29.102+00:00,2020-07-22T07:24:00.000+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1249,
+2,10085,10010,,,1h,3600,2020-06-15T09:07:56.793+00:00,2020-06-15T09:07:00.000+00:00,2022-04-18T13:49:16.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1248,
+2,11956,10713,cong.wang@merico.dev,cong.wang@merico.dev,3h,10800,2021-01-11T10:01:03.628+00:00,2021-01-11T06:58:43.580+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1330,
+2,11956,10717,cong.wang@merico.dev,cong.wang@merico.dev,2h 30m,9000,2021-01-12T03:53:41.936+00:00,2021-01-12T01:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1331,
+2,11956,10718,cong.wang@merico.dev,cong.wang@merico.dev,30m,1800,2021-01-12T05:11:25.368+00:00,2021-01-12T04:40:51.604+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1332,
+2,11956,10719,cong.wang@merico.dev,cong.wang@merico.dev,4h,14400,2021-01-12T09:59:08.739+00:00,2021-01-12T05:58:22.015+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1333,
+2,11956,10720,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-01-12T12:09:23.539+00:00,2021-01-12T11:08:46.608+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1334,
+2,11956,10726,cong.wang@merico.dev,cong.wang@merico.dev,2h 30m,9000,2021-01-13T03:55:02.070+00:00,2021-01-13T01:24:41.786+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1335,
+2,11956,10729,cong.wang@merico.dev,cong.wang@merico.dev,20m,1200,2021-01-13T07:26:34.565+00:00,2021-01-13T07:06:14.927+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1336,
+2,11956,10733,cong.wang@merico.dev,cong.wang@merico.dev,2h,7200,2021-01-13T11:10:46.917+00:00,2021-01-13T08:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1337,
+2,12083,10611,,,1d,28800,2020-11-20T03:41:21.160+00:00,2020-11-19T19:41:16.606+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1338,
+2,12263,10809,cong.wang@merico.dev,cong.wang@merico.dev,3h,10800,2021-01-27T01:54:00.883+00:00,2021-01-26T07:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1339,
+2,12263,10810,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-01-27T01:54:29.081+00:00,2021-01-27T01:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1340,
+2,12263,10811,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-01-27T03:34:04.537+00:00,2021-01-27T02:33:41.693+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1341,
+2,12263,10922,cong.wang@merico.dev,cong.wang@merico.dev,6h,21600,2021-02-19T11:33:52.222+00:00,2021-02-19T05:33:21.257+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1342,
+2,12351,10946,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-03-02T09:20:19.608+00:00,2021-03-02T08:20:02.371+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1343,
+2,12411,10708,cong.wang@merico.dev,cong.wang@merico.dev,2h,7200,2021-01-11T03:53:25.692+00:00,2021-01-11T01:52:40.264+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1344,
+2,12604,10714,cong.wang@merico.dev,cong.wang@merico.dev,20m,1200,2021-01-11T11:35:33.757+00:00,2021-01-11T11:15:00.400+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1345,
+2,12604,10728,cong.wang@merico.dev,cong.wang@merico.dev,45m,2700,2021-01-13T06:18:35.726+00:00,2021-01-13T05:33:16.447+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1346,
+2,12692,10761,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-01-20T09:55:38.918+00:00,2021-01-20T08:55:12.424+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1347,
+2,12760,10738,cong.wang@merico.dev,cong.wang@merico.dev,3h,10800,2021-01-15T01:17:13.517+00:00,2021-01-14T06:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1348,
+2,12760,10743,cong.wang@merico.dev,cong.wang@merico.dev,3h,10800,2021-01-18T01:13:18.808+00:00,2021-01-15T06:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1349,
+2,12760,10750,cong.wang@merico.dev,cong.wang@merico.dev,3h,10800,2021-01-18T09:05:08.848+00:00,2021-01-18T07:00:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1350,
+2,12760,10759,cong.wang@merico.dev,cong.wang@merico.dev,1h,3600,2021-01-20T05:21:40.077+00:00,2021-01-19T16:30:00.000+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1351,
+2,12796,10732,cong.wang@merico.dev,cong.wang@merico.dev,30m,1800,2021-01-13T11:10:00.634+00:00,2021-01-13T10:39:45.227+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1352,
+2,12796,10736,cong.wang@merico.dev,cong.wang@merico.dev,30m,1800,2021-01-14T06:30:51.411+00:00,2021-01-14T06:00:32.784+00:00,2022-04-19T16:29:51.000+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_worklogs,1353,
diff --git a/plugins/jira/e2e/snapshot_tables/board_sprints.csv b/plugins/jira/e2e/snapshot_tables/board_sprints.csv
new file mode 100644
index 00000000..17386744
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/board_sprints.csv
@@ -0,0 +1,31 @@
+board_id,sprint_id
+jira:JiraBoard:2:8,jira:JiraSprint:2:15
+jira:JiraBoard:2:8,jira:JiraSprint:2:17
+jira:JiraBoard:2:8,jira:JiraSprint:2:18
+jira:JiraBoard:2:8,jira:JiraSprint:2:19
+jira:JiraBoard:2:8,jira:JiraSprint:2:20
+jira:JiraBoard:2:8,jira:JiraSprint:2:21
+jira:JiraBoard:2:8,jira:JiraSprint:2:25
+jira:JiraBoard:2:8,jira:JiraSprint:2:26
+jira:JiraBoard:2:8,jira:JiraSprint:2:27
+jira:JiraBoard:2:8,jira:JiraSprint:2:28
+jira:JiraBoard:2:8,jira:JiraSprint:2:30
+jira:JiraBoard:2:8,jira:JiraSprint:2:31
+jira:JiraBoard:2:8,jira:JiraSprint:2:32
+jira:JiraBoard:2:8,jira:JiraSprint:2:33
+jira:JiraBoard:2:8,jira:JiraSprint:2:34
+jira:JiraBoard:2:8,jira:JiraSprint:2:35
+jira:JiraBoard:2:8,jira:JiraSprint:2:36
+jira:JiraBoard:2:8,jira:JiraSprint:2:37
+jira:JiraBoard:2:8,jira:JiraSprint:2:38
+jira:JiraBoard:2:8,jira:JiraSprint:2:40
+jira:JiraBoard:2:8,jira:JiraSprint:2:41
+jira:JiraBoard:2:8,jira:JiraSprint:2:42
+jira:JiraBoard:2:8,jira:JiraSprint:2:43
+jira:JiraBoard:2:8,jira:JiraSprint:2:46
+jira:JiraBoard:2:8,jira:JiraSprint:2:47
+jira:JiraBoard:2:8,jira:JiraSprint:2:50
+jira:JiraBoard:2:8,jira:JiraSprint:2:57
+jira:JiraBoard:2:8,jira:JiraSprint:2:60
+jira:JiraBoard:2:8,jira:JiraSprint:2:7
+jira:JiraBoard:2:8,jira:JiraSprint:2:9
diff --git a/plugins/jira/e2e/snapshot_tables/changelogs.csv b/plugins/jira/e2e/snapshot_tables/changelogs.csv
new file mode 100644
index 00000000..9ede7325
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/changelogs.csv
@@ -0,0 +1,31 @@
+id,issue_id,author_id,author_name,field_id,field_name,original_from_value,original_to_value,from_value,to_value,created_date
+jira:JiraChangelogItem:2:11646:assignee,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,assignee,,jira:JiraUser:2:5ecfbd0ba04d9c0c220c18d8,,,2020-06-17T07:39:14.729+00:00
+jira:JiraChangelogItem:2:11648:assignee,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,assignee,jira:JiraUser:2:5ecfbd0ba04d9c0c220c18d8,jira:JiraUser:2:5ecfbd0c2490cf0c09e2e598,,,2020-06-17T07:40:05.335+00:00
+jira:JiraChangelogItem:2:11677:summary,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,summary,[Industry Metrics],[Industry Metrics],,,2020-06-17T07:46:44.006+00:00
+jira:JiraChangelogItem:2:11798:summary,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0c2490cf0c09e2e598,Gerile Tu,,summary,[Industry Metrics],[Industry Metrics] ,,,2020-06-18T05:58:14.769+00:00
+jira:JiraChangelogItem:2:11913:Component,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0c2490cf0c09e2e598,Gerile Tu,,Component,,Industry Metrics,,,2020-06-19T01:07:20.709+00:00
+jira:JiraChangelogItem:2:11915:Component,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0c2490cf0c09e2e598,Gerile Tu,,Component,,Charts,,,2020-06-19T01:07:59.090+00:00
+jira:JiraChangelogItem:2:11935:Component,jira:JiraIssue:2:10063,jira:JiraUser:2:5ecfbd0c2490cf0c09e2e598,Gerile Tu,,Component,Charts,,,,2020-06-19T01:31:52.567+00:00
+jira:JiraChangelogItem:2:11993:Rank,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,Rank,,Ranked higher,,,2020-06-19T05:30:01.576+00:00
+jira:JiraChangelogItem:2:12011:Epic Link,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,Epic Link,,EE-22,,,2020-06-19T06:25:41.732+00:00
+jira:JiraChangelogItem:2:12016:summary,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,summary,[Industry Metrics] ,,,,2020-06-19T06:26:00.014+00:00
+jira:JiraChangelogItem:2:12058:Rank,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,Rank,,Ranked higher,,,2020-06-19T08:37:40.933+00:00
+jira:JiraChangelogItem:2:12766:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add industry unittest (Web Link)""",,,2020-06-27T19:20:53.685+00:00
+jira:JiraChangelogItem:2:13012:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)""",,,2020-06-28T19:33:53.703+00:00
+jira:JiraChangelogItem:2:13181:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add IndustryQuery.test.ts (Web Link)""",,,2020-06-29T19:34:20.886+00:00
+jira:JiraChangelogItem:2:13187:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)""",,,2020-06-29T19:34:21.216+00:00
+jira:JiraChangelogItem:2:13189:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add IndustryQuery (getEfficiencyMetric) (Web Link)""",,,2020-06-29T19:34:21.533+00:00
+jira:JiraChangelogItem:2:13190:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add Industry model (Web Link)""",,,2020-06-29T19:34:21.602+00:00
+jira:JiraChangelogItem:2:13192:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 rename (Web Link)""",,,2020-06-29T19:34:21.612+00:00
+jira:JiraChangelogItem:2:13193:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add industry unittest (Web Link)""",,,2020-06-29T19:34:21.632+00:00
+jira:JiraChangelogItem:2:13194:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add getQualityMetric (Web Link)""",,,2020-06-29T19:34:21.652+00:00
+jira:JiraChangelogItem:2:13257:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",,,2020-06-30T07:08:13.527+00:00
+jira:JiraChangelogItem:2:15273:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""","This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",,,2020-07-05T18:20:07.965+00:00
+jira:JiraChangelogItem:2:15274:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)""","This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectEfficiency (which has a developer bug) (Web Link)""",,,2020-07-05T18:20:09.481+00:00
+jira:JiraChangelogItem:2:15305:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 add group industy data (Web Link)""",,,2020-07-05T18:20:35.972+00:00
+jira:JiraChangelogItem:2:15310:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""",,,2020-07-05T18:20:36.221+00:00
+jira:JiraChangelogItem:2:15351:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""","This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",,,2020-07-05T23:49:54.024+00:00
+jira:JiraChangelogItem:2:15357:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""","This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""",,,2020-07-05T23:49:54.265+00:00
+jira:JiraChangelogItem:2:15397:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""","This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",,,2020-07-06T02:45:22.440+00:00
+jira:JiraChangelogItem:2:15400:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""","This issue links to ""Commit - #EE-160 fix group industry data's bug (Web Link)""",,,2020-07-06T02:45:22.555+00:00
+jira:JiraChangelogItem:2:15536:RemoteIssueLink,jira:JiraIssue:2:10063,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin Zheng,,RemoteIssueLink,"This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""","This issue links to ""Commit - #EE-160 add IndustryController.getIndustryProjectQuality (Web Link)""",,,2020-07-06T12:38:44.036+00:00
diff --git a/plugins/jira/e2e/snapshot_tables/sprints.csv b/plugins/jira/e2e/snapshot_tables/sprints.csv
new file mode 100644
index 00000000..b796c54a
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/sprints.csv
@@ -0,0 +1,31 @@
+id,url,status,name,started_date,ended_date,completed_date,original_board_id
+jira:JiraSprint:2:15,https://merico.atlassian.net/rest/agile/1.0/sprint/15,CLOSED,Emma Sprint 1,2020-06-22T01:32:04.664+00:00,2020-07-06T01:32:52.000+00:00,2020-06-29T02:50:44.043+00:00,jira:JiraBoard:2:13
+jira:JiraSprint:2:17,https://merico.atlassian.net/rest/agile/1.0/sprint/17,CLOSED,EE Sprint 9,2020-07-13T01:22:22.745+00:00,2020-07-27T01:22:00.000+00:00,2020-07-27T01:23:43.083+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:18,https://merico.atlassian.net/rest/agile/1.0/sprint/18,CLOSED,EE Sprint 10,2020-07-27T01:26:13.465+00:00,2020-08-10T01:26:00.000+00:00,2020-08-10T02:29:10.811+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:19,https://merico.atlassian.net/rest/agile/1.0/sprint/19,CLOSED,EE Sprint 11,2020-08-09T01:15:11.205+00:00,2020-08-21T01:15:00.000+00:00,2020-08-31T01:34:04.666+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:20,https://merico.atlassian.net/rest/agile/1.0/sprint/20,CLOSED,EE Sprint 14,2020-08-31T01:35:38.626+00:00,2020-09-07T01:35:00.000+00:00,2020-11-05T07:46:55.346+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:21,https://merico.atlassian.net/rest/agile/1.0/sprint/21,CLOSED,EE Sprint 15,2020-11-09T08:29:00.529+00:00,2020-11-16T08:29:00.000+00:00,2020-11-16T23:07:33.015+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:25,https://merico.atlassian.net/rest/agile/1.0/sprint/25,CLOSED,EE Sprint 16,2020-11-16T23:14:57.590+00:00,2020-11-23T23:14:00.000+00:00,2020-11-24T03:56:42.281+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:26,https://merico.atlassian.net/rest/agile/1.0/sprint/26,CLOSED,EE Sprint 17,2020-11-20T03:56:12.414+00:00,2020-11-27T03:56:00.000+00:00,2020-11-30T02:48:49.378+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:27,https://merico.atlassian.net/rest/agile/1.0/sprint/27,CLOSED,EE Sprint 18,2020-11-30T02:49:24.536+00:00,2020-12-07T02:49:00.000+00:00,2020-12-07T01:41:17.786+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:28,https://merico.atlassian.net/rest/agile/1.0/sprint/28,CLOSED,EE Sprint 19,2020-12-07T01:41:40.676+00:00,2020-12-14T01:41:00.000+00:00,2020-12-14T01:00:22.218+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:30,https://merico.atlassian.net/rest/agile/1.0/sprint/30,CLOSED,EE Sprint 20,2020-12-14T01:54:34.826+00:00,2020-12-28T01:54:00.000+00:00,2020-12-28T06:11:27.241+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:31,https://merico.atlassian.net/rest/agile/1.0/sprint/31,CLOSED,EE Sprint 21,2020-12-28T06:11:46.433+00:00,2021-01-10T18:11:00.000+00:00,2021-01-11T02:52:38.721+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:32,https://merico.atlassian.net/rest/agile/1.0/sprint/32,CLOSED,EE Sprint 22,2021-01-11T04:09:10.389+00:00,2021-01-18T04:09:00.000+00:00,2021-01-18T03:10:51.076+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:33,https://merico.atlassian.net/rest/agile/1.0/sprint/33,CLOSED,EE Sprint 23,2021-01-18T03:45:20.174+00:00,2021-01-25T03:45:00.000+00:00,2021-01-25T03:03:10.386+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:34,https://merico.atlassian.net/rest/agile/1.0/sprint/34,CLOSED,EE Sprint 24,2021-01-25T03:56:45.942+00:00,2021-02-01T03:56:00.000+00:00,2021-02-01T03:05:30.868+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:35,https://merico.atlassian.net/rest/agile/1.0/sprint/35,CLOSED,EE Sprint 25,2021-02-01T03:39:40.472+00:00,2021-02-08T03:39:00.000+00:00,2021-02-07T03:01:13.596+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:36,https://merico.atlassian.net/rest/agile/1.0/sprint/36,CLOSED,EE Sprint 26,2021-02-07T03:44:55.158+00:00,2021-02-14T03:44:00.000+00:00,2021-02-22T03:05:16.997+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:37,https://merico.atlassian.net/rest/agile/1.0/sprint/37,CLOSED,EE Sprint 27,2021-02-22T03:30:53.407+00:00,2021-03-01T03:30:00.000+00:00,2021-02-26T08:15:20.988+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:38,https://merico.atlassian.net/rest/agile/1.0/sprint/38,CLOSED,EE Sprint 28,2021-03-01T03:50:54.464+00:00,2021-03-08T03:50:00.000+00:00,2021-03-05T08:03:48.144+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:40,https://merico.atlassian.net/rest/agile/1.0/sprint/40,CLOSED,EE Sprint 29,2021-03-08T05:34:15.296+00:00,2021-03-14T17:34:00.000+00:00,2021-03-15T06:53:34.924+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:41,https://merico.atlassian.net/rest/agile/1.0/sprint/41,CLOSED,EE Sprint 30,2021-03-15T07:23:47.468+00:00,2021-03-21T19:23:00.000+00:00,2021-03-19T08:57:51.706+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:42,https://merico.atlassian.net/rest/agile/1.0/sprint/42,CLOSED,EE Sprint 31,2021-03-22T03:00:03.936+00:00,2021-03-28T15:00:00.000+00:00,2021-03-26T08:06:09.772+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:43,https://merico.atlassian.net/rest/agile/1.0/sprint/43,CLOSED,EE Sprint 32,2021-03-29T02:54:16.155+00:00,2021-04-04T14:54:00.000+00:00,2021-04-06T03:29:56.386+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:46,https://merico.atlassian.net/rest/agile/1.0/sprint/46,CLOSED,EE Sprint 33,2021-04-06T09:59:28.107+00:00,2021-04-12T21:59:00.000+00:00,2021-04-12T02:57:53.585+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:47,https://merico.atlassian.net/rest/agile/1.0/sprint/47,CLOSED,EE Sprint 34,2021-04-12T02:58:51.011+00:00,2021-04-19T02:58:00.000+00:00,2021-04-16T08:43:09.709+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:50,https://merico.atlassian.net/rest/agile/1.0/sprint/50,CLOSED,EE Sprint 35,2021-04-19T03:17:29.791+00:00,2021-04-26T03:17:00.000+00:00,2021-04-25T04:44:34.414+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:57,https://merico.atlassian.net/rest/agile/1.0/sprint/57,CLOSED,EE Sprint 36,2021-04-25T04:45:23.592+00:00,2021-04-30T04:44:00.000+00:00,2021-05-06T05:43:54.939+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:60,https://merico.atlassian.net/rest/agile/1.0/sprint/60,CLOSED,EE Sprint 37,2021-05-05T17:55:31.879+00:00,2021-05-14T15:59:00.000+00:00,2021-05-17T01:51:41.754+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:7,https://merico.atlassian.net/rest/agile/1.0/sprint/7,CLOSED,EE Sprint 7,2020-06-12T00:38:51.882+00:00,2020-06-26T00:38:00.000+00:00,2020-06-22T05:59:58.980+00:00,jira:JiraBoard:2:8
+jira:JiraSprint:2:9,https://merico.atlassian.net/rest/agile/1.0/sprint/9,CLOSED,EE Sprint 8,2020-06-22T06:00:33.769+00:00,2020-07-10T06:00:00.000+00:00,2020-07-13T01:21:57.062+00:00,jira:JiraBoard:2:8
diff --git a/plugins/jira/e2e/snapshot_tables/worklogs.csv b/plugins/jira/e2e/snapshot_tables/worklogs.csv
new file mode 100644
index 00000000..e67603c3
--- /dev/null
+++ b/plugins/jira/e2e/snapshot_tables/worklogs.csv
@@ -0,0 +1,7 @@
+id,author_id,comment,time_spent_minutes,logged_date,started_date,issue_id
+jira:JiraWorklog:2:10076:10006,,,600,2020-06-15T08:59:51.302+00:00,2020-06-05T20:59:00.000+00:00,jira:JiraIssue:2:10076
+jira:JiraWorklog:2:10077:10007,,,240,2020-06-15T09:00:26.952+00:00,2020-06-15T09:00:00.000+00:00,jira:JiraIssue:2:10077
+jira:JiraWorklog:2:10077:10008,,,240,2020-06-15T09:01:06.211+00:00,2020-06-15T05:00:42.836+00:00,jira:JiraIssue:2:10077
+jira:JiraWorklog:2:10078:10009,,,60,2020-06-15T09:01:44.154+00:00,2020-06-15T09:01:00.000+00:00,jira:JiraIssue:2:10078
+jira:JiraWorklog:2:10079:10218,,,120,2020-07-22T07:25:29.102+00:00,2020-07-22T07:24:00.000+00:00,jira:JiraIssue:2:10079
+jira:JiraWorklog:2:10085:10010,,,60,2020-06-15T09:07:56.793+00:00,2020-06-15T09:07:00.000+00:00,jira:JiraIssue:2:10085
diff --git a/plugins/jira/e2e/sprint_test.go b/plugins/jira/e2e/sprint_test.go
new file mode 100644
index 00000000..baad6d3a
--- /dev/null
+++ b/plugins/jira/e2e/sprint_test.go
@@ -0,0 +1,97 @@
+/*
+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 e2e
+
+import (
+	"testing"
+
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+	"github.com/apache/incubator-devlake/plugins/jira/impl"
+	"github.com/apache/incubator-devlake/plugins/jira/models"
+	"github.com/apache/incubator-devlake/plugins/jira/tasks"
+)
+
+func TestSprintDataFlow(t *testing.T) {
+	var plugin impl.Jira
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "jira", plugin)
+
+	taskData := &tasks.JiraTaskData{
+		Options: &tasks.JiraOptions{
+			ConnectionId: 2,
+			BoardId:      8,
+		},
+	}
+
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_jira_api_sprints.csv", "_raw_jira_api_sprints")
+
+	// verify sprint extraction
+	dataflowTester.FlushTabler(&models.JiraSprint{})
+	dataflowTester.FlushTabler(&models.JiraBoardSprint{})
+	dataflowTester.Subtask(tasks.ExtractSprintsMeta, taskData)
+	dataflowTester.VerifyTable(
+		models.JiraSprint{},
+		"./snapshot_tables/_tool_jira_sprints.csv",
+		[]string{
+			"connection_id",
+			"sprint_id",
+			"self",
+			"state",
+			"name",
+			"start_date",
+			"end_date",
+			"complete_date",
+			"origin_board_id",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+
+	dataflowTester.VerifyTable(
+		models.JiraBoardSprint{},
+		"./snapshot_tables/_tool_jira_board_sprints.csv",
+		[]string{"connection_id", "board_id", "sprint_id"},
+	)
+
+	// verify sprint conversion
+	dataflowTester.FlushTabler(&ticket.Sprint{})
+	dataflowTester.FlushTabler(&ticket.BoardSprint{})
+	dataflowTester.Subtask(tasks.ConvertSprintsMeta, taskData)
+	dataflowTester.VerifyTable(
+		ticket.Sprint{},
+		"./snapshot_tables/sprints.csv",
+		[]string{
+			"id",
+			"url",
+			"status",
+			"name",
+			"started_date",
+			"ended_date",
+			"completed_date",
+			"original_board_id",
+		},
+	)
+	dataflowTester.VerifyTable(
+		ticket.BoardSprint{},
+		"./snapshot_tables/board_sprints.csv",
+		[]string{"board_id", "sprint_id"},
+	)
+}
diff --git a/plugins/jira/e2e/worklog_test.go b/plugins/jira/e2e/worklog_test.go
new file mode 100644
index 00000000..fc5efb67
--- /dev/null
+++ b/plugins/jira/e2e/worklog_test.go
@@ -0,0 +1,85 @@
+/*
+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 e2e
+
+import (
+	"testing"
+
+	"github.com/apache/incubator-devlake/helpers/e2ehelper"
+	"github.com/apache/incubator-devlake/models/domainlayer/ticket"
+	"github.com/apache/incubator-devlake/plugins/jira/impl"
+	"github.com/apache/incubator-devlake/plugins/jira/models"
+	"github.com/apache/incubator-devlake/plugins/jira/tasks"
+)
+
+func TestWorklogDataFlow(t *testing.T) {
+	var plugin impl.Jira
+	dataflowTester := e2ehelper.NewDataFlowTester(t, "jira", plugin)
+
+	taskData := &tasks.JiraTaskData{
+		Options: &tasks.JiraOptions{
+			ConnectionId: 2,
+			BoardId:      8,
+		},
+	}
+
+	// import raw data table
+	dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_jira_api_worklogs.csv", "_raw_jira_api_worklogs")
+
+	// verify worklog extraction
+	dataflowTester.FlushTabler(&models.JiraWorklog{})
+	dataflowTester.Subtask(tasks.ExtractWorklogsMeta, taskData)
+	dataflowTester.VerifyTable(
+		models.JiraWorklog{},
+		"./snapshot_tables/_tool_jira_worklogs.csv",
+		[]string{
+			"connection_id",
+			"issue_id",
+			"worklog_id",
+			"author_id",
+			"update_author_id",
+			"time_spent",
+			"time_spent_seconds",
+			"updated",
+			"started",
+			"issue_updated",
+			"_raw_data_params",
+			"_raw_data_table",
+			"_raw_data_id",
+			"_raw_data_remark",
+		},
+	)
+
+	// verify worklog conversion
+	dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_jira_board_issues_for_worklog.csv", &models.JiraBoardIssue{})
+	dataflowTester.FlushTabler(&ticket.IssueWorklog{})
+	dataflowTester.Subtask(tasks.ConvertWorklogsMeta, taskData)
+	dataflowTester.VerifyTable(
+		ticket.IssueWorklog{},
+		"./snapshot_tables/worklogs.csv",
+		[]string{
+			"id",
+			"author_id",
+			"comment",
+			"time_spent_minutes",
+			"logged_date",
+			"started_date",
+			"issue_id",
+		},
+	)
+}
diff --git a/plugins/jira/impl/impl.go b/plugins/jira/impl/impl.go
index f61035d1..ef434189 100644
--- a/plugins/jira/impl/impl.go
+++ b/plugins/jira/impl/impl.go
@@ -141,7 +141,6 @@ func (plugin Jira) PrepareTaskData(taskCtx core.TaskContext, options map[string]
 	taskData := &tasks.JiraTaskData{
 		Options:        &op,
 		ApiClient:      jiraApiClient,
-		Connection:     connection,
 		JiraServerInfo: *info,
 	}
 	if !since.IsZero() {
diff --git a/plugins/jira/tasks/issue_extractor.go b/plugins/jira/tasks/issue_extractor.go
index 84cf2abb..870fb0a1 100644
--- a/plugins/jira/tasks/issue_extractor.go
+++ b/plugins/jira/tasks/issue_extractor.go
@@ -47,13 +47,13 @@ func ExtractIssues(taskCtx core.SubTaskContext) error {
 	// prepare getStdType function
 	// TODO: implement type mapping
 	typeMappings := make(map[string]string)
-	for _, userType := range data.Options.IssueExtraction.RequirementTypeMapping {
+	for _, userType := range data.Options.TransformationRules.RequirementTypeMapping {
 		typeMappings[userType] = "REQUIREMENT"
 	}
-	for _, userType := range data.Options.IssueExtraction.BugTypeMapping {
+	for _, userType := range data.Options.TransformationRules.BugTypeMapping {
 		typeMappings[userType] = "BUG"
 	}
-	for _, userType := range data.Options.IssueExtraction.IncidentTypeMapping {
+	for _, userType := range data.Options.TransformationRules.IncidentTypeMapping {
 		typeMappings[userType] = "INCIDENT"
 	}
 
@@ -98,8 +98,8 @@ func ExtractIssues(taskCtx core.SubTaskContext) error {
 			if issue.ResolutionDate != nil {
 				issue.LeadTimeMinutes = uint(issue.ResolutionDate.Unix()-issue.Created.Unix()) / 60
 			}
-			if data.Options.IssueExtraction.StoryPointField != "" {
-				strStoryPoint := apiIssue.Fields.AllFields[data.Options.IssueExtraction.StoryPointField].(string)
+			if data.Options.TransformationRules.StoryPointField != "" {
+				strStoryPoint := apiIssue.Fields.AllFields[data.Options.TransformationRules.StoryPointField].(string)
 				issue.StoryPoint, _ = strconv.ParseFloat(strStoryPoint, 32)
 			}
 			issue.StdStoryPoint = uint(issue.StoryPoint)
diff --git a/plugins/jira/tasks/remotelink_extractor.go b/plugins/jira/tasks/remotelink_extractor.go
index fc743c78..99ef2be5 100644
--- a/plugins/jira/tasks/remotelink_extractor.go
+++ b/plugins/jira/tasks/remotelink_extractor.go
@@ -43,7 +43,7 @@ func ExtractRemotelinks(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	logger.Info("extract remote links")
 	var commitShaRegex *regexp.Regexp
-	if pattern := data.Connection.RemotelinkCommitShaPattern; pattern != "" {
+	if pattern := data.Options.TransformationRules.RemotelinkCommitShaPattern; pattern != "" {
 		commitShaRegex = regexp.MustCompile(pattern)
 	}
 
diff --git a/plugins/jira/tasks/sprint_convertor.go b/plugins/jira/tasks/sprint_convertor.go
index af0d1c71..54ddb3a9 100644
--- a/plugins/jira/tasks/sprint_convertor.go
+++ b/plugins/jira/tasks/sprint_convertor.go
@@ -45,7 +45,8 @@ func ConvertSprints(taskCtx core.SubTaskContext) error {
 	db := taskCtx.GetDal()
 	logger.Info("convert sprints")
 	clauses := []dal.Clause{
-		dal.Select("_tool_jira_sprints.*"),
+		dal.Select("*"),
+		dal.From(&models.JiraSprint{}),
 		dal.Join("left join _tool_jira_board_sprints on _tool_jira_board_sprints.sprint_id = _tool_jira_sprints.sprint_id"),
 		dal.Where("_tool_jira_board_sprints.connection_id = ? AND _tool_jira_board_sprints.board_id = ?", connectionId, boardId),
 	}
diff --git a/plugins/jira/tasks/task_data.go b/plugins/jira/tasks/task_data.go
index 23cc2957..084fc1a6 100644
--- a/plugins/jira/tasks/task_data.go
+++ b/plugins/jira/tasks/task_data.go
@@ -24,24 +24,26 @@ import (
 	"github.com/apache/incubator-devlake/plugins/jira/models"
 )
 
+type TransformationRules struct {
+	RequirementTypeMapping     []string
+	BugTypeMapping             []string
+	IncidentTypeMapping        []string
+	EpicKeyField               string
+	StoryPointField            string
+	RemotelinkCommitShaPattern string
+}
+
 type JiraOptions struct {
-	ConnectionId    uint64   `json:"connectionId"`
-	BoardId         uint64   `json:"boardId"`
-	Tasks           []string `json:"tasks,omitempty"`
-	Since           string
-	IssueExtraction struct {
-		RequirementTypeMapping []string
-		BugTypeMapping         []string
-		IncidentTypeMapping    []string
-		//EpicKeyField           string
-		StoryPointField string
-	}
+	ConnectionId        uint64   `json:"connectionId"`
+	BoardId             uint64   `json:"boardId"`
+	Tasks               []string `json:"tasks,omitempty"`
+	Since               string
+	TransformationRules TransformationRules `json:"transformationRules"`
 }
 
 type JiraTaskData struct {
 	Options        *JiraOptions
 	ApiClient      *helper.ApiAsyncClient
-	Connection     *models.JiraConnection
 	Since          *time.Time
 	JiraServerInfo models.JiraServerInfo
 }