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.