diff --git a/core/modules/datetime_range/src/Plugin/migrate/process/DateRangeProcess.php b/core/modules/datetime_range/src/Plugin/migrate/process/DateRangeProcess.php
new file mode 100644
index 0000000..bdf5a25
--- /dev/null
+++ b/core/modules/datetime_range/src/Plugin/migrate/process/DateRangeProcess.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Drupal\datetime_range\Plugin\migrate\process;
+
+use Drupal\migrate\MigrateException;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Process date range fields.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "daterange",
+ *   handle_multiples = TRUE
+ * )
+ *
+ * @todo Support no end date.
+ * @todo Account for field definition configurations.
+ * @todo Account for variations of date format.
+ */
+class DateRangeProcess extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   *
+   * Processes start and end times into a datetime range field.
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    if (!is_array($value)) {
+      throw new MigrateException(sprintf('%s is not an array', var_export($value, TRUE)));
+    }
+
+    if (empty($value[0]) || empty($value[1])) {
+      throw new MigrateException(sprintf('%s does not have two elements in the array', var_export($value, TRUE)));
+    }
+
+    $date_format = 'Y-m-d';
+    $start_date = new \DateTime($value[0]);
+    $end_date = new \DateTime($value[1]);
+
+    return [
+      'value' => $start_date->format($date_format),
+      'end_value' => $end_date->format($date_format),
+    ];
+  }
+
+}
