         manufacturers = @_buildManufacturers(manufacturersXML, @productType) if manufacturersXML
         @_updateProductType(@productType, manufacturers) if manufacturers
     .then (productTypeUpdateResult) =>
+      @logger.info '[Categories] Categories XML import started...'
+      @logger.info "[Categories] Fetched categories count before create: '#{_.size @fetchedCategories}'"
       @categories = @_buildCategories(@categoriesXML) if @categoriesXML
-      creates = @_buildCategoryCreates(@categories, @fetchedCategories) if @categories
-      @_batch(_.map(creates, (c) => @_createCategory c), 100) if creates
+      @categoryCreates = @_buildCategoryCreates(@categories, @fetchedCategories) if @categories
+      @_batch(_.map(@categoryCreates, (c) => @_createCategory c), 100) if @categoryCreates
     .then (createCategoriesResult) =>
-      # fetch created categories to get id's used for parent reference creation
-      @_fetchCategories()
+      # fetch created categories to get id's used for parent reference creation. Required only if new categories created.
+      @_fetchCategories() if @categoryCreates
     .then (fetchedCategories) =>
-      @fetchedCategories = @_transformByCategoryExternalId fetchedCategories.result
-      updates = @_buildCategoryUpdates(@categories, @fetchedCategories) if @categories
-      @_batch(_.map(updates, (c) => @_updateCategory c), 100) if updates
+      @fetchedCategories = @_transformByCategoryExternalId fetchedCategories.results if fetchedCategories
+      @logger.info "[Categories] Fetched count after create: '#{_.size @fetchedCategories}'" if fetchedCategories
+      categoryUpdates = @_buildCategoryUpdates(@categories, @fetchedCategories) if @categories
+      @_batch(_.map(categoryUpdates, (c) => @_updateCategory c), 100) if categoryUpdates
     .then (updateCategoriesResult) =>
-      @logger.info '[Products] Products import started...'
+      @logger.info '[Products] Products XML import started...'
+      @logger.info "[Products] Import products found: '#{_.size @productsXML.Products?.Product}'"
       products = @_buildProducts(@productsXML, @productType, @fetchedCategories)
-      @logger.info "[Products] About to create '#{_.size products}' products."
+      @logger.info "[Products] Create count: '#{_.size products}'"
       @_batch(_.map(products, (p) => @_createProduct p), 100) if products
     .fail (error) =>
       @logger.error "Error on execute method; #{error}"

      @logger.info "[Manufacturers] No update action for manufacturers attribute '#{attributeName}' required."

  _buildCategories: (data) ->
    @logger.info '[Categories] Categories import started...'
    @logger.debug "[Categories] data:\n#{utils.pretty data}"
    count = _.size(data.Categories?.Category)
    if count
      @logger.info "[Categories] Categories found: '#{count}'"
    else
      @logger.info '[Categories] No categories found or undefined. Please check manufacturers input XML.'
      return
    categoriesData = data.Categories.Category
    # get root categories only

    utils.xmlToJson(path) if path

  _buildManufacturers: (data, productType) ->
    @logger.info '[Manufacturers] Manufacturers XML import started...'
    @logger.debug "[Manufacturers] data:\n#{utils.pretty data}"

    if not @mapping.productMapping.ManufacturerId
