Remind service owners to update their catalog data
This guide helps you set up a verification workflow that notifies service owners to update and verify their service details every three months, ensuring that data stays reliable and current.
Common use cases
- Remind service owners to confirm or update ownership and metadata every quarter.
- Ensure service records remain accurate for audits, incident response, and reporting.
Prerequisites
This guide assumes the following:
- You have a Port account and have completed the onboarding process.
- You have access to Slack developers page and have created a Slack webhook URL. Follow the steps in the Slack Incoming Webhooks Guide to create a webhook URL.
Set up data model
Follow the steps below to update the Service blueprint:
-
Navigate to the
Serviceblueprint in your Port Builder. -
Hover over it, click on the
...button on the right, and selectEdit JSON. -
Add the verification status property:
Is Verified property (Click to expand)
"is_verified": {"type": "boolean","title": "Is Verified","description": "Whether the service data has been verified by the owner team"}, -
Add the verification TTL to leave properties:
Verification TTL property (Click to expand)
"verification_ttl": {"type": "string","title": "Verification TTL","format": "timer"} -
Click
Saveto update the blueprint.
Set up self-service action
Follow these steps to create the self-service action that verifies the service and sets the verification timer to expire in 3 months:
-
Head to the self-service page.
-
Click on the
+ New Actionbutton. -
Click on the
{...} Edit JSONbutton. -
Copy and paste the following JSON configuration into the editor.
Verify Service (Click to expand)
{"identifier": "verify_service","title": "Verify Service","description": "A self service action to verify a service entity","trigger": {"type": "self-service","operation": "DAY-2","userInputs": {"properties": {},"required": [],"order": []},"blueprintIdentifier": "service"},"invocationMethod": {"type": "UPSERT_ENTITY","blueprintIdentifier": "service","mapping": {"identifier": "{{ .entity.identifier }}","title": "{{ .entity.title }}","properties": {"is_verified": true,"verification_ttl": "{{ (90 * 86400 + now | strftime(\"%Y-%m-%dT%H:%M:%S\") + \".000Z\") }}"}}},"requiredApproval": false} -
Click
Save.
Now you should see the Verify Service action in the self-service page. 🎉
Create an automation to update your catalog
We’ll now set up two automations:
- One to clear and set the verification status when the timer expires.
- One to notify the service owner to re-verify the service.
Automation to update service verification status
When the verification timer property expires, this automation sets is_verified property as false. Follow the steps below to create this automation:
-
Head to the automation page.
-
Click on the
+ Automationbutton. -
Copy and paste the following JSON configuration into the editor.
Update service verification status in Port automation (Click to expand)
{"identifier": "clear_service_verification","title": "Clear Service Verification Status","description": "When the verification timer property on the service blueprint expires, run this automation to update the verification status of the service to false","trigger": {"type": "automation","event": {"type": "TIMER_PROPERTY_EXPIRED","blueprintIdentifier": "service","propertyIdentifier": "verification_ttl"}},"invocationMethod": {"type": "UPSERT_ENTITY","blueprintIdentifier": "service","mapping": {"identifier": "{{ .event.context.entityIdentifier }}","properties": {"is_verified": false}}},"publish": true} -
Click
Save.
Now when the verification timer (Verification TTL) of a service entity expires, the entity's Verification Status property in Port will be automatically updated.
Automation to notify service owners
When is_verified changes from true to false, this automation sends a Slack message to the service owners. Follow the steps below to create this automation:
-
Head to the automation page.
-
Click on the
+ Automationbutton. -
Copy and paste the following JSON configuration into the editor.
Notify service owners automation (Click to expand)
:::tip[Slack Webhook Url]Replace the `<SLACK_WEBHOOK_URL>` placeholder with your actual incoming webhook URL from Slack.:::{"identifier": "notify_on_expired_verification","title": "Notify On Expired Verification","description": "When the verification timer property on the service blueprint expires, run this automation to send a slack message to the service owners","trigger": {"type": "automation","event": {"type": "ENTITY_UPDATED","blueprintIdentifier": "service"},"condition": {"type": "JQ","expressions": [".diff.before.properties.is_verified == true",".diff.after.properties.is_verified == false"],"combinator": "and"}},"invocationMethod": {"type": "WEBHOOK","url": "<SLACK_WEBHOOK_URL>","agent": false,"synchronized": true,"method": "POST","headers": {},"body": {"text": "\n :warning: *Attention - Verification Required* :warning: \n\nThe verification for the service `{{ .event.context.entityIdentifier }}` has expired.\n\nPlease <https://app.getport.io/{{ .event.context.blueprintIdentifier }}Entity?identifier={{ .event.context.entityIdentifier }}|click here> to verify it."}},"publish": true} -
Click
Save.
Let's test it!
-
Observe a service entity whose verification timer has expired. The Slack message may look like this:
-
Follow the link in the Slack message to access the entity page.
-
Click the
Actionsbutton on the page. -
Choose the
Verify Serviceaction. -
Click on
Execute. -
Done! Wait for the service entity to be verified again.