     program
       .version package_json.version
       .usage '[command] [globals] [options]'
-      .option '--projectKey <project-key>', 'your SPHERE.IO project-key'
-      .option '--clientId <client-id>', 'your OAuth client id for the SPHERE.IO API'
-      .option '--clientSecret <client-secret>', 'your OAuth client secret for the SPHERE.IO API'
+      .option '--projectKey <project-key>', 'your SPHERE.IO project-key. Optional if SFTP id used'
+      .option '--clientId <client-id>', 'your OAuth client id for the SPHERE.IO API. Optional if SFTP id used'
+      .option '--clientSecret <client-secret>', 'your OAuth client secret for the SPHERE.IO API. Optional if SFTP id used'
       .option '--mapping <file>', 'JSON file containing Brickfox to SPHERE.IO mappings'
-      .option '--config [file]', 'path to configuration file with data like SFTP credentials and its working folders'
+      .option '--sftpCredentials [file]', 'the path to a JSON file where to read the credentials from'
+      .option '--sftpHost', 'the SFTP host (will be used if sftpCredentials JSON is not given)'
+      .option '--sftpUsername', 'the SFTP username (will be used if sftpCredentials JSON is not given)'
+      .option '--sftpPassword', 'the SFTP password (will be used if sftpCredentials JSON is not given)'
+      .option '--config [file]', 'the path to a JSON file where to read the configuration from (not optional if any of --sftp* arguments is used)'
       .option '--sphereHost [host]', 'SPHERE.IO API host to connecto to'
       .option '--logLevel [level]', 'specifies log level (error|warn|info|debug|trace) [info]', 'info'
       .option '--logDir [directory]', 'specifies log file directory [.]', '.'

            logger.error error.stack if error.stack
            @exitCode = 1
        else # use command line arguments to load import/export files
          validateGlobalOpts(opts, CONS.CMD_IMPORT_ORDERS_STATUS)
          validateOpt(opts.status, 'status', CONS.CMD_IMPORT_ORDERS_STATUS)

          options = createBaseOptions(opts, logger)

        process.exit(2)

    validateGlobalOpts = (opts, commandName) ->
      validateOpt(opts.parent.mapping, 'mapping', commandName)

    validateCredentialsOpts = (opts, commandName) ->
      validateOpt(opts.parent.projectKey, 'projectKey', commandName)
      validateOpt(opts.parent.clientId, 'clientId', commandName)
      validateOpt(opts.parent.clientSecret, 'clientSecret', commandName)

    initSftp = (host, username, password, logger) ->
      throw new Error 'You must provide host in order to connect to SFTP' unless host
