> ## Documentation Index
> Fetch the complete documentation index at: https://forest-chore-open-api.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrade to v9

> The purpose of this note is to help developers to upgrade their agent from v8 to v9. Please read carefully and integrate the following breaking changes to ensure a smooth upgrade.​

<Info>
  Please follow the recommended procedure to upgrade your agent version by following [this note](/legacy/javascript-agents/how-tos/maintain/push-your-new-version-to-production).
</Info>

This upgrade unlocks the following features:

* Use templating in the filters of Chart components
* Add conditions to your role permissions

## Upgrading to v9

<Warning>
  As for any dependency upgrade, it's very important to **test this upgrade** **in your testing environments**. Not doing so could result in your admin panel being unusable.
</Warning>

To upgrade to v9, first update your project according to the [*Breaking Changes*](/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v9#breaking-changes) section below.&#x20;

If you're upgrading from an older version, please make sure you've also read the previous upgrade notes ([v8](/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v8), [v7](/legacy/javascript-agents/how-tos/maintain/upgrade-notes-sql-mongodb/upgrade-to-v7),..)

Once you're done with the above steps, run the following:

<Tabs>
  <Tab title="SQL">
    ```
    npm install "forest-express-sequelize@^9.0.0"
    ```
  </Tab>

  <Tab title="Mongoose">
    ```
    npm install "forest-express-mongoose@^9.0.0"
    ```
  </Tab>
</Tabs>

<Info>
  In case of a regression introduced in Production after the upgrade, a rollback to your previous agent is the fastest way to restore your admin panel.
</Info>

## Breaking changes

### Roles v2.0

This new version (v9) drops the support of the legacy Roles system (v1.0). If you are in this legacy configuration, please follow [this procedure](/legacy/javascript-agents/how-tos/maintain/migrate-to-the-new-role-system) in order to migrate to the new Roles system (v2.0) **before** you attempt to upgrade to version 9.

<Warning>
  **How do I know if I'm using the legacy or new Roles system?**

  If you have access to Roles (Project settings > Roles) as designed below\...\
  \
  <img src="https://mintcdn.com/forest-chore-open-api/l9oWVTFSA2iV8NAX/images/legacy/javascript-agents/image%20(10).png?fit=max&auto=format&n=l9oWVTFSA2iV8NAX&q=85&s=4ccdcb8de78536e0d4893aa99edd48b0" alt="" width="801" height="315" data-path="images/legacy/javascript-agents/image (10).png" />\
  \
  then you are using the new Role system.
</Warning>

### Approval Workflow

<Warning>
  This new major version makes the configuration, described below, mandatory to ensure that actions are not triggered directly and approvals requests are properly created for the reviewers.
</Warning>

**Whether or not** your project currently uses the Approval Workflow feature,
you must ensure that all your Smart Actions routes are configured with the Smart Action middleware:
`permissionMiddlewareCreator.smartAction()`.

```javascript theme={null}
// BEFORE v9, this configuration, although unsecured, was working.
router.post('/actions/mark-as-live', (req, res) => {
  // ...
});

// NOW in v9, this configuration is mandatory to make approvals work as expected.
const { PermissionMiddlewareCreator } = require('forest-express-xxx');
const permissionMiddlewareCreator = new PermissionMiddlewareCreator(
  'companies'
);

router.post(
  '/actions/mark-as-live',
  permissionMiddlewareCreator.smartAction(),
  (req, res) => {
    // ...
  }
);
```
