> For the complete documentation index, see [llms.txt](https://docs.connect.jfrog.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.connect.jfrog.io/features-new-ui/deployments/update-deployment/best-practice-deploy-in-groups.md).

# Best Practice: Graded Deployments

When you deploy a software update to your edge devices, you want everything to go as smoothly as possible. If there are issues, the troubleshooting should be easy, and the number of devices impacted should be as low as possible. You can achieve this by deploying in groups.

## Test Groups

To deploy a software update, you should start with one or more test groups. A test group includes devices that are in your development lab and are similar to the devices that are in production. Your test groups can be actual [Groups](/features-new-ui/account-management/organize-your-fleet.md#groups), as defined in [Manage your Fleet](/features-new-ui/account-management/organize-your-fleet.md), or they can be subsets consisting of devices that use [Tags](/features-new-ui/account-management/organize-your-fleet.md#tags) to identify them as test devices.

## Production Groups

Production groups in a project range from one to numerous groups that segment the devices by location, product type, or some other attribute(s).

## Method

### Stage 1: Deploy on Test Groups and Validate

Deploy the software update to one or more test groups. Ensure that everything is working as expected and that your test devices are running as expected. If there were issues, you may need to create a new deployment and test again before deploying to production groups.

### Stage 2: Deploy on Production Groups

Once your software update has been validated using the test groups, you can use the same update flow on your production groups. To deploy the same software and update flow that you have previously deployed, do the following:

1. Go to **Deployments** in the left menu and to the **Update Flows** tab. Find the flow you created and click the cloud icon in the **Deploy** column.
2. In the New Deployment wizard, enter any deployment parameters that are required, and click **Next**.
3. Enter the new groups and any additional filters you need.
4. Set the same Deployment Tag and Version that you used in the previous deployment (e.g., the successful test deployment or a previous production deployment).
5. Enter a comment that will help you identify the deployment, and run the deployment.

### Use Graded Deployments&#x20;

We recommend grading the deployments to your production groups by quantity of devices. For example, first deploy to two devices, then 20 devices, then 200 devices, and then continue to deploy groups in quantities that you feel comfortable with. As long as the deployments are successful and the updated software is working, you can re-use the same update workflow, changing only the destination groups (and/or filters) for each deployment phase.&#x20;

{% hint style="success" %}
**Note**: The numbers presented above are for example purposes only, and do not constitute specific recommendations for your devices.
{% endhint %}

## What’s Next?

Learn more about [creating groups](/features-new-ui/account-management/organize-your-fleet/create-groups.md) of devices.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.connect.jfrog.io/features-new-ui/deployments/update-deployment/best-practice-deploy-in-groups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
