apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/bifrost.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: 5ecc04c1121c1677c0e798d8f3fb59ef creationTimestamp: "2026-05-31T10:35:29Z" generation: 7 labels: branch: main build: "112" context: release created-by-lighthouse: "true" event-GUID: 6b026e48-5cdc-11f1-8706-e0c36713a9f1 lighthouse.jenkins-x.io/baseSHA: 69fc3c813de32b00a2ec2e7675c09723c72dceeb lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1780223728718" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-bifrost-main-release-crs2p lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 69fc3c813de32b00a2ec2e7675c09723c72dceeb lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: bifrost lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: apitaltrade-bifrost-main-release-f8lxc-from-build-pack-pod provider: github repository: bifrost tekton.dev/pipeline: apitaltrade-bifrost-main-release-f8lxc managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.18 operation: Update time: "2026-05-31T10:39:00Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:completedTimestamp: {} f:status: {} manager: jx-promote-0.6.31 operation: Update time: "2026-05-31T10:39:49Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:buildLogsUrl: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-05-31T10:40:01Z" name: greencapitaltrade-bifrost-main-112 namespace: jx resourceVersion: "65480067" uid: 958496d7-5e8d-4a56-8c72-b0b279307f17 spec: baseSHA: 69fc3c813de32b00a2ec2e7675c09723c72dceeb batchPipelineActivity: {} build: "112" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/bifrost/main/112.log completedTimestamp: "2026-05-31T10:39:31Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: bifrost gitUrl: https://github.com/greencapitaltrade/bifrost.git lastCommitMessage: | feat(sim-tracking): digest mail template + recipient resolution Follow-up to #177. The daily digest cron now sends a real HTML email instead of just logging. Recipient resolution uses the existing group_asset_subscription_manager group rather than inventing a new group_iot_admin — same humans manage subscription lifecycle and SIM-related action on subscription change, so route the digest to them. If the group has no users with email, we log and skip the send (silent delivery to nobody is worse than a noisy log). Mail template targets res.company with the digest payload in context (suspend_assets / reactivate_assets / counts / digest_to). The template renders two tables — suspend candidates in red (subscription lapsed, device still active, carrier still billing) and reactivate candidates in green (subscription renewed, device still inactive). Each row shows asset, IMEI, ICCID, carrier name, and subscription end date so ops can act without clicking through. Tests: - The seed XML loads and the mail.template exists with the right model_id (res.company). - _resolve_digest_recipients walks the subscription manager group correctly and returns the email of a freshly-added user. - cron_send_digest runs cleanly with no candidates under a fresh empty company (no exception, no false-positive mail). Version bump 18.0.2.4.0 -> 18.0.2.4.1 so the new XML data file gets loaded on installs already past .4.0. lastCommitSHA: 37dfa889d3314d0b23fb48f96220c83d03f65430 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/bifrost/main releaseNotesURL: https://github.com/greencapitaltrade/bifrost/releases/tag/v6.74.1 startedTimestamp: "2026-05-31T10:35:28Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-05-31T10:39:31Z" name: Release startedTimestamp: "2026-05-31T10:38:31Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4045 startedTimestamp: "2026-05-31T10:39:31Z" status: Succeeded startedTimestamp: "2026-05-31T10:39:31Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-05-31T10:39:52Z" name: from build pack startedTimestamp: "2026-05-31T10:35:41Z" status: Succeeded steps: - completedTimestamp: "2026-05-31T10:35:56Z" name: Git Clone startedTimestamp: "2026-05-31T10:35:41Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:00Z" name: Next Version startedTimestamp: "2026-05-31T10:35:57Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:03Z" name: Jx Variables startedTimestamp: "2026-05-31T10:36:00Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:03Z" name: Setup Npm Nexus startedTimestamp: "2026-05-31T10:36:03Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:05Z" name: Setup Pip Cache startedTimestamp: "2026-05-31T10:36:03Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:06Z" name: Process Config Templates startedTimestamp: "2026-05-31T10:36:05Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:06Z" name: Update Fleet Management Version startedTimestamp: "2026-05-31T10:36:06Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:08Z" name: Check Registry startedTimestamp: "2026-05-31T10:36:06Z" status: Succeeded - completedTimestamp: "2026-05-31T10:38:42Z" name: Build Container Build startedTimestamp: "2026-05-31T10:36:09Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:00Z" name: Promote Changelog startedTimestamp: "2026-05-31T10:38:43Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:04Z" name: Promote Helm Release startedTimestamp: "2026-05-31T10:39:01Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:52Z" name: Promote Jx Promote startedTimestamp: "2026-05-31T10:39:04Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-05-31T10:39:52Z" name: from build pack startedTimestamp: "2026-05-31T10:35:41Z" status: Succeeded steps: - completedTimestamp: "2026-05-31T10:35:56Z" name: Git Clone startedTimestamp: "2026-05-31T10:35:41Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:00Z" name: Next Version startedTimestamp: "2026-05-31T10:35:57Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:03Z" name: Jx Variables startedTimestamp: "2026-05-31T10:36:00Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:03Z" name: Setup Npm Nexus startedTimestamp: "2026-05-31T10:36:03Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:05Z" name: Setup Pip Cache startedTimestamp: "2026-05-31T10:36:03Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:06Z" name: Process Config Templates startedTimestamp: "2026-05-31T10:36:05Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:06Z" name: Update Fleet Management Version startedTimestamp: "2026-05-31T10:36:06Z" status: Succeeded - completedTimestamp: "2026-05-31T10:36:08Z" name: Check Registry startedTimestamp: "2026-05-31T10:36:06Z" status: Succeeded - completedTimestamp: "2026-05-31T10:38:42Z" name: Build Container Build startedTimestamp: "2026-05-31T10:36:09Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:00Z" name: Promote Changelog startedTimestamp: "2026-05-31T10:38:43Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:04Z" name: Promote Helm Release startedTimestamp: "2026-05-31T10:39:01Z" status: Succeeded - completedTimestamp: "2026-05-31T10:39:52Z" name: Promote Jx Promote startedTimestamp: "2026-05-31T10:39:04Z" status: Succeeded version: 6.74.1 status: {}