Skip to main contentCertyo Developer Portal

Microsoft Power Automate Integration

Erstellen Sie Low-Code-Flows mit einem benutzerdefinierten Certyo-Connector, der bei Dynamics-365-Aenderungen, SharePoint-Uploads und SQL-Ereignissen ausgeloest wird, um Datensaetze auf der Blockchain zu verankern.


Ueberblick

Microsoft Power Automate ermoeglicht Citizen Developers und Integrationsteams, Certyo mit ueber 1.000 Microsoft- und Drittanbieterdiensten ueber einen visuellen Flow-Builder zu verbinden. Dieser Leitfaden behandelt die Erstellung eines benutzerdefinierten Certyo-Connectors aus einer OpenAPI-Definition und den Aufbau von drei produktionsreifen Flow-Vorlagen.

Der benutzerdefinierte Connector kapselt die Certyo REST API als erstklassige Power-Platform-Ressource und gibt Flow-Autoren Zugriff auf Datensatz-Ingestion, Massenoperationen und Verifikation ohne Code zu schreiben.

Voraussetzungen

  • Power Automate Premium (15 $/Benutzer/Monat) — erforderlich fuer benutzerdefinierte Connectors und Premium-Trigger
  • Certyo API-Schluessel (erhalten Sie im Schnellstart-Leitfaden)
  • Zugriff auf das Power Platform Admin Center fuer die Connector-Registrierung
  • Azure Active Directory-Tenant (fuer die Einrichtung der Connector-Authentifizierung)
  • Zugriff auf das Quellsystem: Dynamics 365, SharePoint oder Azure SQL je nach Flow

Architektur

Power Automate Integration Architecturebash
┌──────────────────────────────────────────────────────────────────┐
│                     TRIGGER SOURCES                              │
│  ┌──────────────┐  ┌──────────────┐  ┌────────────────────────┐ │
│  │ Dynamics 365 │  │  SharePoint  │  │    Azure SQL / SQL     │ │
│  │ Dataverse    │  │  Document    │  │    Server Change       │ │
│  │ Row Changed  │  │  Uploaded    │  │    Tracking            │ │
│  └──────┬───────┘  └──────┬───────┘  └────────────┬───────────┘ │
│         └─────────────────┼───────────────────────┘             │
├───────────────────────────┼──────────────────────────────────────┤
│                   POWER AUTOMATE FLOW                            │
│  ┌────────────────────────┴────────────────────────────────┐    │
│  │  1. Trigger fires on source system event                │    │
│  │  2. Compose: build Certyo record JSON                   │    │
│  │  3. Custom Connector: POST /api/v1/records              │    │
│  │  4. Condition: check 202 Accepted                       │    │
│  │  5. Update source record with recordHash                │    │
│  └────────────────────────┬────────────────────────────────┘    │
├───────────────────────────┼──────────────────────────────────────┤
│                   CERTYO PIPELINE                                │
│  ┌────────────────────────┴────────────────────────────────┐    │
│  │  POST /api/v1/records  ──►  202 Accepted + recordHash   │    │
│  │         │                                                │    │
│  │    Kafka topic  ──►  Accumulate  ──►  Merkle tree       │    │
│  │         ──►  IPFS pin  ──►  Polygon anchor              │    │
│  │                                                          │    │
│  │  ~60-90 seconds to on-chain confirmation                 │    │
│  └──────────────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────────────┘

Einrichtung des benutzerdefinierten Connectors

Benutzerdefinierte Power-Automate-Connectors werden aus einer OpenAPI-(Swagger-)Spezifikation definiert. Befolgen Sie diese Schritte, um den Certyo-Connector in Ihrer Power-Platform-Umgebung zu registrieren.

Schritt 1: Connector erstellen

  1. Gehen Sie zu Power Automate > Daten > Benutzerdefinierte Connectors > Neuer benutzerdefinierter Connector > OpenAPI von URL importieren
  2. Geben Sie einen Namen ein: Certyo Records API
  3. Fuegen Sie die URL Ihrer gehosteten OpenAPI-Spezifikation ein oder laden Sie die JSON-Definition unten hoch

Schritt 2: Authentifizierung konfigurieren

  1. Auf der Registerkarte Sicherheit waehlen Sie API Key
  2. Parameterbeschriftung: API Key
  3. Parametername: X-API-Key
  4. Parameterstandort: Header

Schritt 3: Connector testen

  1. Erstellen Sie eine neue Verbindung mit Ihrem Certyo API-Schluessel
  2. Waehlen Sie die Operation IngestRecord aus
  3. Geben Sie Testwerte ein und ueberpruefen Sie, ob Sie eine 202 Accepted -Antwort erhalten

Codebeispiele

certyo-connector-openapi.json — Custom Connector Definitionjson
{
  "openapi": "3.0.1",
  "info": {
    "title": "Certyo Records API",
    "description": "Blockchain-backed record ingestion, verification, and query for the Certyo durable records platform.",
    "version": "1.0.0",
    "contact": {
      "name": "Certyo Developer Support",
      "url": "https://www.certyos.com/developers"
    }
  },
  "servers": [
    {
      "url": "https://www.certyos.com"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/api/v1/records": {
      "post": {
        "operationId": "IngestRecord",
        "summary": "Ingest a single record for blockchain anchoring",
        "description": "Accepts a record and returns 202 with a record hash. The record flows through the accumulation pipeline and is anchored on Polygon within ~60-90 seconds.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IngestRecordRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Record accepted for processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestRecordResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "QueryRecords",
        "summary": "Query records by tenant and record ID",
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "recordId",
            "in": "query",
            "required": false,
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching records"
          }
        }
      }
    },
    "/api/v1/records/bulk": {
      "post": {
        "operationId": "BulkIngestRecords",
        "summary": "Ingest up to 1000 records in a single request",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIngestRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Bulk records accepted"
          }
        }
      }
    },
    "/api/v1/verify/record": {
      "post": {
        "operationId": "VerifyRecord",
        "summary": "Verify a record against its on-chain Merkle proof",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyRecordRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification result"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "name": "X-API-Key",
        "in": "header"
      }
    },
    "schemas": {
      "IngestRecordRequest": {
        "type": "object",
        "required": ["tenantId", "database", "collection", "recordId", "recordPayload"],
        "properties": {
          "tenantId": { "type": "string", "description": "Your tenant identifier" },
          "database": { "type": "string", "description": "Logical source database or system" },
          "collection": { "type": "string", "description": "Logical table or collection" },
          "recordId": { "type": "string", "description": "Unique record identifier" },
          "recordVersion": { "type": "string", "default": "1" },
          "operationType": { "type": "string", "enum": ["insert", "update", "delete", "upsert"], "default": "upsert" },
          "recordPayload": { "type": "object", "description": "The record data as arbitrary JSON" },
          "sourceTimestamp": { "type": "string", "format": "date-time" },
          "idempotencyKey": { "type": "string", "description": "Deduplication key (24h window)" }
        }
      },
      "IngestRecordResponse": {
        "type": "object",
        "properties": {
          "recordId": { "type": "string" },
          "recordHash": { "type": "string" },
          "tenantId": { "type": "string" },
          "acceptedAt": { "type": "string", "format": "date-time" },
          "idempotencyReplayed": { "type": "boolean" }
        }
      },
      "BulkIngestRequest": {
        "type": "object",
        "required": ["tenantId", "records"],
        "properties": {
          "tenantId": { "type": "string" },
          "records": {
            "type": "array",
            "maxItems": 1000,
            "items": { "$ref": "#/components/schemas/IngestRecordRequest" }
          }
        }
      },
      "VerifyRecordRequest": {
        "type": "object",
        "required": ["tenantId", "database", "collection", "recordId", "payload"],
        "properties": {
          "tenantId": { "type": "string" },
          "database": { "type": "string" },
          "collection": { "type": "string" },
          "recordId": { "type": "string" },
          "payload": { "type": "object" }
        }
      }
    }
  }
}

Flow-Vorlagen

Nachfolgend finden Sie drei produktionsreife Flow-Muster. Jedes kann im visuellen Power-Automate-Designer erstellt oder als JSON-Definition importiert werden.

Flow 1: Dynamics 365 Datensatzaenderung

Wird ausgeloest, wenn eine Verkaufsauftragszeile in Dataverse geaendert wird. Der Flow erstellt einen Certyo-Datensatz, nimmt ihn auf und schreibt den recordHash in eine benutzerdefinierte Spalte der D365-Entitaet fuer Nachverfolgbarkeit zurueck.

  • Trigger: Wenn eine Zeile hinzugefuegt oder geaendert wird (Dataverse-Connector)
  • Filter: statecode eq 1 (nur bestaetigte Auftraege)
  • Aktion 1: Compose — Certyo-Datensatz-JSON aus Trigger-Outputs erstellen
  • Aktion 2: Certyo Custom Connector — IngestRecord
  • Aktion 3: Zeile aktualisieren — recordHash und acceptedAt in D365 zurueckschreiben
  • Fehlerpfad: Bei Fehler Fehlerdetails fuer die Ueberwachung zusammenstellen

Flow 2: SharePoint Dokument-Upload

Wird ausgeloest, wenn ein Dokument in eine SharePoint-Bibliothek hochgeladen wird. Der Flow extrahiert Dokumentmetadaten und Content-Hash und nimmt sie in Certyo zur Dokumentauthentizitaetsverfolgung auf.

  • Trigger: Wenn eine Datei erstellt wird (SharePoint-Connector)
  • Aktion 1: Dateieigenschaften abrufen — Dokumentmetadaten lesen
  • Aktion 2: Dateiinhalt abrufen — SHA-256 Hash der Datei berechnen
  • Aktion 3: Benutzerdefinierter Certyo-Connector — IngestRecord mit Dokumentmetadaten und Content-Hash in recordPayload
  • Aktion 4: Dateieigenschaften aktualisieren — Certyo recordHash in einer benutzerdefinierten SharePoint-Spalte speichern

Flow 3: Geplante Verifikation

Laeuft nach Zeitplan (z.B. taeglich), um zu ueberpruefen, ob kuerzlich aufgenommene Datensaetze erfolgreich auf der Blockchain verankert wurden.

  • Trigger: Wiederholung — alle 24 Stunden
  • Aktion 1: Benutzerdefinierter Certyo-Connector — QueryRecords mit tenantId -Filter
  • Aktion 2: Auf jedes anwenden — ueber Datensaetze mit Status iterieren Batched
  • Aktion 3: Benutzerdefinierter Certyo-Connector — VerifyRecord fuer jeden
  • Aktion 4: Bedingung — wenn die Verifikation fehlschlaegt, eine Alarm-E-Mail ueber den Outlook 365 Connector senden

Authentifizierung

Der benutzerdefinierte Connector verwendet API Key-Authentifizierung. Wenn ein Benutzer eine Verbindung zum Certyo-Connector in Power Automate erstellt, gibt er seinen Certyo API-Schluessel einmalig ein. Die Plattform speichert ihn sicher und fuegt ihn als X-API-Key -Header an jede Anfrage an.

  • Verbindungen pro Benutzer: Jeder Flow-Autor erstellt seine eigene Verbindung mit seinem API-Schluessel. Dies ermoeglicht benutzerspezifische Audit-Trails in Certyo.
  • Dienstkonto-Verbindung: Fuer automatisierte Flows (geplant, ereignisgesteuert) verwenden Sie einen dedizierten Certyo-Dienstkonto-API-Schluessel. Teilen Sie die Verbindung mit den Flow-Eigentuemern.
  • Schluesselrotation: Aktualisieren Sie bei der Schluesselrotation die Verbindung unter Power Automate > Daten > Verbindungen. Aktive Flows uebernehmen den neuen Schluessel automatisch.

Connector-Zertifizierung

Um den Certyo-Connector im oeffentlichen Power Platform Connector-Katalog verfuegbar zu machen (sichtbar fuer alle Power Automate-Benutzer weltweit), folgen Sie dem Microsoft-Zertifizierungsprozess:

  1. Zur Pruefung einreichen: Verwenden Sie den paconn submit -CLI-Befehl des Microsoft Power Platform Connectors SDK
  2. Dokumentation: Stellen Sie eine Connector-README, ein Icon (160x160 PNG) und Beschreibungen der Verbindungsparameter bereit
  3. Testen: Microsoft erfordert funktionierende Testanmeldeinformationen und einen Demo-Flow zur Validierung
  4. SLA: Der Connector muss die API-Zuverlaessigkeitsanforderungen von Microsoft erfuellen (99,9% Verfuegbarkeit, Antwortzeiten unter 3 Sekunden)
  5. Zeitrahmen: Die Zertifizierung dauert typischerweise 2-4 Wochen nach der Einreichung

Drosselung und Limits

Power Automate setzt Ausfuehrungslimits durch, die das Design Ihrer Certyo-Integrationsflows beeinflussen:

  • 600 Aktionen pro Flow-AusfuehrungEine Flow-Ausfuehrung, die 500 Datensaetze in einer "Auf jedes anwenden"-Schleife verarbeitet, verwendet mindestens 500 Aktionen (eine pro Iteration) plus Setup-Aktionen. Bleiben Sie unter dem Limit oder teilen Sie in Teil-Flows auf.
  • 100.000 Aktionen pro 24 StundenTaegliches Limit pro Benutzer ueber alle Flows. Aufnahme mit hohem Volumen sollte die BulkIngestRecords -Operation verwenden, um bis zu 1.000 Datensaetze pro Aktion zu stapeln.
  • Connector-Parallelitaet: Benutzerdefinierte Connectors haben standardmaessig 1 gleichzeitige Anfrage. Erhoehen Sie dies ueber die Registerkarte "Allgemein" im Connector-Editor auf maximal 50 gleichzeitige Verbindungen.
  • Retry-Richtlinie: Power Automate wiederholt fehlgeschlagene HTTP-Aktionen bis zu 4 Mal mit exponentiellem Backoff. Certyos idempotencyKey gewaehrleistet sichere Wiederholungen.
Power Automate Premium
Power Automate Premium (15 $/Benutzer/Monat) umfasst alle Premium-Connectors, Desktop-RPA (Power Automate Desktop), AI Builder-Credits und Unterstuetzung benutzerdefinierter Connectors. Der benutzerdefinierte Certyo-Connector erfordert die Premium-Stufe — er funktioniert nicht mit den kostenlosen oder Pro-Flow-Plaenen.

AI Integration · v1.0.0

AI Integration Skill

Download a skill file that enables AI agents to generate working Power Automate + Certyo integration code for any language or framework.

v1.0.0
What is this?
A markdown file containing Power Automate-specific field mappings, authentication setup, code examples, and integration patterns for Certyo. Drop it into your AI agent's context and ask it to generate integration code.

What's inside

  • AuthentifizierungBenutzerdefinierter Connector mit API Key-Authentifizierung und Premium-Stufen-Setup
  • ArchitekturD365/SharePoint/SQL-Trigger → Benutzerdefinierter Certyo-Connector → Records API
  • Connector-SpezifikationOpenAPI 3.0 Definition zum Import in Power Platform
  • Flow-VorlagenD365 Datensatzaenderung, SharePoint Dokument-Upload, geplante Verifikation
  • ZertifizierungWeg zum Microsoft-zertifizierten Connector fuer den oeffentlichen Katalog
  • Drosselung600 Aktionen/Flow/Ausfuehrung-Limits und effiziente Flow-Designmuster

How to use

Claude Code

Place the file in your project's .claude/commands/ directory, then use it as a slash command:

# Download the skill file
mkdir -p .claude/commands
curl -o .claude/commands/certyo-powerautomate.md \
  https://www.certyos.com/developers/skills/certyo-powerautomate-skill.md

# Use it in Claude Code
/certyo-powerautomate "Generieren Sie einen Power-Automate-Flow, der D365-Datensatzaenderungen an Certyo sendet"

Cursor / Copilot / Any AI Agent

Add the file to your project root or attach it to a conversation. The AI agent will use the Power Automate-specific patterns, field mappings, and code examples to generate correct integration code.

# Add to your project
curl -o CERTYO_POWERAUTOMATE.md \
  https://www.certyos.com/developers/skills/certyo-powerautomate-skill.md

# Then in your AI agent:
"Using the Certyo Power Automate spec in CERTYO_POWERAUTOMATE.md,
 generieren sie einen power-automate-flow, der d365-datensatzaenderungen an certyo sendet"

CLAUDE.md Context File

Append the skill file to your project's CLAUDE.md so every Claude conversation has Power Automate + Certyo context automatically.

# Append to your project's CLAUDE.md
echo "" >> CLAUDE.md
echo "## Certyo Power Automate Integration" >> CLAUDE.md
cat CERTYO_POWERAUTOMATE.md >> CLAUDE.md