         deferred.resolve unsyncedOrders
     deferred.promise
 
-  _addSyncInfo: (orderId, orderVersion, channelId, externalId) ->
+  _buildOrderSyncInfoUpdates: (fetchedOrders, channelId) ->
+    updates = []
+
+    _.each fetchedOrders, (o) ->
+      wrapper =
+        id: o.id
+        payload:
+          version: o.version
+          actions: [
+            action: 'updateSyncInfo'
+            channel:
+              typeId: 'channel'
+              id: channelId
+            externalId: o.id
+          ]
+      updates.push wrapper
+
+    if _.size(updates) > 0
+      updates
+    else
+      null
+
+  _updateOrder: (id, data) ->
     deferred = Q.defer()
-    data =
-      version: orderVersion
-      actions: [
-        action: 'updateSyncInfo'
-        channel:
-          typeId: 'channel'
-          id: channelId
-        externalId: externalId
-      ]
-    @rest.POST "/orders/#{orderId}", data, (error, response, body) ->
+    @rest.POST "/orders/#{id}", data, (error, response, body) ->
       if error
-        deferred.reject "Error on setting sync info: " + error
-      else if response.statusCode isnt 200
-        deferred.reject "Problem on setting sync info (status: #{response.statusCode}): " + body
-      else
-        deferred.resolve "Order sync info successfully stored."
-    deferred.promise
-
-  ###
-  # Updates asynchronously category in Sphere.
-  #
-  # @param {Object} data Update category request data
-  # @return {Object} If success returns promise with success message otherwise rejects with error message
-  ###
-  _updateOrder: (data) ->
-    deferred = Q.defer()
-    @rest.POST "/categories/#{data.id}", data.payload, (error, response, body) ->
-      if error
-        deferred.reject "HTTP error on category update; Error: #{error}; Request body: \n #{utils.pretty data} \n\n Response body: '#{utils.pretty body}'"
+        deferred.reject "HTTP error on order update; Error: #{error}; Request body: \n #{utils.pretty data} \n\n Response body: '#{utils.pretty body}'"
       else
         if response.statusCode isnt 200
-          message = "Error on categories update; Request body: \n #{utils.pretty data} \n\n Response body: '#{utils.pretty body}'"
+          message = "Error on order update (status: #{response.statusCode}); Request body: \n #{utils.pretty data} \n\n Response body: '#{utils.pretty body}'"
           deferred.reject message
         else
-          message = "Category with id: '#{data.id}' updated."
+          message = "Order with id: '#{id}' updated."
           deferred.resolve message
     deferred.promise
 

    lineItemsXML = orderXML.ele("OrderLines", {'count': order.lineItems.length})
    _.each order.lineItems, (lineItem, index, list) =>
      lineItemXML = lineItemsXML.ele("OrderLine", {num: index + 1})
      @_lineItemToXML(lineItem, lineItemXML)

  _lineItemToXML: (lineItem, lineItemXML) =>
    lineItemXML.e('OrderLineId').t(lineItem.id)
    productId = utils.getVariantAttValue(mappings, 'ProductId', lineItem.variant)
    variationId = utils.getVariantAttValue(mappings, 'VariationId', lineItem.variant)

      ],
      (mappingsJson, fetchedOrders, ordersXsd) =>
        mappings = JSON.parse mappingsJson
        utils.assertProductIdMappingIsDefined mappings.product
        utils.assertVariationIdMappingIsDefined mappings.product
        utils.assertSkuMappingIsDefined mappings.product
        @fetchedOrders = fetchedOrders
        if _.size(@fetchedOrders) > 0
          @logger.info "[OrderExport] Orders to export count: '#{_.size @fetchedOrders}'"
