I am back with another PowerShell tip and again one more for the VB365 product.
This one shows you how to move data between repositories using the Move-VBOEntityData cmdlet. There is also a script that you can download to automate your move as well.
You can check it out here - https://just-virtualization.tech/2025/04/10/powershell-tips-for-veeam-vb365-v8-move-data-between-repositories/
Also once you complete the move and since with this command you cannot move data in a repostiory from a Proxy to a Proxy Pool, referencing my first blog will allow you to complete the move from Proxy to Pool once the data migrates. You can check it out here - https://just-virtualization.tech/2025/04/01/powershell-tips-for-veeam-vb365-v8-1/
PowerShell Tips for Veeam โ VB365 v8.1 โ Move Data Between Repositories

Today, I will discuss another interesting PowerShell command and script that allows you to migrate data between repositories as outlined in the following KB article page โ https://www.veeam.com/kb3067
Now, this process can move data between repositories but cannot move from Object to Object repositories. Some of the caveats are found on the KB page linked above, and below is a comparison of PowerShell versus a Direct Data copy.

One of the big caveats for this process is that you cannot migrate data to a repository attached to a Proxy Pool. So my thoughts around this blog post and PowerShell command are to use it to migrate from Jet-DB to Object Storage repositories. Then, you can use the command from my initial blog article to move the repository to a Proxy Pool. See my first blog post here: https://just-virtualization.tech/2025/04/01/powershell-tips-for-veeam-vb365-v8-1/
The KB article contains a script that you can download that will do the required move for you: https://www.veeam.com/download_add_packs/backup-microsoft-office-365/kb3067
The script will disable all jobs for the Organization that you are moving data for until the move is completed. There is a migration utility coming in a future release of 8.x that will allow live migrations of data even while jobs are running. So please keep this in mind.
Below are some examples of the actual command Move-VBOEntityData that is being run in the scriptโthe first one moves organization user data, the second moves organization group data, and the third moves organization site data. These move commands go from a JetDB (local storage) to an S3 Object-based repository. As noted above, you can go from JetDB to JetDB or JetDB to Object.
Organization User Data move โ
$source = Get-VBORepository -Name "Repository 1" $target = Get-VBORepository -Name "Object Storage 1" $user = Get-VBOEntityData -Type User -Repository $source -Name "Chris Childerhose" Move-VBOEntityData -From $source -To $target -User $user -Mailbox -ArchiveMailbox -RunAsync
Organization Group Data move โ
$source = Get-VBORepository -Name "Repository 1" $target = Get-VBORepository -Name "Object Storage 1" $group = Get-VBOEntityData -Type Group -Repository $repository -Name "Architecture" Move-VBOEntityData -From $source -To $target -Group $group -Mailbox -ArchiveMailbox -OneDrive -Sites -GroupMailbox -GroupSite
Organization Site Data move โ
$source = Get-VBORepository -Name "Repository 1" $target = Get-VBORepository -Name "Object Storage 1" $site = Get-VBOEntityData -Type Site -Repository $repository -Name "Architecture" Move-VBOEntityData -From $source -To $target -Site $site
These moves can take time to complete depending on the amount of data you are moving between repositories, so plan accordingly, considering the jobs are also disabled. I hope you have found this second blog on PowerShell commands helpful. It is a great way to move data between repositories but with the caveat that jobs must be stopped.
Until the next PowerShell tip, happy blogging.