diff --git a/modules/order/commerce_order.info.inc b/modules/order/commerce_order.info.inc
index 1f2ede4..951c865 100644
--- a/modules/order/commerce_order.info.inc
+++ b/modules/order/commerce_order.info.inc
@@ -27,24 +27,6 @@ function commerce_order_entity_property_info() {
     'required' => TRUE,
     'query callback' => 'entity_metadata_table_query',
   );
-  $properties['view_url'] = array(
-    'label' => t('View URL'),
-    'description' => t('The URL a customer can visit to view the order.'),
-    'getter callback' => 'commerce_order_get_properties',
-    'type' => 'uri',
-  );
-  $properties['admin_url'] = array(
-    'label' => t('Admin URL'),
-    'description' => t("The URL of the order's administrative view page."),
-    'getter callback' => 'commerce_order_get_properties',
-    'type' => 'uri',
-  );
-  $properties['edit_url'] = array(
-    'label' => t('Edit URL'),
-    'description' => t("The URL of the order's edit page."),
-    'getter callback' => 'commerce_order_get_properties',
-    'type' => 'uri',
-  );
   $properties['status'] = array(
     'label' => t('Status'),
     'description' => t('The current status of the order.'),
diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index 75ae530..798b973 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -997,11 +997,11 @@ function commerce_order_get_properties($order, array $options, $name) {
   switch ($name) {
     case 'owner':
       return $order->uid;
-    case 'view-url':
+    case 'view_url':
       return url('order/' . $order->order_id, $options);
-    case 'admin-url':
+    case 'admin_url':
       return url('admin/commerce/orders/' . $order->order_id, $options);
-    case 'edit-url':
+    case 'edit_url':
       return url('admin/commerce/orders/' . $order->order_id . '/edit', $options);
     case 'state':
       $order_status = commerce_order_status_load($order->status);
diff --git a/modules/order/commerce_order.tokens.inc b/modules/order/commerce_order.tokens.inc
index 178779e..090928c 100644
--- a/modules/order/commerce_order.tokens.inc
+++ b/modules/order/commerce_order.tokens.inc
@@ -59,14 +59,6 @@ function commerce_order_token_info() {
     'name' => t('Order state title'),
     'description' => t('The human-readable title of the order state.'),
   );
-  $order['url'] = array(
-    'name' => t('URL'),
-    'description' => t('The URL of the order.'),
-  );
-  $order['edit-url'] = array(
-    'name' => t('Edit URL'),
-    'description' => t("The URL of the order's edit page."),
-  );
 
   // Chained tokens for orders.
   $order['owner'] = array(
@@ -158,13 +150,6 @@ function commerce_order_tokens($type, $tokens, array $data = array(), array $opt
           $replacements[$original] = $sanitize ? check_plain(commerce_order_state_get_title($order_status['state'])) : commerce_order_state_get_title($order_status['state']);
           break;
 
-        case 'url':
-          $replacements[$original] = url('user/' . $order->uid . '/orders/' . $order->order_id, $url_options);
-          break;
-
-        case 'edit-url':
-          $replacements[$original] = url('admin/commerce/orders/' . $order->order_id . '/edit', $url_options);
-          break;
 
         // Default values for the chained tokens handled below.
         case 'owner':
@@ -201,4 +186,4 @@ function commerce_order_tokens($type, $tokens, array $data = array(), array $opt
   }
 
   return $replacements;
-}
+}
\ No newline at end of file
diff --git a/modules/order/commerce_order_ui.info.inc b/modules/order/commerce_order_ui.info.inc
new file mode 100644
index 0000000..cc49fea
--- /dev/null
+++ b/modules/order/commerce_order_ui.info.inc
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * Implements hook_entity_property_info_alter().
+ *
+ * Add UI bound order properties.
+ */
+function commerce_order_ui_entity_property_info_alter(&$info) {
+  $info['commerce_order']['properties']['view_url'] = array(
+    'label' => t('View URL'),
+    'description' => t('The URL a customer can visit to view the order.'),
+    'getter callback' => 'commerce_order_get_properties',
+    'type' => 'uri',
+  );
+  $info['commerce_order']['properties']['admin_url'] = array(
+    'label' => t('Admin URL'),
+    'description' => t("The URL of the order's administrative view page."),
+    'getter callback' => 'commerce_order_get_properties',
+    'type' => 'uri',
+  );
+  $info['commerce_order']['properties']['edit_url'] = array(
+    'label' => t('Edit URL'),
+    'description' => t("The URL of the order's edit page."),
+    'getter callback' => 'commerce_order_get_properties',
+    'type' => 'uri',
+  );
+}
\ No newline at end of file
diff --git a/modules/order/commerce_order_ui.tokens.inc b/modules/order/commerce_order_ui.tokens.inc
new file mode 100644
index 0000000..99bfaea
--- /dev/null
+++ b/modules/order/commerce_order_ui.tokens.inc
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @file
+ * Builds placeholder replacement tokens for UI bound order-related data.
+ */
+function commerce_order_ui_token_info() {
+  $order = array();
+
+  $order['url'] = array(
+    'name' => t('URL'),
+    'description' => t('The URL of the order.'),
+  );
+  return array(
+    'tokens' => array('order' => $order),
+  );
+}
+
+
+function commerce_order_ui_tokens($type, $tokens, array $data = array(), array $options = array()) {
+  $url_options = array('absolute' => TRUE);
+
+  if (isset($options['language'])) {
+    $url_options['language'] = $options['language'];
+    $language_code = $options['language']->language;
+  }
+  else {
+    $language_code = NULL;
+  }
+
+  $replacements = array();
+
+  if ($type == 'order' && !empty($data['order'])) {
+    $order = $data['order'];
+
+    foreach ($tokens as $name => $original) {
+      switch ($name) {
+        case 'url':
+          $replacements[$original] = url('user/' . $order->uid . '/orders/' . $order->order_id, $url_options);
+          break;
+      }
+    }
+  }
+
+  return $replacements;
+}
\ No newline at end of file
diff --git a/modules/product/commerce_product.info.inc b/modules/product/commerce_product.info.inc
index 17bc031..47bf6a5 100644
--- a/modules/product/commerce_product.info.inc
+++ b/modules/product/commerce_product.info.inc
@@ -45,12 +45,6 @@ function commerce_product_entity_property_info() {
     'required' => TRUE,
     'query callback' => 'entity_metadata_table_query',
   );
-  $properties['edit_url'] = array(
-    'label' => t('Edit URL'),
-    'description' => t("The URL of the product's edit page."),
-    'getter callback' => 'commerce_product_get_properties',
-    'type' => 'uri',
-  );
   $properties['created'] = array(
     'label' => t('Date created'),
     'description' => t('The date the product was created.'),
diff --git a/modules/product/commerce_product.tokens.inc b/modules/product/commerce_product.tokens.inc
index 3e4842e..2e6dc67 100644
--- a/modules/product/commerce_product.tokens.inc
+++ b/modules/product/commerce_product.tokens.inc
@@ -35,10 +35,6 @@ function commerce_product_token_info() {
     'name' => t('Title'),
     'description' => t('The title of the product.'),
   );
-  $product['edit-url'] = array(
-    'name' => t('Edit URL'),
-    'description' => t("The URL of the product's edit page."),
-  );
 
   // Chained tokens for products.
   $product['creator'] = array(
@@ -103,10 +99,6 @@ function commerce_product_tokens($type, $tokens, array $data = array(), array $o
           $replacements[$original] = $sanitize ? check_plain($product->title) : $product->title;
           break;
 
-        case 'edit-url':
-          $replacements[$original] = url('admin/commerce/products/' . $product->product_id . '/edit', $url_options);
-          break;
-
         // Default values for the chained tokens handled below.
         case 'creator':
           if (!$product->uid) {
diff --git a/modules/product/commerce_product_ui.info.inc b/modules/product/commerce_product_ui.info.inc
new file mode 100644
index 0000000..2594122
--- /dev/null
+++ b/modules/product/commerce_product_ui.info.inc
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * Implements hook_entity_property_info_alter().
+ *
+ * Add UI bound product properties.
+ */
+function commerce_product_ui_entity_property_info_alter(&$info) {
+  $info['commerce_product']['properties']['edit_url'] = array(
+    'label' => t('Edit URL'),
+    'description' => t("The URL of the product's edit page."),
+    'getter callback' => 'commerce_product_get_properties',
+    'type' => 'uri',
+  );
+}
\ No newline at end of file
