Home / Nieuws / Geautomatiseerde back-ups van D365FO-databases
25 juni 2020
Door: Dick Wenning

Geautomatiseerde back-ups van D365FO-databases

Uitgelichte afbeelding voor een blog over Automated backups in D365 F&O

DEVOPS-release pipelines

Wanneer je met LCS werkt, komt de onderstaande lijst met database movement operations je bekend voor. Tegenwoordig kan exporteren en vernieuwen ook worden geactiveerd met de Database Movement API. Dit kan erg handig worden voor dagelijkse geautomatiseerde back-ups van D365FO-databases. Hoe we het doen? Met DEVOPS-release pipelines. De pipeline ziet er zo uit. De BACKUP TST is uitgeschakeld omdat de API ‘nog’ geen Tier 1 Databases ondersteunt.

Versnellen

Omdat we bij meerdere klanten geautomatiseerde back-ups van D365FO-databases moesten toepassen, werd het tijdrovend, dus hebben we het geoptimaliseerd. Alle klantspecifieke instellingen werden Variabelen van de pipeline. Omdat klantspecifieke klant-ID, klantgeheim en wachtwoord gevoelige informatie zijn, hebben we deze verborgen. Houd er rekening mee dat als je het zichtbaar maakt, de waarden worden gewist.

PowerShell

Onderstaand PowerShell-script is een voorbeeld van hoe we het token genereren. Dit token wordt later gebruikt op de backup commands PowerShell.

$tokenUrl = “https://login.microsoftonline.com/common/oauth2/token”
$tokenBody = @{
grant_type = “password”
client_id = “$(CLIENTID)”
client_secret = “$(CLIENTSECRET)”
resource = “https://lcsapi.lcs.dynamics.com”
username = “$(USERNAME)”
password = “$(PASSWORD)”
}
$tokenResponse = Invoke-RestMethod -Method ‘POST’ -Uri $tokenUrl -Body $tokenBody
$token = $tokenResponse.access_token
Write-Host “##vso[task.setvariable variable=TOKEN] $token”

In het volgende voorbeeld maken we de back-up

$cstzone = [System.TimeZoneInfo]:ConvertTimeBySystemTimeZoneId( (Get-Date), ‘W. Europe Standard Time’)
$filedate = Get-Date $cstzone -f “yyy-MM-dd”
$BackupName = “ACC-$filedate”
Write-Output $BackupName
$refreshUrl = “https://lcsapi.lcs.dynamics.com/databasemovement/v1/export/project/$(LCSPRPOJID)/environment/$(ACC)/backupName/$BackupName”
$refreshHeader = @{
Authorization = “Bearer $(TOKEN)”
“x-ms-version” = ‘2017-09-15’
“Content-Type” = “application/json”
}
$refreshResponse = Invoke-RestMethod $refreshUrl -Method ‘POST’ -Headers $refreshHeader
Write-Output $refreshResponse

En de insider van DEVOPS zal zeggen, yeah dream on, no build, is ook geen release. Toegegeven, je moet gewoon een build-pool in jouw omgeving hergebruiken.

Houd er rekening mee dat MS deze verzoeken beperkt, er zijn slechts 3 back-ups per dag mogelijk. En aan het einde genereren we een e-mailmelding voor de mensen die het echt nodig hebben.

LCS

We gebruiken de alerts van LCS niet, het veroorzaakt simpelweg te veel e-mails. Dus schakelen we de volgende melding uit voor alle LCS-gebruikers