img-blur-shadow-blog-2
Microsoft Dynamics 365 Ad-on

Microsoft Azure Function: Erstellung von PDF/ Formularen im ZUGfeRD 2.3 Format

  • Nahtlose Integration in Dynamics 365 CRM
  • Erstellung von PDF-Dokumenten basierend auf Dynamics 365 CRM Word-Templates für referenzierte Entitäten
  • Für Rechnungsentitäten: Generierung eines XRechnung-Descriptors im ZUGFeRD 2.3 / Comfort / CII Format und Einbettung als PDF/A
  • Optionale Speicherung des erstellten PDF-Dokuments in SharePoint mit Verknüpfung zur relevanten Entität
  • Rückgabeparameter: Erstelltes PDF-Dokument

Lizenzbestimmungen zum Leistungspaket Azure Function - ZUGfeRD Rechnungen im Dynamics 365 CRM und Lösungspaket E-Mail Code Activity


Die Erzeugung des XRechnung-Descriptors sowie der ZUGfeRD PDF/A Dateien erfolgt auf Basis der Nuget Pakete von s2-industries.com.

  • ZUGFeRD-csharp
  • ZUGFeRD.PDF-csharp

Das Leistungspaket Azure Function - ZUGfeRD Rechnungen im Dynamics 365 CRM und Lösungspaket E-Mail Code Activity wird unter MIT Lizenz angeboten, jedoch mit der Einschränkung, dass nur eine ausführbare Version kostenfrei zur Verfügung steht. Der entsprechende Quellcode wird nicht veröffentlicht.

Im Rahmen des Dienstleistungsangebotes der froMOS GmbH kann die Lösung kundenspezifisch erweitert und angepasst werden. Gleichzeitig unterstützt die froMOS GmbH bei der Integration in die Microsoft Dynamics 365 CRM Umgebung und bei der Konfiguration der Azure Function und des Sharepoint.

Dienstleistungen der froMOS GmbH werden auf freiberuflicher Basis von Jens Froherz zum vereinbarten Stundensatz umgesetzt.

Ich freue mich über Ihre Kontaktaufnahme



Azure Function Beschreibung - ZUGfeRD Rechnungen im Dynamics 365 CRM



Je nach gesetzten Parametern kann man mit der Azure Function zu einer Microsoft Dynamics 365 CRM Entität und der vorgegebenen Word-Vorlage eine PDF Datei erzeugen. Handelt es sich bei der Entität umd eine Rechnung, wird automatisch eine XRechnung als ZUGfeRD 2.3 Comfort Format erzeugt und als PDF/A Datei zurückgegeben. Falls ein Sharepoint Scope und eine Seite angegeben sind, wird die PDF Datei im Sharepoint gespeichert und mit der Entität verknüpft. Sharepoint muss so konfiguriert sein im Dynamics CRM, dass die Entität direkt auf die Seite verweist.



Parameter-Liste der Azure Function

Parametername/Typ Beschreibung

entityId

Eingang

GUID String der einen Dynamics 365 CRM Datensatz in der jeweiligen Entität referenziert

eln

Eingang

Logischer Name der Dynamics 365 CRM Entität. Wird eine Entität vom Typ invoice übergeben, erfolgt automatisch eine Gernerierung der Rechnung im ZUGfeRD Format

keysafename

Eingang

Name des Azure Key Vaults, der zur Speicherung von Zugangsdaten und Verkäuferdaten verwendet wird.

keyset

Eingang

Präfix eines Schlüsselsets im Azure Key Vault, der zur Authentifizierung bei der Erstellung des PDF-Dokuments verwendet wird. Zum Beispiel würde keyset=01 ein geheimnis URL01 abrufen. Über den Keyset Parameter kann die Azure Function mit unterschiedlichen Dynamics 365 CRM Tenants verwendet werden.

templateId

Eingang

Name des zu verwendenden Word-Templates der Dynamics 365 CRM Entität.

FileDate

Ausgang

Rückgabe der erzeugten PDF Datei als application/pdf String im Base64 Format


Aufrufbeispiel

https://name-der-function-app.azurewebsites.net/api/GetZUGfeRDInvoice?entityId=520b2495-a2b9-ef11-b8e8-7c1e5260e04b&eln=invoice&keysafename=fromoskeysafe&keyset=01&templateId=Rechnung



Liste der in der Azure Function verwendeten Konfigurationsparameter in Azure Key Vault

Die Azure Function benötigt zur Anmeldung im Dynamics 365 CRM Authentifizierungsparameter, die von der Funktion aus dem Azure Key Vault gelesen werden, dessen name als Paramter der Funktion übergeben wurde.

Für die Erzeugung der XRechnung können Verkäuferdaten als Geheimnisse im Key Vault hinterlegt werden.

Die in der Tabelle beschriebenen Geheimnisnamen müssen jeweils im Key Vault mit einer Kombination aus Geheimnis und Keyset gespeichert werden. Für das Geheimnis URL und das Keyset 01 muss z.B. im Key Vault ein Geheimnis URL01 hinterlegt werden.

Die folgenden Geheimnisse-Namen können im Azure Key Vault hinterlegt werden:

Geheimnis Beschreibung

CLIENTID

Pflicht

Client-Id der Azure App Registrierung mit API Berechtigung Dynamics CRM user_impersonation und Microsoft.Graph User.Read

SECRETID

Pflicht

Secret-Id der Azure App Registrierung mit API Berechtigung Dynamics CRM user_impersonation und Microsoft.Graph User.Read

TENANTID

Pflicht

Tenant-Id der Azure App Registrierung mit API Berechtigung Dynamics CRM user_impersonation und Microsoft.Graph User.Read

URL

Pflicht

URL des relevanten Dynamics 365 CRM Tenants

SHAREPOINTSCOPE

Optional

Name des SharePoint Scopes: z.B. unternehmen.sharepoint.com

SHAREPOINTSITE

Optional

Name des SharePoint Seite, für den Dynamics 365 CRM Tenant mit direkter Entitätszuordnung (nicht auf Entitätsbasis Firma oder Kontakt) konfiguriert ist (z.B. CRMDokumente)

SELLERNAME

Optional

Name Verkäufers zur Verwendung in der XRechnung

SELLERTAXID

Optional

MehrwertsteuerID des Verkäufers zur Verwendung in der XRechnung

SELLERVATID

Optional

Steuer-ID des Verkäufers zur Verwendung in der XRechnung

SELLERCITY

Optional

Stadt des Verkäufers zur Verwendung in der XRechnung

SELLERZIP

Optional

PLZ des Verkäufers zur Verwendung in der XRechnung

SELLERSTREET

Optional

Straße des Verkäufers zur Verwendung in der XRechnung

SELLERGLOBALID

Optional

Global-Id Verkäufers zur Verwendung in der XRechnung

SELLERGLOBALIDSCHEME

Optional

Schema der Global-Id des Verkäufers zur Verwendung in der XRechnung




img-blur-shadow-blog-2
Microsoft Dynamics 365 Ad-on

Dynamics 365 Solution - E-Mail Code Activity und Mehrwertsteuer PlugIn

  • EmailAutomationAction Code Activity mit Aufrufoption der ZUGfeRD Azure Function
  • PlugIn zur automatischen Berechnung des Tax Feldes der Dynamics 365 CRM Entitäten QuoteDetail, SalesorderDetail, InvoiceDetail. Das ProductDetailTaxSumPlugin ergänzt die CRM Entität Product um ein Feld fromos_vatpercent1 und stellt dieses Eingabefeld im Hauptformular der Entität Product zur Eingabe zur Verfügung.
  • Die EmailAutomationAction Code Activity ist auch ohne Azure Function verwendbar und erzeugt dann PDF Dokumente, die als Anhang per E-Mail versendet werden
  • Die nachfolgende Tabelle beschreibt Parameter EmailAutomationAction Code Activity zur Verwendung in der Dynamics 365 CRM Autmatisierung.

Dynamics 365 CRM Solution mit EmailAutomationAction Code Activity



Die EmailAutomationAction Code Activity ist eine Dynamics 365 CRM Code Activity, die in einem Workflow oder einem Plugin aufgerufen werden kann. Sie erzeugt eine E-Mail auf Basis eines Dynamics 365 CRM E-Mail Templates und fügt einen PDF-Anhang hinzu, der auf einem Word-Template basiert. Die Code Activity kann auch ohne Azure Function verwendet werden, um E-Mails mit PDF-Anhang im Format ZUGfeRD XRechnung zu erzeugen und zu versenden. Wahlweise kann die Code Activities auch Anhänge im E-Mail verwenden, die bereits im E-Mail Template hinterlegt wurden sind.



Parameter-Liste der EmailAutomationAction Code Activity

Parametername/Typ Beschreibung

EmailTemplateName

Eingang

Name des Microsoft Dynamics 365 E-Mail Templates auf dessen Grundlage ein E-Mail erzeugt und gesendet werden soll.

EmailFromSenderUrlString

Eingang

Dynamische Url der Absender Entität (User / Team)

EmailFromSenderQueueName

Eingang

Name der Dynamics 365 Warteschlange, die als Absender der E-Mail verwendet wird. Wenn dieser Wert gesetzt ist, wird der EmailFromSenderUrlString Parameter ignoriert.

WordTemplateName

Eingang

Name des Microsoft Dynamics 365 CRM Word Template auf dessen Grundlage der E-Mail PDF Dateianhang erzeugt wird.

EmailToDestinationReferenceUrlString

Eingang

Dynamische Url der Dynamics 365 CRM Entität, aus der die E-Mail Adresse des Empfängers der E-Mail gelesen wird. (Kunde, Kontakte, Angebot, Auftrag, Rechnung)

EmailCCDestinationAddressString

Eingang

E-Mail Adress-String für CC Empfängeradresse

RegardingEntityReferenceUrlString

Eingang

Dynamics 365 CRM Bezugs-Entität, die mit dem Typ der Vorlagen für E-Mail und Anhangerstellung übereinstimmen muss.

WithEmailTracingId

Eingang

Erzeugt eine Tracing Id für das E-Mail

DirectEmailFromTemplate

Eingang

Wenn dieser Wert True ist, werden die Attachments verwendet, die bereits im E-Mail Template definiert sind. Bei False wird das Word Template verwendet, um ein PDF zu erzeugen und als Anhang hinzuzufügen.

AzureKeyVaultName

Eingang

Bei Aufruf der Azure Function zur Erzeugung von ZUGfeRD XRechnungen sowie Speicherung im Sharepoint, werden Konfigurationsdaten aus dem Azure Key Vault gelesen. Der Name des Azure Key Vault wird hier übergeben.

AzureKeyVaultSetId

Eingang

Gibt ein Präfix an, mit dem im Azure Key Vault unterschiedliche Parametersets für zur Verwendung von mehreren Dynamics 365 CRM Tenants definiert werden können.

AzureFunctionKey

Eingang

Gibt den x-functions-key an, der zur authentifizierten Aufruf der Azure ZUGfeRD Function notwendig ist.

PDFFunctionUrl

Eingang

Definiert die Url der ZUGfeRD XRechnung Azure Function (https://name-der-funktion.azurewebsites.net)

EmailTracingId

Ausgang

Gibt den String Wert der Tracing-Id an.

CreatedEmailId

Ausgang

Gibt die Dynamics 365 CRM Id der erzeugten E-Mails an.

CreatedEmailError

Ausgang

Enthält eine Fehlermeldung, falls bei der Ausführung ein Problem auftritt.