diff --git a/src/main/scala/com/gerritforge/analytics/engine/GerritAnalyticsTransformations.scala b/src/main/scala/com/gerritforge/analytics/engine/GerritAnalyticsTransformations.scala
index 8aa89d2..a34e702 100644
--- a/src/main/scala/com/gerritforge/analytics/engine/GerritAnalyticsTransformations.scala
+++ b/src/main/scala/com/gerritforge/analytics/engine/GerritAnalyticsTransformations.scala
@@ -139,11 +139,6 @@
         .getOrElse(df)
     }
 
-
-    def convertDates(columnName: String)(implicit spark: SparkSession): DataFrame = {
-      df.withColumn(columnName, longDateToISOUdf(col(columnName)))
-    }
-
     def dropCommits(implicit spark: SparkSession): DataFrame = {
       df.drop("commits")
     }
@@ -159,7 +154,6 @@
       df
         .addOrganization()
         .handleAliases(aliasesDFMaybe)
-        .convertDates("last_commit_date")
         .dropCommits
     }
   }
diff --git a/src/test/scala/com/gerritforge/analytics/GerritAnalyticsTransformationsSpec.scala b/src/test/scala/com/gerritforge/analytics/GerritAnalyticsTransformationsSpec.scala
index 31d37c4..187b5ce 100644
--- a/src/test/scala/com/gerritforge/analytics/GerritAnalyticsTransformationsSpec.scala
+++ b/src/test/scala/com/gerritforge/analytics/GerritAnalyticsTransformationsSpec.scala
@@ -202,13 +202,14 @@
 
   it should "return correct columns when alias DF is not defined" in {
     import spark.implicits._
-    val inputSampleDF = sc.parallelize(Seq(
-      ("author_name", "email@mail.com", "an_organization")
-    )).toDF("author", "email", "organization")
+    val expectedTuple = ("author_name", "email@mail.com", "an_organization")
+    val inputSampleDF = sc.parallelize(Seq(expectedTuple)).toDF("author", "email", "organization")
+    val expectedRow = Row.fromTuple(expectedTuple)
 
     val df = inputSampleDF.handleAliases(None)
 
     df.schema.fields.map(_.name) should contain allOf("author", "email", "organization")
+    df.collect().head should be(expectedRow)
   }
 
   it should "lowercase aliased organizations" in {
@@ -265,27 +266,6 @@
     )
   }
 
-  "convertDates" should "process specific column from Long to ISO date" in {
-    // some notable dates converted in UnixMillisecs and ISO format
-    val DATES = Map(
-      0L -> "1970-01-01T00:00:00Z",
-      1500000000000L -> "2017-07-14T02:40:00Z",
-      1600000000000L -> "2020-09-13T12:26:40Z")
-    import sql.implicits._
-    val df = sc.parallelize(Seq(
-      ("a", 0L, 1),
-      ("b", 1500000000000L, 2),
-      ("c", 1600000000000L, 3))).toDF("name", "date", "num")
-
-    val converted = df
-      .convertDates("date")
-
-    converted.collect should contain allOf(
-      Row("a", DATES(0), 1),
-      Row("b", DATES(1500000000000L), 2),
-      Row("c", DATES(1600000000000L), 3)
-    )
-  }
 
   "extractCommitsPerProject" should "generate a Dataset with the all the SHA of commits with associated project" in {
     import sql.implicits._
diff --git a/src/test/scala/com/gerritforge/analytics/engine/events/GerritEventsTransformationsSpec.scala b/src/test/scala/com/gerritforge/analytics/engine/events/GerritEventsTransformationsSpec.scala
index bde0705..05b98dd 100644
--- a/src/test/scala/com/gerritforge/analytics/engine/events/GerritEventsTransformationsSpec.scala
+++ b/src/test/scala/com/gerritforge/analytics/engine/events/GerritEventsTransformationsSpec.scala
@@ -164,21 +164,20 @@
         ("stefano_alias", "stefano@galarraga-org.com", "")
       )).toDF("author", "email", "organization")
 
-      val expectedDate : ZonedDateTime = ZonedDateTime.now(ZoneId.of("UTC")).`with`(MILLI_OF_SECOND, 0).`with`(NANO_OF_SECOND, 0)
+      val expectedDate = System.currentTimeMillis
 
       val analyticsJobOutput =
         sc.parallelize(Seq(
-          "project1" -> UserActivitySummary(2018, 1, 20, 10, "Stefano", "stefano@galarraga-org.com", 1, 2, 1, 10, 4, Array(CommitInfo("sha1", expectedDate.toInstant.toEpochMilli, false)),
-            expectedDate.toInstant.toEpochMilli, false)
+          "project1" -> UserActivitySummary(2018, 1, 20, 10, "Stefano", "stefano@galarraga-org.com", 1, 2, 1, 10, 4, Array(CommitInfo("sha1", expectedDate, false)),
+            expectedDate, false)
         ))
           .asEtlDataFrame(sql)
           .addOrganization()
           .handleAliases(Some(aliasDF))
-          .convertDates("last_commit_date")
           .dropCommits
 
       val expected = sc.parallelize(Seq(
-        ("project1", "stefano_alias", "stefano@galarraga-org.com", 2018, 1, 20, 10, 2, 1, 10, 4, 1, expectedDate.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME), false, "galarraga-org")
+        ("project1", "stefano_alias", "stefano@galarraga-org.com", 2018, 1, 20, 10, 2, 1, 10, 4, 1, expectedDate, false, "galarraga-org")
       )).toDF("project", "author", "email", "year", "month", "day", "hour", "num_files", "num_distinct_files",
         "added_lines", "deleted_lines", "num_commits", "last_commit_date", "is_merge", "organization")
 
