diff --git a/migration_templates/d6_ubercart_order.yml b/migration_templates/d6_ubercart_order.yml
index e939cd7..8be3ca0 100644
--- a/migration_templates/d6_ubercart_order.yml
+++ b/migration_templates/d6_ubercart_order.yml
@@ -40,8 +40,11 @@ process:
   created: created
   changed: modified
   placed: modified
+  adjustments:
+    plugin: d6_ubercart_line_item
+    source: adjustments
 destination:
-  plugin: 'entity:commerce_order'
+  plugin: entity:commerce_order
 migration_dependencies:
   required:
     - d6_ubercart_store
diff --git a/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php b/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php
new file mode 100644
index 0000000..a91fab7
--- /dev/null
+++ b/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Drupal\commerce_migrate\Plugin\migrate\destination\ubercart\d6;
+
+use Drupal\migrate\Plugin\migrate\destination\EntityContentBase;
+use Drupal\commerce_order\Adjustment;
+use Drupal\commerce_price\Price;
+use Drupal\migrate\Row;
+
+/**
+ * Provides Commerce order migration destination.
+ *
+ * @MigrateDestination(
+ *   id = "entity:commerce_order"
+ * )
+ */
+class EntityOrder extends EntityContentBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function import(Row $row, array $old_destination_id_values = []) {
+    $values = $row->getDestinationProperty('adjustments');
+    if ($values) {
+      $adjustments = [];
+      foreach ($values as $adjustment) {
+        $amount = $adjustment['amount']['number'];
+        $adjustment['amount'] = new Price($amount, $adjustment['amount']['currency_code']);
+        $adjustments[] = new Adjustment($adjustment);
+      }
+      $row->setDestinationProperty('adjustments', $adjustments);
+    }
+    return parent::import($row, $old_destination_id_values);
+  }
+
+}
diff --git a/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
new file mode 100644
index 0000000..6d7eff4
--- /dev/null
+++ b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\commerce_migrate\Plugin\migrate\process\ubercart\d6;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Transforms an array of data into an Commerce Adjustment.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "d6_ubercart_line_item",
+ *   handle_multiples = TRUE
+ * )
+ */
+class UbercartLineItem extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    if (is_array($value)) {
+      $adjustments = [];
+      $i = 0;
+      foreach ($value as $adjustment) {
+        $adjust = [];
+        $adjust['delta'] = $i++;
+        $adjust['type'] = 'custom';
+        $adjust['label'] = $adjustment['title'];
+        $adjust['amount'] =
+          [
+            'number' => $adjustment['amount'],
+            'currency_code' => 'NZD',
+          ];
+        // @TODO: Adjustment sourceId and included.
+        $adjustments[] = $adjust;
+      }
+      return $adjustments;
+    }
+    return $value;
+  }
+
+}
diff --git a/src/Plugin/migrate/source/ubercart/d6/Order.php b/src/Plugin/migrate/source/ubercart/d6/Order.php
index 6e39f9c..33c9c2c 100644
--- a/src/Plugin/migrate/source/ubercart/d6/Order.php
+++ b/src/Plugin/migrate/source/ubercart/d6/Order.php
@@ -2,8 +2,12 @@
 
 namespace Drupal\commerce_migrate\Plugin\migrate\source\ubercart\d6;
 
+use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\migrate\Plugin\migrate\source\SqlBase;
 use Drupal\migrate\Row;
+use Drupal\Core\State\StateInterface;
+use Drupal\migrate\Plugin\MigrationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Provides migration source for orders.
@@ -15,11 +19,42 @@ use Drupal\migrate\Row;
 class Order extends SqlBase {
 
   /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, ModuleHandlerInterface $module_handler) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state);
+    $this->state = $state;
+    $this->moduleHandler = $module_handler;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $migration,
+      $container->get('state'),
+      $container->get('module_handler')
+    );
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function query() {
-    return $this->select('uc_orders', 'uo')
-      ->fields('uo', array_keys($this->fields()));
+    $query = $this->select('uc_orders', 'uo')
+      ->fields('uo');
+    return $query;
   }
 
   /**
@@ -44,20 +79,37 @@ class Order extends SqlBase {
    * {@inheritdoc}
    */
   public function prepareRow(Row $row) {
-
-    // The Migrate API automatically serializes arrays for storage in longblob
-    // fields so we unserialize them here.
     $data = unserialize($row->getSourceProperty('data'));
     // Ubercart 6 stores credit card information in a hash. Since this probably
     // isn't necessary so I removed it here.
     unset($data['cc_data']);
 
-    $row->setSourceProperty('data', serialize($data));
-
+    $row->setSourceProperty('commerce_shipping', $this->moduleHandler->moduleExists('commerce_shipping'));
+    $row->setSourceProperty('adjustments', $this->getAdjustmentData($row));
     return parent::prepareRow($row);
   }
 
   /**
+   * Retrieves adjustment data for an order.
+   *
+   * @param \Drupal\migrate\Row $row
+   *   The row.
+   *
+   * @return array
+   *   The field values, keyed by delta.
+   */
+  protected function getAdjustmentData(Row $row) {
+    $order_id = $row->getSourceProperty('order_id');
+    $query = $this->select('uc_order_line_items', 'uol')
+      ->fields('uol')
+      ->fields('uo', ['order_id'])
+      ->orderBy('weight', 'ASC')
+      ->condition('uol.order_id', $order_id);
+    $query->innerJoin('uc_orders', 'uo', 'uol.order_id = uo.order_id');
+    return $query->execute()->fetchAll();
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function getIds() {
diff --git a/tests/src/Kernel/d6/Ubercart/OrderTest.php b/tests/src/Kernel/d6/Ubercart/OrderTest.php
index a93d1ef..8070a31 100644
--- a/tests/src/Kernel/d6/Ubercart/OrderTest.php
+++ b/tests/src/Kernel/d6/Ubercart/OrderTest.php
@@ -2,11 +2,13 @@
 
 namespace Drupal\Tests\commerce_migrate\Kernel\d6\Ubercart;
 
+use Drupal\commerce_order\Adjustment;
+use Drupal\commerce_price\Price;
 use Drupal\commerce_order\Entity\Order;
 use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
 
 /**
- * Tests billing profile migration.
+ * Tests order migration.
  *
  * @group commerce_migrate
  */
@@ -49,10 +51,32 @@ class OrderTest extends Ubercart6TestBase {
   public function testOrder() {
     $this->assertOrder(1, '1', '1492868907', '1493078815', 'fordprefect@example.com', 'validation');
 
-    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
     $order = Order::load(1);
     $this->assertNotNull($order->getBillingProfile());
     $this->assertNull($order->getData('cc_data'));
+
+    // Included adjustments do not affect the order total.
+    $adjustments[] = new Adjustment([
+      'type' => 'custom',
+      'label' => 'Shipping',
+      'amount' => new Price('2.99', 'NZD'),
+      'sourceId' => NULL,
+      'included' => FALSE,
+    ]);
+    $this->assertCount(1, $order->getAdjustments());
+    $this->assertEquals($adjustments, $order->getAdjustments());
+
+    $order = Order::load(2);
+    $adjustments = [];
+    $adjustments[] = new Adjustment([
+      'type' => 'custom',
+      'label' => 'Shipping',
+      'amount' => new Price('1000.00', 'NZD'),
+      'sourceId' => NULL,
+      'included' => FALSE,
+    ]);
+    $this->assertCount(1, $order->getAdjustments());
+    $this->assertEquals($adjustments, $order->getAdjustments());
   }
 
 }
