diff --git a/modules/migrations/gitlab.go b/modules/migrations/gitlab.go
index c03ce89c6..3cdcef3af 100644
--- a/modules/migrations/gitlab.go
+++ b/modules/migrations/gitlab.go
@@ -327,7 +327,6 @@ func (g *GitlabDownloader) GetAsset(tag string, id int64) (io.ReadCloser, error)
 
 // GetIssues returns issues according start and limit
 //   Note: issue label description and colors are not supported by the go-gitlab library at this time
-//   TODO: figure out how to transfer issue reactions
 func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, error) {
 	state := "all"
 	sort := "asc"
@@ -361,6 +360,22 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er
 			milestone = issue.Milestone.Title
 		}
 
+		var reactions []*base.Reaction
+		var awardPage = 1
+		for {
+			awards, _, err := g.client.AwardEmoji.ListIssueAwardEmoji(g.repoID, issue.IID, &gitlab.ListAwardEmojiOptions{Page: awardPage, PerPage: perPage}, gitlab.WithContext(g.ctx))
+			if err != nil {
+				return nil, false, fmt.Errorf("error while listing issue awards: %v", err)
+			}
+			if len(awards) < perPage {
+				break
+			}
+			for i := range awards {
+				reactions = append(reactions, g.awardToReaction(awards[i]))
+			}
+			awardPage++
+		}
+
 		allIssues = append(allIssues, &base.Issue{
 			Title:      issue.Title,
 			Number:     int64(issue.IID),
@@ -371,6 +386,7 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er
 			State:      issue.State,
 			Created:    *issue.CreatedAt,
 			Labels:     labels,
+			Reactions:  reactions,
 			Closed:     issue.ClosedAt,
 			IsLocked:   issue.DiscussionLocked,
 			Updated:    *issue.UpdatedAt,
@@ -384,6 +400,7 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er
 }
 
 // GetComments returns comments according issueNumber
+// TODO: figure out how to transfer comment reactions
 func (g *GitlabDownloader) GetComments(issueNumber int64) ([]*base.Comment, error) {
 	var allComments = make([]*base.Comment, 0, 100)
 
@@ -501,6 +518,22 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque
 			milestone = pr.Milestone.Title
 		}
 
+		var reactions []*base.Reaction
+		var awardPage = 1
+		for {
+			awards, _, err := g.client.AwardEmoji.ListMergeRequestAwardEmoji(g.repoID, pr.IID, &gitlab.ListAwardEmojiOptions{Page: awardPage, PerPage: perPage}, gitlab.WithContext(g.ctx))
+			if err != nil {
+				return nil, fmt.Errorf("error while listing merge requests awards: %v", err)
+			}
+			if len(awards) < perPage {
+				break
+			}
+			for i := range awards {
+				reactions = append(reactions, g.awardToReaction(awards[i]))
+			}
+			awardPage++
+		}
+
 		// Add the PR ID to the Issue Count because PR and Issues share ID space in Gitea
 		newPRNumber := g.issueCount + int64(pr.IID)
 
@@ -520,6 +553,7 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque
 			MergeCommitSHA: pr.MergeCommitSHA,
 			MergedTime:     mergeTime,
 			IsLocked:       locked,
+			Reactions:      reactions,
 			Head: base.PullRequestBranch{
 				Ref:       pr.SourceBranch,
 				SHA:       pr.SHA,
@@ -570,3 +604,11 @@ func (g *GitlabDownloader) GetReviews(pullRequestNumber int64) ([]*base.Review,
 
 	return reviews, nil
 }
+
+func (g *GitlabDownloader) awardToReaction(award *gitlab.AwardEmoji) *base.Reaction {
+	return &base.Reaction{
+		UserID:   int64(award.User.ID),
+		UserName: award.User.Username,
+		Content:  award.Name,
+	}
+}
diff --git a/modules/migrations/gitlab_test.go b/modules/migrations/gitlab_test.go
index 1862d67cc..065a9a659 100644
--- a/modules/migrations/gitlab_test.go
+++ b/modules/migrations/gitlab_test.go
@@ -130,7 +130,7 @@ func TestGitlabDownloadRepo(t *testing.T) {
 			PosterName: "lafriks",
 			State:      "closed",
 			Created:    time.Date(2019, 11, 28, 8, 43, 35, 459000000, time.UTC),
-			Updated:    time.Date(2019, 11, 28, 8, 46, 23, 275000000, time.UTC),
+			Updated:    time.Date(2019, 11, 28, 8, 46, 23, 304000000, time.UTC),
 			Labels: []*base.Label{
 				{
 					Name: "bug",
@@ -139,8 +139,18 @@ func TestGitlabDownloadRepo(t *testing.T) {
 					Name: "discussion",
 				},
 			},
-			Reactions: nil,
-			Closed:    &closed1,
+			Reactions: []*base.Reaction{
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "thumbsup",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "open_mouth",
+				}},
+			Closed: &closed1,
 		},
 		{
 			Number:     2,
@@ -157,8 +167,38 @@ func TestGitlabDownloadRepo(t *testing.T) {
 					Name: "duplicate",
 				},
 			},
-			Reactions: nil,
-			Closed:    &closed2,
+			Reactions: []*base.Reaction{
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "thumbsup",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "thumbsdown",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "laughing",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "tada",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "confused",
+				},
+				{
+					UserID:   1241334,
+					UserName: "lafriks",
+					Content:  "hearts",
+				}},
+			Closed: &closed2,
 		},
 	}, issues)
 
@@ -171,7 +211,6 @@ func TestGitlabDownloadRepo(t *testing.T) {
 			PosterID:   1241334,
 			PosterName: "lafriks",
 			Created:    time.Date(2019, 11, 28, 8, 44, 52, 501000000, time.UTC),
-			Updated:    time.Date(2019, 11, 28, 8, 44, 52, 501000000, time.UTC),
 			Content:    "This is a comment",
 			Reactions:  nil,
 		},
@@ -207,20 +246,29 @@ func TestGitlabDownloadRepo(t *testing.T) {
 
 	assert.EqualValues(t, []*base.PullRequest{
 		{
-			Number:     4,
-			Title:      "Test branch",
-			Content:    "do not merge this PR",
-			Milestone:  "1.0.0",
-			PosterID:   1241334,
-			PosterName: "lafriks",
-			State:      "opened",
-			Created:    time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC),
-			Updated:    time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC),
+			Number:         4,
+			OriginalNumber: 2,
+			Title:          "Test branch",
+			Content:        "do not merge this PR",
+			Milestone:      "1.0.0",
+			PosterID:       1241334,
+			PosterName:     "lafriks",
+			State:          "opened",
+			Created:        time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC),
 			Labels: []*base.Label{
 				{
 					Name: "bug",
 				},
 			},
+			Reactions: []*base.Reaction{{
+				UserID:   4575606,
+				UserName: "real6543",
+				Content:  "thumbsup",
+			}, {
+				UserID:   4575606,
+				UserName: "real6543",
+				Content:  "tada",
+			}},
 			PatchURL: "https://gitlab.com/gitea/test_repo/-/merge_requests/2.patch",
 			Head: base.PullRequestBranch{
 				Ref:       "feat/test",
@@ -244,13 +292,20 @@ func TestGitlabDownloadRepo(t *testing.T) {
 
 	rvs, err := downloader.GetReviews(1)
 	assert.NoError(t, err)
-	if assert.Len(t, prs, 2) {
-		assert.EqualValues(t, 527793, rvs[0].ReviewerID)
-		assert.EqualValues(t, "axifive", rvs[0].ReviewerName)
-		assert.EqualValues(t, "APPROVED", rvs[0].State)
-		assert.EqualValues(t, 4102996, rvs[1].ReviewerID)
-		assert.EqualValues(t, "zeripath", rvs[1].ReviewerName)
-		assert.EqualValues(t, "APPROVED", rvs[1].State)
+	if assert.Len(t, rvs, 2) {
+		for i := range rvs {
+			switch rvs[i].ReviewerID {
+			case 4102996:
+				assert.EqualValues(t, "zeripath", rvs[i].ReviewerName)
+				assert.EqualValues(t, "APPROVED", rvs[i].State)
+			case 527793:
+				assert.EqualValues(t, "axifive", rvs[i].ReviewerName)
+				assert.EqualValues(t, "APPROVED", rvs[i].State)
+			default:
+				t.Errorf("Unexpected Reviewer ID: %d", rvs[i].ReviewerID)
+
+			}
+		}
 	}
 	rvs, err = downloader.GetReviews(2)
 	assert.NoError(t, err)