Belege nach Azure Blob Storage kopieren(BC14)

5. Dezember 2022 08:39

Hallo,

ich müsste die Belege (Angebot, Auftrag, Lieferschein, Rechnung und Gutschrift) für bestimmte Kunden nach Azure Blog Storage kopieren.
Aktuell schreibe ich diese Daten in eine Tabelle, wenn ein neuer Beleg gebucht bzw. freigegeben wird.

Ein Job (ist eine Codeunit und läuft alle x-Minuten) checkt dann diese Tabelle auf neue Einträge und generiert ein PDF für den Beleg und speichert dies auf ein Laufwerk vom Server.
Und in dieser Codeunit wird dann mit folgenden Code eine Batch-Datei ausgeführt.
Code:
Command := 'C:\Navision\BelegeNachAzureKopieren.bat';

ExecuteBat := ExecuteBat.ProcessStartInfo('cmd', '/c "' + Command + '"');
ExecuteBat.RedirectStandardError := TRUE;
ExecuteBat.RedirectStandardOutput := TRUE;
ExecuteBat.UseShellExecute := FALSE;
ExecuteBat.CreateNoWindow := TRUE;

Process := Process.Process;
Process.StartInfo(ExecuteBat);
Process.Start;

MessageJobAzureCopy := Process.StandardError.ReadToEnd();


Diese Batchdatei synchronisiert dann die PDF´s mit den Befehl
c:\navision\azcopy sync \\zsens01\edv\kundenportal\echt\belege\ "https://stscheudatastorageprod.blob.corxxx"
nach Azure.

Nun möchte ich mir diese Batchdatei ersparen und diese Übertragung direkt mit BC14 machen.
Wie könnte ich das lösen bzw. wie habt ihr so ein Anforderung umgesetzt.

Dank und lg stony

Re: Belege nach Azure Blob Storage kopieren(BC14)

11. Juli 2024 12:38

Hi Stony,

ich grabe den Thread mal aus, um Personen, die per Google auf den Thread stoßen mit Informationen zu versorgen.
Ich habe die Anbindung von Azure Blob Storages (ABS) an Dynamics NAV über die REST-API von ABS gelöst.

Dazu habe ich eine .net-Library aus diesem Code-Block erstellt, die Fehler darin beseitigt und im Addins-Ordner des ServiceTiers installiert:
https://github.com/Azure-Samples/storag ... nHelper.cs

Fehler 1: https://github.com/Azure-Samples/storag ... /issues/16
Fehler 2: https://github.com/Azure-Samples/storag ... /issues/21

Die restliche Anbindung habe ich dann über dotnet httpClient und httpRequestMessage gelöst.

Code:
Name   DataType   Subtype   Length
ABSAuthHelper   DotNet   AzureBlobStorageAuthenticationHelper.AzureStorageAuthenticationHelper.'AzureBlobStorageAuthenticationHelper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'   
httpRequestMessage   DotNet   System.Net.Http.HttpRequestMessage.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
httpMethod   DotNet   System.Net.Http.HttpMethod.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
httpClient   DotNet   System.Net.Http.HttpClient.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
httpResponseMessage   DotNet   System.Net.Http.HttpResponseMessage.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'   
httpStatusCode   DotNet   System.Net.HttpStatusCode.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
httpContent   DotNet   System.Net.Http.HttpContent.'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'


Ich bin gerade noch in Klärung, ob ich den Code hierfür veröffentlichen darf. Damit wären dann folgende Funktionen möglich:
1. Container abrufen
2. Container erstellen
3. Container löschen
4. Dateien/Blobs innerhalb eines Containers als Liste abrufen (Metadaten)
5. Datei/Blob herunterladen
6. Datei/Blob löschen
7. Datei/Blob hochladen

Gruß
Daniel

Re: Belege nach Azure Blob Storage kopieren(BC14)

16. Juli 2024 16:39

Hier findet ihr den Code, um Azure Blob Storages per API anzubinden: https://github.com/danielabouchleih/Azu ... ge-Dyn-NAV

Weitere Doku folgt, wenn ich Zeit habe. Aber grundsätzlich werden sämtliche Funktionalitäten über die Codeunit 50000 Azure Blob Storage Mgmt und temporäre Tabellen als Call-by-Ref-Parameter abgebildet.