← Files CrowdStrike Falcon FusionARCHIVED FILE
use-cases/custom-soar-actions.md
3.24 KB · Oct 5, 2026 · 18:32 UTC
---
name: custom-soar-actions
description: Use a custom or shared Falcon Foundry action inside a Falcon Fusion workflow to call a third-party API (e.g. list and deactivate Okta users), loop over the results, and write output to a log repository
source: https://www.crowdstrike.com/tech-hub/ng-siem/create-custom-actions-for-soar-with-falcon-foundry/
skills: [authoring, deployment, execution]
capabilities: [workflow, custom-action, api-integration]
---
## When to Use
User wants a Fusion workflow that drives a custom action exposed from a Falcon Foundry API
integration — for example, an Okta integration whose operations (list users, deactivate a user)
have been shared with SOAR. Use this for scheduled data ingestion into a log repository or an
on-demand response action that calls the external API.
## Pattern
The API integration and its shared operations are built in Foundry (create app, import the
OpenAPI spec or add operations manually, configure auth, mark each operation workflow-shareable,
then deploy, release, and install with credentials). That is Foundry work — route to
foundry-skills for the app side. Once an operation is shared and installed, build the workflow:
1. **Choose a trigger.** Scheduled (e.g. hourly) for periodic ingestion, or On demand for a
manual response action.
2. **Add the shared action.** Search the workflow builder for the operation by name (e.g.
`listUsers`) and select the credential profile (the installed API key config).
3. **Loop over the response.** Add a "For each" loop over the response body; set processing to
sequential.
4. **Act per item.** Inside the loop, call the next operation (e.g. `deactivateUser`) —
autocomplete resolves display fields like email to the API's user ID — or add a "Write to log
repo" action with a custom JSON payload:
```json
{
"event": { "kind": "UserState", "provider": "Okta" },
"user": { "email": "${Email instance}", "first_name": "${FirstName instance}" }
}
```
5. **Validate, then deploy.** Run `validate.py`, then import and release to the CID. Verify
ingestion in Next-Gen SIEM: `#repo = fusion | event.provider = Okta`.
## Key Actions
| Action | Type | Purpose |
|--------|------|---------|
| Custom API operation | Shared Foundry action | The integration operation (`listUsers`, `deactivateUser`); referenced by `id` with a `config_id` |
| For each | Iterator | Iterates the response body; sequential processing |
| Write to log repo | Built-in action | Persists a custom JSON event to a LogScale repository |
A custom action references a `config_id` (the installed credential profile) created in the
console and specific to the CID. Discover it or ask the user; never invent one.
## Common Pitfalls
- **Action not visible in the workflow builder:** the app must be released AND installed. Use
Preview mode (the `</>` icon) during development to see pre-release actions.
- **Scheduled runs hit rate limits:** turn off or delete a scheduled workflow when done testing —
hourly schedules trigger provider rate-limit warnings within days.
## When to Route Elsewhere
Building the API integration, sharing operations, and deploying the app is Foundry work — route
to foundry-skills. Stay here for the Fusion workflow that consumes an already-shared action.
SHA-256: 1100e2212ada64616d0934b0252d14350499e570b84748f543cc3b5dd203ec3d