Files
zeekayandHanzo Dev 446e343a3d cd: annotations are cd.hanzo.ai, API group is apps.hanzo.ai
Two corrections on top of the naming pass, both found by checking the live
cluster rather than the source.

The rename had silently changed the user-facing annotation key from
argocd.argoproj.io/sync-wave to cd.argoproj.io/sync-wave — 63 live
Applications carry the old key, so deploying that would have ignored every
sync-wave and broken fleet deploy ordering. The key is now cd.hanzo.ai/*,
and universe 575650286 moves the ApplicationSet template that stamps it, so
the controller regenerates all 63 consistently.

The API group in code said argoproj.io/v1alpha1 in 157 places while the
cluster has served apps.hanzo.ai/v1alpha1 since 2026-07-23 (the CRDs are
applications.apps.hanzo.ai). Code now matches what is actually served.

The legacy applications.argoproj.io/app-name label had ZERO live users, so it
went with the rest. foo.argoproj.io test fixtures became foo.example.com —
arbitrary test domains should not carry a vendor name.

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:32:14 -07:00

6.1 KiB
Executable File

Teams (Office 365 Connectors)

⚠️ Deprecation Notice

Office 365 Connectors are being retired by Microsoft.

Microsoft is retiring the Office 365 Connectors service in Teams. The service will be fully retired by March 31, 2026 (extended from the original timeline of December 2025).

What this means:

  • Old Office 365 Connectors (webhook URLs from webhook.office.com) will stop working after the retirement date
  • New Power Automate Workflows (webhook URLs from api.powerautomate.com, api.powerplatform.com, or flow.microsoft.com) are the recommended replacement

Migration Required:

If you are currently using Office 365 Connectors (Incoming Webhook), you should migrate to Power Automate Workflows before the retirement date. The notifications-engine automatically detects the webhook type and handles both formats, but you should plan your migration.

Migration Resources:


Parameters

The Teams notification service sends message notifications using Office 365 Connectors and requires specifying the following settings:

  • recipientUrls - the webhook url map, e.g. channelName: https://outlook.office.com/webhook/...

⚠️ Deprecation Notice: Office 365 Connectors will be retired by Microsoft on March 31, 2026. We recommend migrating to the Teams Workflows service for continued support and enhanced features.

Configuration

💡 For Power Automate Workflows (Recommended): See the Teams Workflows documentation for detailed configuration instructions.

Office 365 Connectors (Deprecated - Retiring March 31, 2026)

⚠️ Warning: This method is deprecated and will stop working after March 31, 2026. Please migrate to Power Automate Workflows.

  1. Open Teams and goto Apps
  2. Find Incoming Webhook microsoft app and click on it
  3. Press Add to a team -> select team and channel -> press Set up a connector
  4. Enter webhook name and upload image (optional)
  5. Press Create then copy webhook url (it will be from webhook.office.com)
  6. Store it in cd-notifications-secret and define it in cd-notifications-cm
apiVersion: v1
kind: ConfigMap
metadata:
  name: cd-notifications-cm
data:
  service.teams: |
    recipientUrls:
      channelName: $channel-teams-url
apiVersion: v1
kind: Secret
metadata:
  name: <secret-name>
stringData:
  channel-teams-url: https://webhook.office.com/webhook/your-webhook-id  # Office 365 Connector (deprecated)

Note: For Power Automate Workflows webhooks, use the Teams Workflows service instead.

Webhook Type Detection

The teams service supports Office 365 Connectors (deprecated):

  • Office 365 Connectors: URLs from webhook.office.com (deprecated)
    • Requires response body to be exactly "1" for success
    • Will stop working after March 31, 2026
  1. Create subscription for your Teams integration:
apiVersion: apps.hanzo.ai/v1alpha1
kind: Application
metadata:
  annotations:
    notifications.apps.hanzo.ai/subscribe.on-sync-succeeded.teams: channelName

Channel Support

  • ✅ Standard Teams channels only

Note: Office 365 Connectors only support standard Teams channels. For shared channels or private channels, use the Teams Workflows service.

Templates

Notification templates can be customized to leverage teams message sections, facts, themeColor, summary and potentialAction feature.

The Teams service uses the messageCard format (MessageCard schema) which is compatible with Office 365 Connectors.

template.app-sync-succeeded: |
  teams:
    themeColor: "#000080"
    sections: |
      [{
        "facts": [
          {
            "name": "Sync Status",
            "value": "{{.app.status.sync.status}}"
          },
          {
            "name": "Repository",
            "value": "{{.app.spec.source.repoURL}}"
          }
        ]
      }]
    potentialAction: |-
      [{
        "@type":"OpenUri",
        "name":"Operation Details",
        "targets":[{
          "os":"default",
          "uri":"{{.context.cdUrl}}/applications/{{.app.metadata.name}}?operation=true"
        }]
      }]
    title: Application {{.app.metadata.name}} has been successfully synced
    text: Application {{.app.metadata.name}} has been successfully synced at {{.app.status.operationState.finishedAt}}.
    summary: "{{.app.metadata.name}} sync succeeded"

facts field

You can use facts field instead of sections field.

template.app-sync-succeeded: |
  teams:
    facts: |
      [{
        "name": "Sync Status",
        "value": "{{.app.status.sync.status}}"
      },
      {
        "name": "Repository",
        "value": "{{.app.spec.source.repoURL}}"
      }]

theme color field

You can set theme color as hex string for the message.

template.app-sync-succeeded: |
  teams:
    themeColor: "#000080"

summary field

You can set a summary of the message that will be shown on Notification & Activity Feed

template.app-sync-succeeded: |
  teams:
    summary: "Sync Succeeded"

Migration to Teams Workflows

If you're currently using Office 365 Connectors, see the Teams Workflows documentation for migration instructions and enhanced features.