Skip to content

Releases: snowflakedb/snowflake-cli

v2.2.0-rc0

18 Apr 13:32
cd40584
Compare
Choose a tag to compare
v2.2.0-rc0 Pre-release
Pre-release

Deprecations

  • snow snowpark package lookup no longer performs check against PyPi. Using --pypi-download or --yes
    has no effect and will cause a warning. In this way the command has single responsibility - check if package is
    available in Snowflake Anaconda channel.
  • snow snowpark package create:
    • --pypi-download or --yes flags are deprecated, have no effect and will cause a warning.
      create command always checks against PyPi.
    • --allow-native-libraries is deprecated in favour of boolean flag --allow-shared-libraries.
      Using old flag will cause a warning.
  • snow snowpark build:
    • --pypi-download flag is deprecated, have no effect and will cause a warning. Create command always check against PyPi.
    • --check-anaconda-for-pypi-depts is deprecated and using it will cause warning, the functionality is replaced by --ignore-anaconda
    • --package-native-libraries is deprecated and using it will cause warning, the functionality is replaced by --allow-shared-libraries
  • snow object stage commands are deprecated and using them will cause a warning.
    Functionality is replaced by snow stage commands.

New additions

  • Added support for fully qualified name (database.schema.name) in name parameter in streamlit project definition
  • Added support for fully qualified image repository names in spcs image-repository commands.
  • Added --if-not-exists option to create commands for service, and compute-pool. Added --replace and --if-not-exists options for image-repository create.
  • Added support for python connector diagnostic report.
  • Added snow app deploy command that creates an application package and syncs the local changes to the stage without creating or updating the application.
  • Added is_default column to snow connection list output to highlight default connection.
  • snow snowpark package create:
    • new --ignore-anaconda flag disables package lookup in Snowflake Anaconda channel.
      All dependencies will be downloaded from PyPi.
    • new --skip-version-check skips comparing versions of dependencies between requirements and Anaconda.
    • new --index-url flag sets up Base URL of the Python Package Index to use for package lookup.
  • snow snowpark build:
    • new --skip-version-check skips comparing versions of dependencies between requirements and Anaconda.
    • new --index-url flag sets up Base URL of the Python Package Index to use for package lookup.
  • Added --recursive flag for copy from stage, it will reproduce the directory structure locally.
  • Added support for snowgit. New commands:
    • snow git setup - wizard setting up a git repository stage and creating all necessary objects
    • snow git fetch - fetches latest changes from the origin repository into Snowflake repository
    • snow git list-brahces - lists all branches in the repository
    • snow git list-tags - lists all tags in the repository
    • snow git list-files - lists all files on provided branch/tag/commit
    • snow git copy - copies files from provided branch/tag/commit into stage or local directory
    • snow git execute - execute immediate files from repository
  • Added command for execute immediate snow object stage execute
  • Fetching available packages list from Snowflake instead of directly from Anaconda with fallback to the old method (for backward compatibility).
    As the new method requires a connection to Snowflake, it adds connection options to the following commands:
    • snow snowpark build
    • snow snowpark package lookup
    • snow snowpark package create

Fixes and improvements

  • Adding --image-name option for image name argument in spcs image-repository list-tags for consistency with other commands.
  • Fixed errors during spcs image-registry login not being formatted correctly.
  • Project definition no longer accept extra fields. Any extra field will cause an error.
  • Changing imports in function/procedure section in snowflake.yml will cause the definition update on replace
  • Adding --pattern flag to stage list command for filtering out results with regex.
  • Fixed snowpark build paths for builds with --project option (fixed empty zip issue).
  • More clear error messages in snow snowpark build command
  • Adding support for any source supported by pip in snow snowpark.
  • Fixed version parsing for packages lookup on Snowflake Anaconda Channel
  • Fix handling database/schema/role identifiers containing dashes
  • Fix schema override bug in snow connection test
  • Hidden incorrectly working config permissions warning on Windows

v2.1.2

27 Mar 11:52
Compare
Choose a tag to compare

Fixes and improvements

  • Add pip as Snowflake-cli dependency
  • Optimize connection test command
  • Fix venv creation issues in snowpark package create and snowpark build command

v2.1.1

19 Mar 15:04
Compare
Choose a tag to compare

Fixes and improvements

  • Improved security of printing connection details in snow connection list.
  • Improved parsing of non-quoted scalar values within square brackets in manifest.yml in Native App projects.

v2.1.0

07 Mar 13:56
Compare
Choose a tag to compare

New additions

  • Added ability to specify scope of the object list command with the --in <scope_type> <scope_name> option.

  • Introduced snowflake.cli.api.console.cli_console object with helper methods for intermediate output.

  • Added new --mfa-passcode flag to support MFA.

  • Added possibility to specify database and schema in snowflake.yml for snowpark objects. Also name can specify a fully qualify name.

  • New commands for spcs

    • Added image-registry url command to get the URL for your account image registry.
    • Added image-registry login command to fetch authentication token and log in to image registry in one command.
    • Added image-repository url <repo_name> command to get the URL for specified image repository.
    • Added create command for image-repository.
    • Added status, set (property), unset (property), suspend and resume commands for compute-pool.
    • Added set (property), unset (property),upgrade and list-endpoints commands for service.
  • Connections parameters are also supported by generic environment variables:

    • SNOWFLAKE_ACCOUNT
    • SNOWFLAKE_USER
    • SNOWFLAKE_PASSWORD
    • SNOWFLAKE_DATABASE
    • SNOWFLAKE_SCHEMA
    • SNOWFLAKE_ROLE
    • SNOWFLAKE_WAREHOUSE
    • SNOWFLAKE_MFA_PASSCODE
  • Introduced --pypi-download flag for snow snowpark package commands to replace -y and --yes

    The SNOWFLAKE_CONNECTION_<NAME>_<KEY> variable takes precedence before the generic flag. For example if
    SNOWFLAKE_PASSWORD and SNOWFLAKE_CONNECTIONS_FOO_PASSWORD are present and user tries to use connection
    "foo" then the later variable will be used.

  • Testing connection using snow connection test validates also access to database, schema, role and warehouse
    specified in the connection details.

  • Added snow connection set-default command for changing default connection.

Fixes and improvements

  • Restricted permissions of automatically created files
  • Fixed bug where spcs service create would not throw error if service with specified name already exists.
  • Logging into the file by default (INFO level)
  • Added validation that service, compute pool, and image repository names are unqualified identifiers.
  • spcs service commands now accept qualified names.
  • Updated help messages for spcs commands.

v2.1.0-rc2

07 Mar 13:39
Compare
Choose a tag to compare
v2.1.0-rc2 Pre-release
Pre-release

New additions

  • Added ability to specify scope of the object list command with the --in <scope_type> <scope_name> option.

  • Introduced snowflake.cli.api.console.cli_console object with helper methods for intermediate output.

  • Added new --mfa-passcode flag to support MFA.

  • Added possibility to specify database and schema in snowflake.yml for snowpark objects. Also name can specify a fully qualify name.

  • New commands for spcs

    • Added image-registry url command to get the URL for your account image registry.
    • Added image-registry login command to fetch authentication token and log in to image registry in one command.
    • Added image-repository url <repo_name> command to get the URL for specified image repository.
    • Added create command for image-repository.
    • Added status, set (property), unset (property), suspend and resume commands for compute-pool.
    • Added set (property), unset (property),upgrade and list-endpoints commands for service.
  • Connections parameters are also supported by generic environment variables:

    • SNOWFLAKE_ACCOUNT
    • SNOWFLAKE_USER
    • SNOWFLAKE_PASSWORD
    • SNOWFLAKE_DATABASE
    • SNOWFLAKE_SCHEMA
    • SNOWFLAKE_ROLE
    • SNOWFLAKE_WAREHOUSE
    • SNOWFLAKE_MFA_PASSCODE
  • Introduced --pypi-download flag for snow snowpark package commands to replace -y and --yes

    The SNOWFLAKE_CONNECTION_<NAME>_<KEY> variable takes precedence before the generic flag. For example if
    SNOWFLAKE_PASSWORD and SNOWFLAKE_CONNECTIONS_FOO_PASSWORD are present and user tries to use connection
    "foo" then the later variable will be used.

  • Testing connection using snow connection test validates also access to database, schema, role and warehouse
    specified in the connection details.

  • Added snow connection set-default command for changing default connection.

Fixes and improvements

  • Restricted permissions of automatically created files
  • Fixed bug where spcs service create would not throw error if service with specified name already exists.
  • Logging into the file by default (INFO level)
  • Added validation that service, compute pool, and image repository names are unqualified identifiers.
  • spcs service commands now accept qualified names.
  • Updated help messages for spcs commands.

v2.1.0-rc1

04 Mar 13:21
Compare
Choose a tag to compare
v2.1.0-rc1 Pre-release
Pre-release

New additions

  • Added ability to specify scope of the object list command with the --in <scope_type> <scope_name> option.

  • Introduced snowflake.cli.api.console.cli_console object with helper methods for intermediate output.

  • Added new --mfa-passcode flag to support MFA.

  • Added possibility to specify database and schema in snowflake.yml for snowpark objects. Also name can specify a fully qualify name.

  • New commands for spcs

    • Added image-registry url command to get the URL for your account image registry.
    • Added image-registry login command to fetch authentication token and log in to image registry in one command.
    • Added image-repository url <repo_name> command to get the URL for specified image repository.
    • Added create command for image-repository.
    • Added status, set (property), unset (property), suspend and resume commands for compute-pool.
    • Added set (property), unset (property),upgrade and list-endpoints commands for service.
  • Connections parameters are also supported by generic environment variables:

    • SNOWFLAKE_ACCOUNT
    • SNOWFLAKE_USER
    • SNOWFLAKE_PASSWORD
    • SNOWFLAKE_DATABASE
    • SNOWFLAKE_SCHEMA
    • SNOWFLAKE_ROLE
    • SNOWFLAKE_WAREHOUSE
    • SNOWFLAKE_MFA_PASSCODE
  • Introduced --pypi-download flag for snow snowpark package commands to replace -y and --yes

    The SNOWFLAKE_CONNECTION_<NAME>_<KEY> variable takes precedence before the generic flag. For example if
    SNOWFLAKE_PASSWORD and SNOWFLAKE_CONNECTIONS_FOO_PASSWORD are present and user tries to use connection
    "foo" then the later variable will be used.

  • Testing connection using snow connection test validates also access to database, schema, role and warehouse
    specified in the connection details.

  • Added snow connection set-default command for changing default connection.

Fixes and improvements

  • Restricted permissions of automatically created files
  • Fixed bug where spcs service create would not throw error if service with specified name already exists.
  • Logging into the file by default (INFO level)
  • Added validation that service, compute pool, and image repository names are unqualified identifiers.
  • spcs service commands now accept qualified names.
  • Updated help messages for spcs commands.

v2.1.0-rc0

23 Feb 09:27
829887b
Compare
Choose a tag to compare
v2.1.0-rc0 Pre-release
Pre-release

v2.1.0-rc0

Backward incompatibility

New additions

  • Added ability to specify scope of the object list command with the --in <scope_type> <scope_name> option.
  • Introduced snowflake.cli.api.console.cli_console object with helper methods for intermediate output.
  • Added new --mfa-passcode flag to support MFA.
  • Added possibility to specify database and schema in snowflake.yml for snowpark objects. Also name can specify a fully qualify name.
  • New commands for spcs
    • Added image-registry url command to get the URL for your account image registry.
    • Added image-registry login command to fetch authentication token and log in to image registry in one command.
    • Added image-repository url <repo_name> command to get the URL for specified image repository.
    • Added create command for image-repository.
    • Added status, set (property), unset (property), suspend and resume commands for compute-pool.
    • Added set (property), unset (property),upgrade and list-endpoints commands for service.
  • Connections parameters are also supported by generic environment variables:
    • SNOWFLAKE_ACCOUNT
    • SNOWFLAKE_USER
    • SNOWFLAKE_PASSWORD
    • SNOWFLAKE_DATABASE
    • SNOWFLAKE_SCHEMA
    • SNOWFLAKE_ROLE
    • SNOWFLAKE_WAREHOUSE
    • SNOWFLAKE_MFA_PASSCODE
      The SNOWFLAKE_CONNECTION_<NAME>_<KEY> variable takes precedence before the generic flag. For example if
      SNOWFLAKE_PASSWORD and SNOWFLAKE_CONNECTIONS_FOO_PASSWORD are present and user tries to use connection
      "foo" then the later variable will be used.
  • Introduced --pypi-download flag for snow snowpark package commands to replace -y and --yes
  • Testing connection using snow connection test validates also access to database, schema, role and warehouse
    specified in the connection details.
  • Added snow connection set-default command for changing default connection.

Fixes and improvements

  • Restricted permissions of automatically created files
  • Fixed bug where spcs service create would not throw error if service with specified name already exists.
  • Logging into the file by default (INFO level)
  • Added validation that service, compute pool, and image repository names are unqualified identifiers.
  • spcs service commands now accept qualified names.
  • Updated help messages for spcs commands.

v2.0.0

05 Feb 13:19
ac08292
Compare
Choose a tag to compare

Backward incompatibility

  • Introduced snow object group with list, describe and drop commands which replaces corresponding
    functionalities of procedure/function/streamlit specific commands.

  • snow stage is now snow object stage

  • snow stage get and snow stage put are replaced by snow object stage copy [FROM] [TO]

  • snow warehouse status is now snow object show warehouse

  • snow connection test now outputs all connection details (except for the password), along with connection status

  • snow sql requires explicit -i flag to read input from stdin: cat my.sql | snow sql -i

  • Switched to Python Connector default connection https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection

    • Default connection name changed from dev to default
    • Environment variable for default connection name changed from SNOWFLAKE_OPTIONS_DEFAULT_CONNECTION to SNOWFLAKE_DEFAULT_CONNECTION_NAME
  • Snowpark changes

    • Removed procedure and function subgroups.
    • Removed snow snowpark function package and snow snowpark procedure package in favour of snow snowpark build.
    • Removed snow snowpark function create and snow snowpark function update. Functions can be deployed using snow snowpark deploy.
    • Removed snow snowpark procedure create and snow snowpark procedure update. Procedures can be deployed using snow snowpark deploy.
    • Procedures and functions use single zip artifact for all functions and procedures in project.
    • Changed path to coverage reports on stage, previously created procedures with coverage will not work, have to be recreated.
    • Previously created procedures or functions won't work with deploy command due to change in stage path of artifact. Previous code will remain under old path on stage.
    • Package commands are now under snow snowpark package.
    • Coverage commands were removed. To measure coverage of your procedures or functions use coverage locally.
  • Snowpark Containers services commands

    • cp alias for compute-pool commands was removed.
    • services commands were renamed to service
    • registry commands were renamed to image-registry
    • compute-pool, service, and image-registry commands were moved from snowpark group to a new spcs group.
    • snow spcs compute-pool create and snow spcs service create have been updated with new options to match SQL interface.
    • Added new image-repository command group under spcs. Moved list-images and list-tags from image-registry to image-repository.
    • Removed snow snowpark jobs command.
    • list-images and list-tags now outputs image names with a slash at the beginning (e.g. /db/schema/repo/image). Image name input to list-tags requires new format.
    • snow spcs compute-pool stop has been removed in favor of snow spcs compute-pool stop-all.
  • Streamlit changes

    • snow streamlit deploy is requiring snowflake.yml project file with a Streamlit definition.
    • snow streamlit describe is now snow object describe streamlit
    • snow streamlit list is now snow object list streamlit
    • snow streamlit drop is now snow object drop streamlit

New additions

  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • --temporary-connection flag, that allows you to connect, without anything declared in config file
  • Added project definition for Streamlit
  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • Added project definition for Snowpark procedures and functions.
    • The snowflake.yml file is required to deploy functions or procedures.
    • Introduced new deploy command for project with procedures and functions.
    • Introduced new build command for project with procedure and functions
  • Added support for external access integration for functions and procedures
  • Added support for runtime version in snowpark procedures ad functions.
  • You can include previously uploaded packages in your functions, by listing them under imports in snowflake.yml
  • Added more options to snow connection add - now you can also specify authenticator and path to private key
  • Added support for native applications by introducing new commands.
    • snow app init command that creates a new Native App project from a git repository as a template.
    • snow app version create command that creates or upgrades an application package and creates a version or patch for that package.
    • snow app version drop command that drops a version associated with an application package.
    • snow app version list command that lists all versions associated with an application package.
    • snow app run command that creates or upgrades an application in development mode or through release directives.
    • snow app open command that opens the application inside of your browser on Snowsight, once it has been installed in your account.
    • snow app teardown command that attempts to drop both the application and package as defined in the project definition file.
  • Snowpark: add default field to procedure and function arguments definition in snowflake.yml to support named and optional
    arguments

Fixes and improvements

  • Allow the use of quoted identifiers in stages

v2.0.0rc3

02 Feb 11:07
2b019d2
Compare
Choose a tag to compare
v2.0.0rc3 Pre-release
Pre-release

Backward incompatibility

  • Introduced snow object group with show, describe and drop commands which replaces corresponding
    functionalities of procedure/function/streamlit specific commands.

  • snow stage is now snow object stage

  • snow stage get and snow stage put are replaced by snow object stage copy [FROM] [TO]

  • snow warehouse status is now snow object show warehouse

  • snow connection test now outputs all connection details (except for the password), along with connection status

  • snow sql requires explicit -i flag to read input from stdin: cat my.sql | snow sql -i

  • Switched to Python Connector default connection https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection

    • Default connection name changed from dev to default
    • Environment variable for default connection name changed from SNOWFLAKE_OPTIONS_DEFAULT_CONNECTION to SNOWFLAKE_DEFAULT_CONNECTION_NAME
  • Snowpark changes

    • Removed procedure and function subgroups.
    • Removed snow snowpark function package and snow snowpark procedure package in favour of snow snowpark build.
    • Removed snow snowpark function create and snow snowpark function update. Functions can be deployed using snow snowpark deploy.
    • Removed snow snowpark procedure create and snow snowpark procedure update. Procedures can be deployed using snow snowpark deploy.
    • Procedures and functions use single zip artifact for all functions and procedures in project.
    • Changed path to coverage reports on stage, previously created procedures with coverage will not work, have to be recreated.
    • Previously created procedures or functions won't work with deploy command due to change in stage path of artifact. Previous code will remain under old path on stage.
    • Package commands are now under snow snowpark package.
    • Coverage commands were removed. To measure coverage of your procedures or functions use coverage locally.
  • Snowpark Containers services commands

    • cp alias for compute-pool commands was removed.
    • services commands were renamed to service
    • registry commands were renamed to image-registry
    • compute-pool, service, and image-registry commands were moved from snowpark group to a new spcs group.
    • snow spcs compute-pool create and snow spcs service create have been updated with new options to match SQL interface
    • Added new image-repository command group under spcs. Moved list-images and list-tags from image-registry to image-repository.
    • Removed snow snowpark jobs command.
    • list-images and list-tags now outputs image names with a slash at the beginning (e.g. /db/schema/repo/image). Image name input to list-tags requires new format.
    • snow spcs compute-pool stop has been removed in favor of snow spcs compute-pool stop-all.
  • Streamlit changes

    • snow streamlit deploy is requiring snowflake.yml project file with a Streamlit definition.
    • snow streamlit describe is now snow object describe streamlit
    • snow streamlit list is now snow object show streamlit
    • snow streamlit drop is now snow object drop streamlit

New additions

  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • --temporary-connection flag, that allows you to connect, without anything declared in config file
  • Added project definition for Streamlit
  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • Added project definition for Snowpark procedures and functions.
    • The snowflake.yml file is required to deploy functions or procedures.
    • Introduced new deploy command for project with procedures and functions.
    • Introduced new build command for project with procedure and functions
  • Added support for external access integration for functions and procedures
  • Added support for runtime version in snowpark procedures ad functions.
  • You can include previously uploaded packages in your functions, by listing them under imports in snowflake.yml
  • Added more options to snow connection add - now you can also specify authenticator and path to private key
  • Added support for native applications by introducing new commands.
    • snow app init command that creates a new Native App project from a git repository as a template.
    • snow app version create command that creates or upgrades an application package and creates a version or patch for that package.
    • snow app version drop command that drops a version associated with an application package.
    • snow app version list command that lists all versions associated with an application package.
    • snow app run command that creates or upgrades an application in development mode or through release directives.
    • snow app open command that opens the application inside of your browser on Snowsight, once it has been installed in your account.
    • snow app teardown command that attempts to drop both the application and package as defined in the project definition file.
  • Snowpark: add default field to procedure and function arguments definition in snowflake.yml to support named and optional
    arguments

Fixes and improvements

  • Allow the use of quoted identifiers in stages

v2.0.0rc2

01 Feb 14:20
77b88aa
Compare
Choose a tag to compare
v2.0.0rc2 Pre-release
Pre-release

Backward incompatibility

  • Introduced snow object group with show, describe and drop commands which replaces corresponding
    functionalities of procedure/function/streamlit specific commands.

  • snow stage is now snow object stage

  • snow stage get and snow stage put are replaced by snow object stage copy [FROM] [TO]

  • snow warehouse status is now snow object show warehouse

  • snow connection test now outputs all connection details (except for the password), along with connection status

  • snow sql requires explicit -i flag to read input from stdin: cat my.sql | snow sql -i

  • Switched to Python Connector default connection https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-connect#setting-a-default-connection

    • Default connection name changed from dev to default
    • Environment variable for default connection name changed from SNOWFLAKE_OPTIONS_DEFAULT_CONNECTION to SNOWFLAKE_DEFAULT_CONNECTION_NAME
  • Snowpark changes

    • Removed procedure and function subgroups.
    • Removed snow snowpark function package and snow snowpark procedure package in favour of snow snowpark build.
    • Removed snow snowpark function create and snow snowpark function update. Functions can be deployed using snow snowpark deploy.
    • Removed snow snowpark procedure create and snow snowpark procedure update. Procedures can be deployed using snow snowpark deploy.
    • Procedures and functions use single zip artifact for all functions and procedures in project.
    • Changed path to coverage reports on stage, previously created procedures with coverage will not work, have to be recreated.
    • Previously created procedures or functions won't work with deploy command due to change in stage path of artifact. Previous code will remain under old path on stage.
    • Package commands are now under snow snowpark package.
    • Coverage commands were removed. To measure coverage of your procedures or functions use coverage locally.
  • Snowpark Containers services commands

    • compute-pool commands and its alias cp were renamed to pool commands.
    • services commands were renamed to service
    • pool, service, and image-registry commands were moved from snowpark group to a new spcs group (registry was renamed to image-registry).
    • snow spcs pool create and snow spcs service create have been updated with new options to match SQL interface
    • Added new image-repository command group under spcs. Moved list-images and list-tags from registry to image-repository.
    • Removed snow snowpark jobs command.
  • Streamlit changes

    • snow streamlit deploy is requiring snowflake.yml project file with a Streamlit definition.
    • snow streamlit describe is now snow object describe streamlit
    • snow streamlit list is now snow object show streamlit
    • snow streamlit drop is now snow object drop streamlit

New additions

  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • --temporary-connection flag, that allows you to connect, without anything declared in config file
  • Added project definition for Streamlit
  • Added snow streamlit get-url [NAME] command that returns url to a Streamlit app.
  • Added project definition for Snowpark procedures and functions.
    • The snowflake.yml file is required to deploy functions or procedures.
    • Introduced new deploy command for project with procedures and functions.
    • Introduced new build command for project with procedure and functions
  • Added support for external access integration for functions and procedures
  • Added support for runtime version in snowpark procedures ad functions.
  • You can include previously uploaded packages in your functions, by listing them under imports in snowflake.yml
  • Added more options to snow connection add - now you can also specify authenticator and path to private key
  • Added support for native applications by introducing new commands.
    • snow app init command that creates a new Native App project from a git repository as a template.
    • snow app version create command that creates or upgrades an application package and creates a version or patch for that package.
    • snow app version drop command that drops a version associated with an application package.
    • snow app version list command that lists all versions associated with an application package.
    • snow app run command that creates or upgrades an application in development mode or through release directives.
    • snow app open command that opens the application inside of your browser on Snowsight, once it has been installed in your account.
    • snow app teardown command that attempts to drop both the application and package as defined in the project definition file.

Fixes and improvements

  • Allow the use of quoted identifiers in stages