Top 5 self-service actions every engineering team needs

Learn from our customers about the most popular, commonly requested self-service actions they’ve built in their portals to improve developer experience.

September 4, 2025

Ready to start?

Top 5 self-service actions every engineering team needs
Listen to article
00:00 00:00

The biggest bottleneck for developers isn’t writing code, it’s waiting. Waiting for infrastructure. Waiting for approvals. Waiting for environments.

When developers wait, work slows down. Features take longer to reach customers. Stress rises and momentum fades, and Platform teams feel this, too. They spend hours answering the same requests. That work is necessary, but it is also repetitive and costly.

Self-service actions remove the wait. Platform teams build safe, repeatable automations once, and developers run them whenever needed. Tickets drop, and work moves faster. Teams spend less time on manual steps and more time building real value.

This post examines the five self-service actions Port customers used most in April 2025. These actions cut common blockers, speed delivery, and create a foundation for safe automation, whether triggered by people or tools.

The importance of self-service actions

A self-service action is a button that runs a repeatable task. It might create a database user, spin up a dev environment, scale an app, or lock a setup. Platform engineers build the action once. They connect tools, add policy, and set permissions. After that, developers press the button to get the result.

This pattern matters because small, repeated waits add up. Two or three short delays each day become hours each week. Those hours cost projects momentum and make teams feel slow. Self-service actions remove those small waits and recover time for real engineering.

Think of SSAs like a vending machine. Platform engineers stock the machine. They decide what goes in, where it lives (the Port catalog), and who can use it. Developers walk up and press a button. They get what they need right away. The machine works the same way every time. The result is safe, consistent, and logged.

A short scene shows the payoff. Imagine a new service needs a database and a test environment. Instead of two tickets and follow-ups, the developer opens the catalog, presses two buttons, and starts work. Platform teams kept the guardrails and policies, but the handoffs and delays disappeared. That single scene is what self-service actions deliver over and over.

There is a second, growing benefit. Once actions are codified, tools and agents can use them too. That allows teams to automate common paths safely. Humans and automation then follow the same trusted route. This alignment reduces errors and scales team velocity.

(See our article on the operational efficiency maturity model for how self-service fits into platform maturity.)

{{cta_1}}

The top five self-service actions

These five actions were the most popular with Port users in April 2025. That month is only a snapshot, but it matches trends we see across customers. These actions solve common bottlenecks and form the base for safe automation, no matter whether a person or an agent triggers them.

Infrastructure requests

  • Example: A self-service action that creates database credentials for a service or a developer.
  • The problem: Developers often wait for DB access. Tickets pile up. Tests and work stop.
  • The fix: One click creates credentials with the right scope of access and an expiration time.
  • Why it helps developers: New team members start work sooner. Tests run faster with no more delays.
  • Why it helps platform teams: The process is secure and auditable. Policies like least privilege and auto-expiry are enforced. Platform teams get fewer manual requests and fewer errors.
  • How automation helps: Tools and agents can request credentials safely because this action is codified. That lets teams automate onboarding and testing while keeping the same guardrails.

Environment provisioning

  • Example: A single action that spins up a ready-to-use development environment with services and config.
  • The problem: Environment setup is slow and often breaks. Developers waste hours fixing configs.
  • The fix: One click provides a consistent environment matching the team’s standards.
  • Why it helps developers: They can start coding right away and experience fewer “works on my machine” bugs.
  • Why it helps platform teams: Environments are standard and repeatable. Support requests drop, and observability drift is reduced.
  • How automation helps: Agents or scripts can create ephemeral environments as part of repeatable workflows. That lets teams run more reliable tests and automate end-to-end checks.

Deployment & CI/CD management

  • Example: Actions that trigger a build or a deployment, including deploying a specific tagged version.
  • The problem: Deploys get stuck in queues or require manual intervention. Releases slow down.
  • The fix: Developers trigger pipelines themselves, using approved flows and checks. For example, after a green build, a developer deploys the exact tagged release to staging, validates it, and then promotes the same tag to production.
  • Why it helps developers: Your deployment frequency increases. Teams move at their own pace.
  • Why it helps platform teams: Pipeline rules and gates still run. Every deployment is logged and can serve as a repeatable baseline for future deployments.
  • How automation helps: Monitoring, tests, or CI signals can trigger a deploy automatically. Agents can act on those signals while using the same safe pipelines engineers trust.

Runtime management

  • Example: An action to increase or decrease app instances or resources on demand.
  • The problem: Traffic spikes or tests sometimes need immediate scaling. Waiting costs uptime and user experience.
  • The fix: Developers scale up or down within limits set by the platform team. For example, during a marketing push, teams can scale the service for peak traffic and then scale down afterward. That can reduce the cost of higher environment loads while protecting user experience.
  • Why it helps developers: They can run realistic load tests and keep services healthy during spikes.
  • Why it helps platform teams: Policies like usage caps protect cost and capacity. Logs capture every change for review.
  • How automation helps: Agents can monitor metrics and call the same scaling action automatically when thresholds are hit. That enables fast, safe response to changing conditions.

Access & security controls

  • Example: An action to freeze or unfreeze systems and environments instantly.
  • The problem: During incidents or audits, locking an environment can take too long.
  • The fix: A one-click lock or unlock stops changes immediately. For example, if an unexpected security alert appears, the team can lock the affected environment instantly, preventing more changes while investigating.
  • Why it helps developers: Teams can stabilize an environment fast. That reduces stress during incidents.
  • Why it helps platform teams: Every lock/unlock is recorded with logs stating who did it and why. That helps with audits and post-mortems.
  • How automation helps: Agents detecting anomalies can trigger locks automatically. This reduces the mean time to containment and keeps human oversight where needed.

Together, these five actions solve the biggest problems teams face: access, environments, deployments, scaling, and security. Developers stop wasting time on manual work, platform engineers stop performing repetitive tasks, and the whole team moves faster and more reliably.

Building a self-service catalog with Port

These top five actions are powerful, but their real impact comes when they live inside a self-service catalog. A catalog is like a menu: developers can see what’s available, understand what each action does, and safely run it when needed.

For platform teams, a catalog makes these actions centralized, governed, and integrated:

  • Permissions, guardrails, and audit logs are built in
  • Actions connect to the tools you already use (CI/CD pipelines, cloud providers, secrets managers, etc.)
  • Policies like least privilege or cost limits apply automatically

In other words, Port doesn’t replace automation. It makes automation usable, safe, and discoverable, whether the trigger is a developer, a script, or an AI agent.

{{cta-demo-baner}}

Create resource self-service actions today

If you want to start today with a single action, try scaffolding a new service. Scaffolding a service captures many common setup steps — repos, configs, templates, environments — and turns them into one safe path. It’s a high-leverage action that speeds new work and reduces manual setup. 

When teams don’t have to wait, they ship faster and build better products. That matters for engineers and for your business.

Want to see it in action? Try Port’s live demo.

{{survey-buttons}}

Get your survey template today

By clicking this button, you agree to our Terms of Use and Privacy Policy
{{survey}}

Download your survey template today

By clicking this button, you agree to our Terms of Use and Privacy Policy
{{roadmap}}

Free Roadmap planner for Platform Engineering teams

  • Set Clear Goals for Your Portal

  • Define Features and Milestones

  • Stay Aligned and Keep Moving Forward

{{rfp}}

Free RFP template for Internal Developer Portal

Creating an RFP for an internal developer portal doesn’t have to be complex. Our template gives you a streamlined path to start strong and ensure you’re covering all the key details.

{{ai_jq}}

Leverage AI to generate optimized JQ commands

test them in real-time, and refine your approach instantly. This powerful tool lets you experiment, troubleshoot, and fine-tune your queries—taking your development workflow to the next level.

{{cta_1}}

Check out Port's pre-populated demo and see what it's all about.

Check live demo

No email required

{{cta_survey}}

Check out the 2025 State of Internal Developer Portals report

See the full report

No email required

{{cta_2}}

Contact sales for a technical product walkthrough

Let’s start
{{cta_3}}

Open a free Port account. No credit card required

Let’s start
{{cta_4}}

Watch Port live coding videos - setting up an internal developer portal & platform

{{cta_5}}

Check out Port's pre-populated demo and see what it's all about.

(no email required)

Let’s start
{{cta_6}}

Contact sales for a technical walkthrough of Port

Let’s start
{{cta_7}}

Open a free Port account. No credit card required

Let’s start
{{cta_8}}

Watch Port live coding videos - setting up an internal developer portal & platform

{{cta-demo}}
{{reading-box-backstage-vs-port}}
{{cta-backstage-docs-button}}

Example JSON block

{
  "foo": "bar"
}

Order Domain

{
  "properties": {},
  "relations": {},
  "title": "Orders",
  "identifier": "Orders"
}

Cart System

{
  "properties": {},
  "relations": {
    "domain": "Orders"
  },
  "identifier": "Cart",
  "title": "Cart"
}

Products System

{
  "properties": {},
  "relations": {
    "domain": "Orders"
  },
  "identifier": "Products",
  "title": "Products"
}

Cart Resource

{
  "properties": {
    "type": "postgress"
  },
  "relations": {},
  "icon": "GPU",
  "title": "Cart SQL database",
  "identifier": "cart-sql-sb"
}

Cart API

{
 "identifier": "CartAPI",
 "title": "Cart API",
 "blueprint": "API",
 "properties": {
   "type": "Open API"
 },
 "relations": {
   "provider": "CartService"
 },
 "icon": "Link"
}

Core Kafka Library

{
  "properties": {
    "type": "library"
  },
  "relations": {
    "system": "Cart"
  },
  "title": "Core Kafka Library",
  "identifier": "CoreKafkaLibrary"
}

Core Payment Library

{
  "properties": {
    "type": "library"
  },
  "relations": {
    "system": "Cart"
  },
  "title": "Core Payment Library",
  "identifier": "CorePaymentLibrary"
}

Cart Service JSON

{
 "identifier": "CartService",
 "title": "Cart Service",
 "blueprint": "Component",
 "properties": {
   "type": "service"
 },
 "relations": {
   "system": "Cart",
   "resources": [
     "cart-sql-sb"
   ],
   "consumesApi": [],
   "components": [
     "CorePaymentLibrary",
     "CoreKafkaLibrary"
   ]
 },
 "icon": "Cloud"
}

Products Service JSON

{
  "identifier": "ProductsService",
  "title": "Products Service",
  "blueprint": "Component",
  "properties": {
    "type": "service"
  },
  "relations": {
    "system": "Products",
    "consumesApi": [
      "CartAPI"
    ],
    "components": []
  }
}

Component Blueprint

{
 "identifier": "Component",
 "title": "Component",
 "icon": "Cloud",
 "schema": {
   "properties": {
     "type": {
       "enum": [
         "service",
         "library"
       ],
       "icon": "Docs",
       "type": "string",
       "enumColors": {
         "service": "blue",
         "library": "green"
       }
     }
   },
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "system": {
     "target": "System",
     "required": false,
     "many": false
   },
   "resources": {
     "target": "Resource",
     "required": false,
     "many": true
   },
   "consumesApi": {
     "target": "API",
     "required": false,
     "many": true
   },
   "components": {
     "target": "Component",
     "required": false,
     "many": true
   },
   "providesApi": {
     "target": "API",
     "required": false,
     "many": false
   }
 }
}

Resource Blueprint

{
 “identifier”: “Resource”,
 “title”: “Resource”,
 “icon”: “DevopsTool”,
 “schema”: {
   “properties”: {
     “type”: {
       “enum”: [
         “postgress”,
         “kafka-topic”,
         “rabbit-queue”,
         “s3-bucket”
       ],
       “icon”: “Docs”,
       “type”: “string”
     }
   },
   “required”: []
 },
 “mirrorProperties”: {},
 “formulaProperties”: {},
 “calculationProperties”: {},
 “relations”: {}
}

API Blueprint

{
 "identifier": "API",
 "title": "API",
 "icon": "Link",
 "schema": {
   "properties": {
     "type": {
       "type": "string",
       "enum": [
         "Open API",
         "grpc"
       ]
     }
   },
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "provider": {
     "target": "Component",
     "required": true,
     "many": false
   }
 }
}

Domain Blueprint

{
 "identifier": "Domain",
 "title": "Domain",
 "icon": "Server",
 "schema": {
   "properties": {},
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {}
}

System Blueprint

{
 "identifier": "System",
 "title": "System",
 "icon": "DevopsTool",
 "schema": {
   "properties": {},
   "required": []
 },
 "mirrorProperties": {},
 "formulaProperties": {},
 "calculationProperties": {},
 "relations": {
   "domain": {
     "target": "Domain",
     "required": true,
     "many": false
   }
 }
}
{{tabel-1}}

Microservices SDLC

  • Scaffold a new microservice

  • Deploy (canary or blue-green)

  • Feature flagging

  • Revert

  • Lock deployments

  • Add Secret

  • Force merge pull request (skip tests on crises)

  • Add environment variable to service

  • Add IaC to the service

  • Upgrade package version

Development environments

  • Spin up a developer environment for 5 days

  • ETL mock data to environment

  • Invite developer to the environment

  • Extend TTL by 3 days

Cloud resources

  • Provision a cloud resource

  • Modify a cloud resource

  • Get permissions to access cloud resource

SRE actions

  • Update pod count

  • Update auto-scaling group

  • Execute incident response runbook automation

Data Engineering

  • Add / Remove / Update Column to table

  • Run Airflow DAG

  • Duplicate table

Backoffice

  • Change customer configuration

  • Update customer software version

  • Upgrade - Downgrade plan tier

  • Create - Delete customer

Machine learning actions

  • Train model

  • Pre-process dataset

  • Deploy

  • A/B testing traffic route

  • Revert

  • Spin up remote Jupyter notebook

{{tabel-2}}

Engineering tools

  • Observability

  • Tasks management

  • CI/CD

  • On-Call management

  • Troubleshooting tools

  • DevSecOps

  • Runbooks

Infrastructure

  • Cloud Resources

  • K8S

  • Containers & Serverless

  • IaC

  • Databases

  • Environments

  • Regions

Software and more

  • Microservices

  • Docker Images

  • Docs

  • APIs

  • 3rd parties

  • Runbooks

  • Cron jobs

Starting with Port is simple, fast and free.

Let’s start