'
'  Copyright (c) 2022 Microsoft Corporation
'
'  This program and the accompanying materials are made available under the
'  terms of the Apache License, Version 2.0 which is available at
'  https://www.apache.org/licenses/LICENSE-2.0
'
'  SPDX-License-Identifier: Apache-2.0
'
'  Contributors:
'       Microsoft Corporation - Initial document
'
'

@startuml
autonumber "<b>(0)"
Client -> Consumer: Call DM API: POST /transferprocess \n - managedResources=true\n - Storage account name \n - AssetId and ContractId
deactivate Client
activate Consumer
Consumer -> "Consumer Vault": Get dest Storage Account key
Consumer -> "Consumer Storage Account": Create container
Consumer -> "Consumer Vault": Store SAS token
Consumer -> Provider: IDS message providing: \n - Account name \n - Container name \n - Write-only dest SAS token \n - AssetId
deactivate Consumer
activate Provider
Provider -> "Provider Vault": Store SAS token
Provider -> "Provider DPF": DPF call: \n - Account name \n - Container name
deactivate Provider
activate "Provider DPF"
"Provider DPF" -> "Provider Vault": Get source Storage Account Key
"Provider DPF" -> "Provider Vault": Get dest SAS token
"Provider DPF" -> "Provider Storage Account": Read
"Provider DPF" -> "Consumer Storage Account": Write
"Provider DPF" -> "Consumer Storage Account": Write .complete blob
deactivate "Provider DPF"
loop  Poll for completion
    Client -> Consumer: GET /transferprocess/<PROCESS_ID>/state
end
loop
    Consumer -> "Consumer Storage Account": Look for .complete blob
end
activate Client
Client -> "Consumer Storage Account": Read result
Client -> "Consumer": Call DM API: POST /transferprocess/<PROCESS_ID>/deprovision
deactivate Client
activate Consumer
Consumer -> "Consumer Storage Account": Delete container
Consumer -> "Consumer Vault": Delete SAS token
deactivate Client
@enduml