# Recovering multiple projects

**Restoring multiple Azure DevOps projects enables organizations to quickly recover projects, repositories, and source code at scale, ensuring consistent and reliable restoration across the development environment.**

***

## Recovery process

The below steps demonstrate how to restore multiple **Azure DevOps** projects at once using **Xopero ONE Management Service**.

{% hint style="danger" %}
**Deleted artifacts cannot be restored&#x20;**<mark style="color:red;">**while they remain in the recycle bin**</mark>**&#x20;— they can be restored, but you must remove them from the recycle bin first.**
{% endhint %}

{% hint style="danger" %}
**Azure does not allow restoring deleted packages to the same feed.** Once a package is deleted, it must remain deleted. Restoring to a new feed does not have this limitation, so all packages should be restored there.
{% endhint %}

{% stepper %}
{% step %}
Get into the restore view using the following method:

1. Open the **Azure DevOps** tab (**DevOps** > **Azure DevOps**), then click the **Explore** button next to the organization whose backup you want to restore (explore <img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2Fmm2dNiUT8SlPVdq06bAb%2Fimage.png?alt=media&#x26;token=657d516d-d2f1-44fb-930b-55d174b1804b" alt="" data-size="original"> icon in list view).
2. In the **Projects & repositories** tab, select all projects you want to restore, and then click **Restore** in the top menu.

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2FARRLUULGfZu3acIjCJTq%2Fimage.png?alt=media&#x26;token=630b443e-f4c5-48b3-9d43-c3714b807fbf" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click every chosen project to select the backup plan and copy from which you want to restore data, then click **Next**.

{% hint style="info" %}
By default, the latest backup is always selected, regardless of the plan.
{% endhint %}
{% endstep %}

{% step %}
Select the destination for the recovery and click **Next**.

{% hint style="info" %}
You can choose any device or organization registered in **Xopero ONE** (you can find more information about cross-recovery in **Useful links and items section**).
{% endhint %}

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2FTUjClFU2sZRrvlcBD6qA%2Fimage.png?alt=media&#x26;token=2853772a-d3d5-464d-83e1-bc3efc909a2d" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In **Data to restore section** at the top, click **Edit** and select data you want to restore.

{% hint style="success" %}
By default, all items are selected for restoration. However, **Xopero ONE** allows you to choose which metadata to restore. You can include or exclude each element by toggling the switch next to it.
{% endhint %}

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2Fy7Y2ITrsgWNAbmXyU257%2Fimage.png?alt=media&#x26;token=b4c7c4d2-2b8f-45ab-9ea4-137979657d51" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
In the **Throttling prevention** section, you can add additional **DevOps** organization accounts to avoid throttling.

{% hint style="warning" %}
To use additional organization accounts, you must first add them in the organization settings (organization view > **Edit**).
{% endhint %}

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2Fxj6EcgFF0Qq7csK3YPQL%2Fimage.png?alt=media&#x26;token=78cf355e-c491-4e5f-ba23-f0d5297b45ad" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Configure the recovery destination settings, depending on where the backup will be restored.

#### Restore to a Git organization:

1. Select the target organization (where applicable).
2. In **Restore settings**, you can set custom names for all projects and repositories in the project, or add a suffix to their original names.

{% hint style="danger" %}
If the custom name—or the original project and repository names—already exists within the selected **Git** organization, **the restoration will fail**. To ensure successful recovery, choose unique names or select the **Add suffix to repo/project name** option, so the restored items to retain their original names with an automatically generated suffix.
{% endhint %}

3. If you are restoring your project to the **Azure DevOps** or **DevOps Server** organization:
   1. Choose whether to restore repositories from the project's copy:
      1. When the **Restore repositories from this project's copy** switch is turned off during the restore process, along with the project, all of its protected repositories are restored, **regardless of whether the repositories were protected by the same plan or by different plans**. The latest available backups are used.
      2. When the switch is turned on, a different restore mechanism is applied. In this case, **only repositories backed up by the same plan as the project are restored**.

{% hint style="danger" %}
Due to required changes, the latter mechanism is not available for backups created with **Xopero ONE** versions earlier than 2.0.5 or for agents running versions lower than 2.0.5.
{% endhint %}

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2FsmRHYmygoTGpnzrOeVtb%2Fimage.png?alt=media&#x26;token=3cb2ebae-67b2-4fc3-b8f9-fc5c819b18fe" alt=""><figcaption></figcaption></figure>

4. Adjust the bandwidth and other available settings, depending on the recovery destination.
5. Check which agent is set as the default for recovery and change it if necessary.

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2FsXExc30FxlCpmokTHu93%2Fimage.png?alt=media&#x26;token=d6a19857-f1da-426d-9881-9720ae00040f" alt=""><figcaption></figcaption></figure>

#### Restore to a device:

{% hint style="warning" %}
To restore a repository to a local device, you must have a **Git** client and the **Xopero ONE** agent installed on that device (you can find more information about agents in **Useful links and items** section).
{% endhint %}

{% hint style="danger" %}
You can restore **only the repository** (without metadata) when restoring data to local resources.
{% endhint %}

1. Select the destination device (a registered device).
2. Make sure the device where you want to restore data has the **Git** client added to the PATH environment variable. The PATH variable is usually configured automatically after **Git** installation (a system restart may be required) — if it isn’t, you will have to configure it manually.

{% hint style="info" %}
To configure the PATH variable in **Windows**, open the environment variables, select the PATH variable, and click the **Edit** button. Copy the path to the git.exe file and add it to the PATH variable.
{% endhint %}

3. Specify the restoration directory and configure other options (for example, whether to overwrite existing data or reduce bandwidth). If needed, you can create a new restoration folder on the selected drive from the **Management Service** level.

<figure><img src="https://319733277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0CBTl43C3OO6ySL1DJ6k%2Fuploads%2FJC0cnT4mvataXbu2UwKj%2Fimage.png?alt=media&#x26;token=995d642c-73fe-4f02-9fac-a8e99c764fd1" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
After defining all parameters, click the **Restore** button to begin the recovery process. When the process is complete, a new project/repository/folder will be created in your organization/on your device. You can monitor the restoration process in the **Tasks** tab.
{% endstep %}
{% endstepper %}

***

## Useful links and items

{% content-ref url="../../../../deployment-and-configuration/xopero-one-agent" %}
[xopero-one-agent](https://helpcenter.xopero.com/xopero-one-en/deployment-and-configuration/xopero-one-agent)
{% endcontent-ref %}

{% content-ref url="../../general/cross-recovery-for-devops-organizations" %}
[cross-recovery-for-devops-organizations](https://helpcenter.xopero.com/xopero-one-en/backup-and-recovery/devops/general/cross-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../general/lfs-recovery-for-devops-organizations" %}
[lfs-recovery-for-devops-organizations](https://helpcenter.xopero.com/xopero-one-en/backup-and-recovery/devops/general/lfs-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../general/wiki-recovery-for-devops-organizations" %}
[wiki-recovery-for-devops-organizations](https://helpcenter.xopero.com/xopero-one-en/backup-and-recovery/devops/general/wiki-recovery-for-devops-organizations)
{% endcontent-ref %}

{% content-ref url="../../../../compliance-and-risk-management/throttling-prevention" %}
[throttling-prevention](https://helpcenter.xopero.com/xopero-one-en/compliance-and-risk-management/throttling-prevention)
{% endcontent-ref %}
