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/migration_templates/d6_ubercart_order_product.yml b/migration_templates/d6_ubercart_order_product.yml
index dc96519..b097344 100644
--- a/migration_templates/d6_ubercart_order_product.yml
+++ b/migration_templates/d6_ubercart_order_product.yml
@@ -24,10 +24,14 @@ process:
     source: nid
   title: title
   quantity: qty
+  currency_code:
+    plugin: d6_store_default_currency
+    parameter: order_id
+    source: '@order_id'
   'unit_price/number': price
-  'unit_price/currency_code': currency
+  'unit_price/currency_code': '@currency_code'
   'total_price/number': total_price
-  'total_price/currency_code': currency
+  'total_price/currency_code': '@currency_code'
   # Source field name 'data' changed to 'attributes' in prepareRow function
   data: attributes
   created: created
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/StoreDefaultCurrency.php b/src/Plugin/migrate/process/ubercart/d6/StoreDefaultCurrency.php
new file mode 100644
index 0000000..faf6882
--- /dev/null
+++ b/src/Plugin/migrate/process/ubercart/d6/StoreDefaultCurrency.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\commerce_migrate\Plugin\migrate\process\ubercart\d6;
+
+use Drupal\commerce_order\Entity\Order;
+use Drupal\commerce_store\Entity\Store;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Provides a process plugin for getting the default currency for a store.
+ *
+ * Available configuration keys:
+ * - parameter: The name of parameter Allowed values are store_id and order_id.
+ * - source: The value of the parameter.
+ *
+ * Example:
+ *
+ * @code
+ * process:
+ *   currency_code:
+ *     plugin: store_default_currency
+ *     parameter: store_id
+ *     source: 3
+ * @endcode
+ *
+ * The will return the default currency for the store with an id of 3.
+ *
+ * @code
+ * process:
+ *   currency_code:
+ *     plugin: store_default_currency
+ *     parameter: order_id
+ *     source: 47
+ * @endcode
+ *
+ * The will return the default currency for the store associated with order 47.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "d6_store_default_currency"
+ * )
+ */
+class StoreDefaultCurrency extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    if ($this->configuration['parameter'] == 'order_id') {
+      $order_id = $value;
+      $order = Order::load($order_id);
+      $store_id = $order->getStoreId();
+    }
+    if ($this->configuration['parameter'] == 'store_id') {
+      $store_id = $value;
+    }
+    if ($store_id) {
+      $store = Store::load($store_id);
+      $currency_code = $store->getDefaultCurrencyCode();
+      return $currency_code;
+    }
+    return $value;
+  }
+
+}
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..29af0e3
--- /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' => $adjustment['currency'],
+          ];
+        // @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..84d0f5e 100644
--- a/src/Plugin/migrate/source/ubercart/d6/Order.php
+++ b/src/Plugin/migrate/source/ubercart/d6/Order.php
@@ -2,8 +2,8 @@
 
 namespace Drupal\commerce_migrate\Plugin\migrate\source\ubercart\d6;
 
-use Drupal\migrate\Plugin\migrate\source\SqlBase;
 use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
 
 /**
  * Provides migration source for orders.
@@ -12,14 +12,16 @@ use Drupal\migrate\Row;
  *   id = "d6_ubercart_order"
  * )
  */
-class Order extends SqlBase {
+class Order extends DrupalSqlBase {
 
+  
   /**
    * {@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 +46,39 @@ 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->moduleExists('commerce_shipping'));
+    $row->setSourceProperty('adjustments', $this->getAdjustmentData($row));
+    $row->setSourceProperty('currency', $this->getUbercartCurrency());
+    
     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() {
@@ -68,5 +89,19 @@ class Order extends SqlBase {
       ],
     ];
   }
-
+  
+  /**
+   * Gets the Ubercart global currency.
+   *
+   * @return string
+   *   The currency.
+   */
+  public function getUbercartCurrency() {
+    static $currency;
+    
+    if (empty($currency)) {
+      $currency = $this->variableGet('uc_currency_code', 'USD');
+    }
+    return $currency;
+  }
 }
diff --git a/src/Plugin/migrate/source/ubercart/d6/OrderProduct.php b/src/Plugin/migrate/source/ubercart/d6/OrderProduct.php
index 23c6c95..93f8843 100644
--- a/src/Plugin/migrate/source/ubercart/d6/OrderProduct.php
+++ b/src/Plugin/migrate/source/ubercart/d6/OrderProduct.php
@@ -19,7 +19,7 @@ class OrderProduct extends SqlBase {
     $query = $this->select('uc_order_products', 'uop')
       ->fields('uop', ['order_product_id', 'order_id', 'nid', 'title', 'qty', 'price', 'data']);
     $query->innerJoin('uc_orders', 'uo', 'uop.order_id = uo.order_id');
-    $query->fields('uo', ['created', 'modified', 'currency']);
+    $query->fields('uo');
 
     return $query;
   }
diff --git a/tests/src/Kernel/d6/Ubercart/OrderTest.php b/tests/src/Kernel/d6/Ubercart/OrderTest.php
index 1eb740a..ff18bbf 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
  */
@@ -54,9 +56,30 @@ class OrderTest extends Ubercart6TestBase {
     /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
     $order = Order::load(1);
     $this->assertNotNull($order->getBillingProfile());
-    $this->assertNull($order->getData('cc_data'));  $order = Order::load(2);
+    $this->assertNull($order->getData('cc_data'));
+    $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);
     $this->assertNotNull($order->getBillingProfile());
     $this->assertNull($order->getData('cc_data'));
+    $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());
   }
 
 }
