class ZuoraConnect::AppInstanceBase

def build_task(task_data, session)

### START Task Mathods ####
def build_task(task_data, session)
  begin
    @task_data = task_data
    @mode = @task_data["mode"]
    @task_data.each do |k,v|
      if k.match(/^(.*)_login$/)
        tmp = ZuoraConnect::Login.new(v)
        if !session.nil? && v["tenant_type"] == "Zuora"
          if tmp.entities.size > 0
            tmp.entities.each do |value|
              entity_id = value["id"]
              tmp.client(entity_id).current_session = session["#{self.id}::#{k}::#{entity_id}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}::#{entity_id}:session"]
            end
          else
            tmp.client.current_session = session["#{self.id}::#{k}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}:session"]
          end
        end
        @logins[k] = tmp
        self.attr_builder(k, @logins[k])
      elsif k == "options"
        v.each do |opt|
          @options[opt["config_name"]] = opt
        end
      elsif k == "user_settings"
        self.timezone =  v["timezone"]
        self.locale = v["local"]
      end
    end
  rescue => ex
    Rails.logger.error("Task Data: #{task_data}")
    Rails.logger.error("Task Session: #{session.to_hash}")
    raise
  end
end