npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@simplysf/simply

v6.5.1

Published

Salesforce CLI Plugins created by @SimplySF

Readme

simply

NPM Downloads/week License: Apache-2.0

Install1

sf plugins install @simplysf/simply

Issues

Please report any issues at https://github.com/SimplySF/simply-node/issues

Contributing

This package is part of the @simplysf/simply monorepo. See CONTRIBUTING.md for what's specific to this package, and the repo's root CONTRIBUTING.md for repo structure, setup, commit conventions, and how to submit a pull request. Please also read our Code of Conduct.

Commands

sf simply aep at4dx binding create

Create a new AT4DX Application Factory binding (Service, Selector, Domain, or UnitOfWork) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx binding create -t service|selector|domain|unit-of-work -n <value> [--json] [--flags-dir <value>] [-d <value>]
    [-o <value>] [--api-version <value>] [--wait <value>] [--label <value>] [-c <value>] [--binding-interface <value>]
    [-s <value>] [--sobject-alternate] [--priority <value>] [--sequence <value>] [--force]

FLAGS
  -c, --to=<value>                 The interface/SObject's implementing Apex class (To__c). Required, and only allowed,
                                   when --type is service, selector, or domain — UnitOfWork has no To__c field.
  -d, --source-dir=<value>         The package directory to create the binding's .md-meta.xml under. Created if the
                                   customMetadata folder doesn't exist yet.
  -n, --developer-name=<value>     (required) The binding's DeveloperName. Must start with a letter, contain only
                                   letters, numbers, and single underscores, not end with an underscore, and be 40
                                   characters or fewer.
  -o, --target-org=<value>         Deploy the generated binding to this org after writing it.
  -s, --sobject=<value>            The SObject API name to bind against (BindingSObject__c, or
                                   BindingSObjectAlternate__c with --sobject-alternate). Required, and only allowed,
                                   when --type is selector, domain, or unit-of-work.
  -t, --type=<option>              (required) Which Application Factory binding type to create: service, selector,
                                   domain, or unit-of-work.
                                   <options: service|selector|domain|unit-of-work>
      --api-version=<value>        Override the api version used for api requests made by this command
      --binding-interface=<value>  BindingInterface__c — the Apex interface this binding maps to. Required, and only
                                   allowed, when --type is service.
      --force                      Write (and deploy) even if validation finds an error-severity issue. Validation still
                                   runs and its issues are still printed and returned.
      --label=<value>              The binding's label. Defaults to --developer-name. Must be 40 characters or fewer.
      --priority=<value>           Priority__c. Higher numbers are higher priority; omit for least priority. Only
                                   allowed when --type is service or selector — Domain and UnitOfWork have no
                                   Priority__c field.
      --sequence=<value>           BindingSequence__c — where this SObject falls in the Unit of Work's commit order
                                   (lower runs first). Only allowed when --type is unit-of-work.
      --[no-]sobject-alternate     Write --sobject to BindingSObjectAlternate__c instead of BindingSObject__c. Use this
                                   for a SObject that can't be referenced through an EntityDefinition field at all (for
                                   example ServiceResource and other Setup objects). Only allowed when --type is
                                   selector, domain, or unit-of-work.
      --wait=<value>               [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a new AT4DX Application Factory binding (Service, Selector, Domain, or UnitOfWork) in local source and/or a
  connected org.

  Generates a `<LocalObjectName>.<DeveloperName>.md-meta.xml` file from the given flags and writes it under
  --source-dir, deploys it to --target-org, or both. Validates the resulting binding — alongside everything else of the
  same --type already in scope — with the same rules `simply aep at4dx binding validate` uses, and refuses to write if
  that introduces an error-severity issue unless --force is passed. At least one of --source-dir/--target-org is
  required; both may be given at once (write to source and deploy it live in the same run). Given --target-org alone,
  the file is written to a temporary directory, deployed, and discarded — no working-tree footprint.

  `--type service` uses --binding-interface (BindingInterface__c) and rejects --sobject/--sobject-alternate; `--type
  selector`/`domain`/`unit-of-work` use --sobject and write it to BindingSObject__c by default (pass --sobject-alternate
  to write BindingSObjectAlternate__c instead, for a SObject — such as ServiceResource and other Setup objects — that
  can't be referenced through an EntityDefinition field at all). `--to` is required for `--type
  service`/`selector`/`domain` and rejected for `--type unit-of-work`, which has no To__c field at all. `--priority` is
  accepted for `--type service`/`selector` only; Domain and UnitOfWork have no such field. `--sequence`
  (BindingSequence__c) is accepted for `--type unit-of-work` only.

EXAMPLES
  $ sf simply aep at4dx binding create --source-dir sfdx-source/core --type service --developer-name My_Service_Binding --binding-interface IMyService --to MyServiceImpl

  $ sf simply aep at4dx binding create --target-org myOrg --type selector --developer-name Account_Selector --sobject Account --to AccountsSelector --priority 1

  $ sf simply aep at4dx binding create --source-dir sfdx-source/core --type domain --developer-name Account_Domain --sobject Account --to AccountDomain

  $ sf simply aep at4dx binding create --source-dir sfdx-source/core --type selector --developer-name ServiceResource_Selector --sobject ServiceResource --sobject-alternate --to ServiceResourceSelector

  $ sf simply aep at4dx binding create --source-dir sfdx-source/core --type unit-of-work --developer-name Account_UOW --sobject Account --sequence 10

See code: @simplysf/simply-aep

sf simply aep at4dx binding list

List the AT4DX Application Factory bindings configured in an org or local source, resolved to show which record wins for each binding key.

USAGE
  $ sf simply aep at4dx binding list [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d <value>...] [-t
    service|selector|domain|unit-of-work...] [--effective-only]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read bindings from. Use this for live-org discovery.
  -t, --type=<option>...       Binding type(s) to include: service, selector, domain, unit-of-work.
                               <options: service|selector|domain|unit-of-work>
      --api-version=<value>    Override the api version used for api requests made by this command
      --effective-only         Only show the bindings that actually win for their key; hide shadowed/non-winning
                               records.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  List the AT4DX Application Factory bindings configured in an org or local source, resolved to show which record wins
  for each binding key.

  Reads the four AT4DX Application Factory Custom Metadata Types — `ApplicationFactory_ServiceBinding__mdt`,
  `ApplicationFactory_SelectorBinding__mdt`, `ApplicationFactory_DomainBinding__mdt`, and
  `ApplicationFactory_UnitOfWorkBinding__mdt` — either from a live org or from local Salesforce DX source, and
  reproduces the resolution rules AT4DX applies at runtime so you can see which record actually wins for a given
  interface or SObject, and which ones are shadowed. Exactly one of `--target-org` or `--source-dir` must be specified.

  Service and Selector bindings resolve deterministically on `Priority__c` (highest wins). Domain bindings have no
  priority field, so a duplicated key is flagged `ambiguous` rather than reporting a guessed winner. UnitOfWork bindings
  have no winner concept at all — every record contributes to one ordered registration list.

EXAMPLES
  $ sf simply aep at4dx binding list --target-org myOrg

  $ sf simply aep at4dx binding list --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx binding list --target-org myOrg --type service,selector

  $ sf simply aep at4dx binding list --target-org myOrg --effective-only --json

FLAG DESCRIPTIONS
  -t, --type=service|selector|domain|unit-of-work...

    Binding type(s) to include: service, selector, domain, unit-of-work.

    Comma-separated list of binding types to include. If not specified, all four are included.

See code: @simplysf/simply-aep

sf simply aep at4dx binding update

Update an existing AT4DX Application Factory binding (Service, Selector, Domain, or UnitOfWork) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx binding update -t service|selector|domain|unit-of-work -n <value> [--json] [--flags-dir <value>] [-d
    <value>...] [-o <value>] [--api-version <value>] [--wait <value>] [--label <value>] [-c <value>]
    [--binding-interface <value>] [-s <value>] [--sobject-alternate] [--priority <value>] [--sequence <value>] [--force]

FLAGS
  -c, --to=<value>                 The interface/SObject's implementing Apex class (To__c). Only allowed when --type is
                                   service, selector, or domain — UnitOfWork has no To__c field. If not given, the
                                   existing value is kept.
  -d, --source-dir=<value>...      One or more paths to directories containing Salesforce DX source, searched for the
                                   binding to update.
  -n, --developer-name=<value>     (required) The DeveloperName of the binding to update.
  -o, --target-org=<value>         Locate (when --source-dir isn't given) and/or deploy the binding to this org.
  -s, --sobject=<value>            The SObject API name to bind against. Only allowed when --type is selector, domain,
                                   or unit-of-work. If not given, the existing value is kept.
  -t, --type=<option>              (required) Which Application Factory binding type to look in: service, selector,
                                   domain, or unit-of-work.
                                   <options: service|selector|domain|unit-of-work>
      --api-version=<value>        Override the api version used for api requests made by this command
      --binding-interface=<value>  BindingInterface__c — the Apex interface this binding maps to. Only allowed when
                                   --type is service. If not given, the existing value is kept.
      --force                      Write (and deploy) even if validation finds an error-severity issue. Validation still
                                   runs and its issues are still printed and returned.
      --label=<value>              The binding's label. If not given, the existing label is kept.
      --priority=<value>           Priority__c. Only allowed when --type is service or selector — Domain and UnitOfWork
                                   have no Priority__c field. If not given, the existing value is kept.
      --sequence=<value>           BindingSequence__c — where this SObject falls in the Unit of Work's commit order
                                   (lower runs first). Only allowed when --type is unit-of-work. If not given, the
                                   existing value is kept.
      --[no-]sobject-alternate     Write --sobject to BindingSObjectAlternate__c instead of BindingSObject__c, for a
                                   SObject that can't be referenced through an EntityDefinition field at all (for
                                   example ServiceResource and other Setup objects). Only allowed when --type is
                                   selector, domain, or unit-of-work. If not given, the binding keeps whichever field it
                                   already uses — this flag only needs to be passed to change it.
      --wait=<value>               [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Update an existing AT4DX Application Factory binding (Service, Selector, Domain, or UnitOfWork) in local source and/or
  a connected org.

  Finds the binding named --developer-name (of the given --type) in local source and/or a connected org, applies only
  the fields given as flags — everything else, including which SObject reference field a Selector/Domain binding uses,
  is preserved from the found record — and rewrites its `.md-meta.xml` file. Validates the resulting binding — alongside
  everything else of the same --type already in scope — with the same rules `simply aep at4dx binding validate` uses,
  and refuses to write if that introduces an error-severity issue unless --force is passed.

  When --source-dir is given, the binding is located there (searched across every directory given, same as
  `list`/`validate`) and that exact file is rewritten; the found file is also deployed if --target-org is given. When
  only --target-org is given, the binding is located and updated directly in the org via a temporary file, deployed,
  then discarded — no working-tree footprint.

  --developer-name identifies the binding to update and can't itself be changed by this command. --type identifies which
  Application Factory Custom Metadata Type to look in and can't be changed either — bindings don't move between types.

EXAMPLES
  $ sf simply aep at4dx binding update --source-dir sfdx-source/core --source-dir sfdx-source/app --type selector --developer-name Account_Selector --priority 5

  $ sf simply aep at4dx binding update --target-org myOrg --type domain --developer-name Account_Domain --to AccountDomainV2

  $ sf simply aep at4dx binding update --target-org myOrg --type unit-of-work --developer-name Account_UOW --sequence 20

See code: @simplysf/simply-aep

sf simply aep at4dx binding validate

Validate the AT4DX Application Factory bindings configured in an org or local source, failing when a wiring problem is found.

USAGE
  $ sf simply aep at4dx binding validate [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d <value>...] [-t
    service|selector|domain|unit-of-work...]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read bindings from. Use this for live-org discovery.
  -t, --type=<option>...       Binding type(s) to include: service, selector, domain, unit-of-work.
                               <options: service|selector|domain|unit-of-work>
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Validate the AT4DX Application Factory bindings configured in an org or local source, failing when a wiring problem is
  found.

  Reads `ApplicationFactory_ServiceBinding__mdt`, `ApplicationFactory_SelectorBinding__mdt`,
  `ApplicationFactory_DomainBinding__mdt`, and `ApplicationFactory_UnitOfWorkBinding__mdt` — either from a live org or
  from local Salesforce DX source — and checks them for problems `simply aep at4dx binding list` doesn't fail on: a
  binding with no resolvable key, a Selector/Domain/UnitOfWork binding whose SObject reference is ambiguous or names a
  standard object that can't actually go through an EntityDefinition metadata relationship, two Service/Selector/Domain
  records sharing a platform-unique `To__c`, two Domain (or two UnitOfWork) records resolving to the same SObject, two
  UnitOfWork records sharing a `BindingSequence__c`, and the same DeveloperName defined more than once within one
  binding type. Exactly one of `--target-org` or `--source-dir` must be specified.

  Prints a table of every issue found. Exits non-zero when any issue is an error (a warning alone doesn't fail the
  command) — use this in CI to gate on AT4DX Application Factory wiring problems before they reach an org.

EXAMPLES
  $ sf simply aep at4dx binding validate --target-org myOrg

  $ sf simply aep at4dx binding validate --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx binding validate --target-org myOrg --type service,selector

  $ sf simply aep at4dx binding validate --target-org myOrg --json

FLAG DESCRIPTIONS
  -t, --type=service|selector|domain|unit-of-work...

    Binding type(s) to include: service, selector, domain, unit-of-work.

    Comma-separated list of binding types to include. If not specified, all four are included.

See code: @simplysf/simply-aep

sf simply aep at4dx domain-process-binding create

Create a new AT4DX Trigger Action Framework binding (DomainProcessBinding__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx domain-process-binding create -n <value> -s <value> --process-context TriggerExecution|DomainMethodExecution -t
    Action|Criteria -c <value> --order <value> [--json] [--flags-dir <value>] [-d <value>] [-o <value>] [--api-version
    <value>] [--wait <value>] [--label <value>] [--sobject-alternate] [--trigger-operation
    Before_Insert|After_Insert|Before_Update|After_Update|Before_Delete|After_Delete|After_Undelete]
    [--domain-method-token <value>] [--active] [--execute-asynchronous] [--logical-inverse] [--prevent-recursive]
    [--description <value>] [--force]

FLAGS
  -c, --class-to-inject=<value>      (required) The Apex class this binding wires in.
  -d, --source-dir=<value>           The package directory to create
                                     customMetadata/DomainProcessBinding.<name>.md-meta.xml under. Created if the
                                     customMetadata folder doesn't exist yet.
  -n, --developer-name=<value>       (required) The binding's DeveloperName. Must start with a letter, contain only
                                     letters, numbers, and single underscores, not end with an underscore, and be 40
                                     characters or fewer.
  -o, --target-org=<value>           Deploy the generated binding to this org after writing it.
  -s, --sobject=<value>              (required) The SObject API name to bind against.
  -t, --type=<option>                (required) Whether this binding contributes a Criteria filter or an Action.
                                     <options: Action|Criteria>
      --[no-]active                  IsActive__c.
      --api-version=<value>          Override the api version used for api requests made by this command
      --description=<value>          Description__c.
      --domain-method-token=<value>  The domain method's process token this binding matches. Required, and only allowed,
                                     when --process-context is DomainMethodExecution.
      --execute-asynchronous         ExecuteAsynchronous__c.
      --force                        Write (and deploy) even if validation finds an error-severity issue. Validation
                                     still runs and its issues are still printed and returned.
      --label=<value>                The binding's label. Defaults to --developer-name. Must be 40 characters or fewer.
      --logical-inverse              LogicalInverse__c.
      --order=<value>                (required) OrderOfExecution__c. Numeric; decimals are allowed.
      --prevent-recursive            PreventRecursive__c.
      --process-context=<option>     (required) What kind of process invokes this binding: TriggerExecution or
                                     DomainMethodExecution.
                                     <options: TriggerExecution|DomainMethodExecution>
      --[no-]sobject-alternate       Write --sobject to RelatedDomainBindingSObjectAlternate__c instead of
                                     RelatedDomainBindingSObject__c. Use this for a SObject that can't be referenced
                                     through an EntityDefinition field at all (for example ServiceResource and other
                                     Setup objects).
      --trigger-operation=<option>   The trigger event this binding fires on. Required, and only allowed, when
                                     --process-context is TriggerExecution.
                                     <options: Before_Insert|After_Insert|Before_Update|After_Update|Before_Delete|After
                                     _Delete|After_Undelete>
      --wait=<value>                 [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a new AT4DX Trigger Action Framework binding (DomainProcessBinding__mdt) in local source and/or a connected
  org.

  Generates a `DomainProcessBinding.<DeveloperName>.md-meta.xml` file from the given flags and writes it under
  --source-dir, deploys it to --target-org, or both. Validates the resulting binding — alongside everything else already
  in scope — with the same rules `simply aep at4dx domain-process-binding validate` uses, and refuses to write if that
  introduces an error-severity issue unless --force is passed. At least one of --source-dir/--target-org is required;
  unlike `list`/`validate`, both may be given at once (write to source and deploy it live in the same run). Given
  --target-org alone, the file is written to a temporary directory, deployed, and discarded — no working-tree footprint.

  Writes RelatedDomainBindingSObject__c by default. Pass --sobject-alternate to write
  RelatedDomainBindingSObjectAlternate__c instead, for a SObject (such as ServiceResource and other Setup objects) that
  can't be referenced through an EntityDefinition field at all.

EXAMPLES
  $ sf simply aep at4dx domain-process-binding create --source-dir sfdx-source/core --developer-name Account_Before_Insert_Assign_Owner --sobject Account --process-context TriggerExecution --trigger-operation Before_Insert --type Action --class-to-inject AccountAssignOwnerAction --order 10

  $ sf simply aep at4dx domain-process-binding create --target-org myOrg --developer-name Account_Before_Insert_Assign_Owner --sobject Account --process-context TriggerExecution --trigger-operation Before_Insert --type Action --class-to-inject AccountAssignOwnerAction --order 10

  $ sf simply aep at4dx domain-process-binding create --source-dir sfdx-source/core --target-org myOrg --developer-name Account_Before_Insert_Assign_Owner --sobject Account --process-context TriggerExecution --trigger-operation Before_Insert --type Action --class-to-inject AccountAssignOwnerAction --order 10

  $ sf simply aep at4dx domain-process-binding create --source-dir sfdx-source/core --developer-name ServiceResource_Before_Update_Sync --sobject ServiceResource --sobject-alternate --process-context TriggerExecution --trigger-operation Before_Update --type Action --class-to-inject ServiceResourceSyncAction --order 10

See code: @simplysf/simply-aep

sf simply aep at4dx domain-process-binding list

List the AT4DX Trigger Action Framework bindings configured in an org or local source, in execution order.

USAGE
  $ sf simply aep at4dx domain-process-binding list [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d <value>...] [-s
    <value>...] [--active-only]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read bindings from. Use this for live-org discovery.
  -s, --sobject=<value>...     SObject API name(s) to filter to. If not specified, bindings for every SObject are
                               included.
      --active-only            Only show active bindings; hide inactive records.
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  List the AT4DX Trigger Action Framework bindings configured in an org or local source, in execution order.

  Reads AT4DX's Trigger Action Framework Custom Metadata Type — `DomainProcessBinding__mdt` — either from a live org or
  from local Salesforce DX source, showing which criteria/action classes are bound to each SObject's trigger events (or
  domain method tokens), and the order they run in. Exactly one of `--target-org` or `--source-dir` must be specified.

  Unlike `simply aep at4dx binding list`, there's no "winner" here — every active record in a group (same SObject,
  process context, and trigger operation or domain method token) runs, in `OrderOfExecution__c` order. Two active
  records sharing the same order within a group are flagged as a collision, since AT4DX doesn't guarantee which one runs
  first in that case.

EXAMPLES
  $ sf simply aep at4dx domain-process-binding list --target-org myOrg

  $ sf simply aep at4dx domain-process-binding list --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx domain-process-binding list --target-org myOrg --sobject Account

  $ sf simply aep at4dx domain-process-binding list --target-org myOrg --active-only --json

See code: @simplysf/simply-aep

sf simply aep at4dx domain-process-binding update

Update an existing AT4DX Trigger Action Framework binding (DomainProcessBinding__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx domain-process-binding update -n <value> [--json] [--flags-dir <value>] [-d <value>...] [-o <value>] [--api-version <value>]
    [--wait <value>] [--label <value>] [-s <value>] [--sobject-alternate] [--process-context
    TriggerExecution|DomainMethodExecution] [--trigger-operation
    Before_Insert|After_Insert|Before_Update|After_Update|Before_Delete|After_Delete|After_Undelete]
    [--domain-method-token <value>] [-t Action|Criteria] [-c <value>] [--order <value>] [--active]
    [--execute-asynchronous] [--logical-inverse] [--prevent-recursive] [--description <value>] [--force]

FLAGS
  -c, --class-to-inject=<value>      The Apex class this binding wires in. If not given, the existing value is kept.
  -d, --source-dir=<value>...        One or more paths to directories containing Salesforce DX source, searched for the
                                     binding to update.
  -n, --developer-name=<value>       (required) The DeveloperName of the binding to update.
  -o, --target-org=<value>           Locate (when --source-dir isn't given) and/or deploy the binding to this org.
  -s, --sobject=<value>              The SObject API name to bind against. If not given, the existing value is kept.
  -t, --type=<option>                Whether this binding contributes a Criteria filter or an Action. If not given, the
                                     existing value is kept.
                                     <options: Action|Criteria>
      --[no-]active                  IsActive__c. If not given, the existing value is kept.
      --api-version=<value>          Override the api version used for api requests made by this command
      --description=<value>          Description__c. If not given, the existing value is kept.
      --domain-method-token=<value>  The domain method's process token this binding matches. If you change
                                     --process-context to DomainMethodExecution, pass this too.
      --[no-]execute-asynchronous    ExecuteAsynchronous__c. If not given, the existing value is kept.
      --force                        Write (and deploy) even if validation finds an error-severity issue. Validation
                                     still runs and its issues are still printed and returned.
      --label=<value>                The binding's label. If not given, the existing label is kept.
      --[no-]logical-inverse         LogicalInverse__c. If not given, the existing value is kept.
      --order=<value>                OrderOfExecution__c. Numeric; decimals are allowed. If not given, the existing
                                     value is kept.
      --[no-]prevent-recursive       PreventRecursive__c. If not given, the existing value is kept.
      --process-context=<option>     What kind of process invokes this binding: TriggerExecution or
                                     DomainMethodExecution. If not given, the existing value is kept.
                                     <options: TriggerExecution|DomainMethodExecution>
      --[no-]sobject-alternate       Write --sobject to RelatedDomainBindingSObjectAlternate__c instead of
                                     RelatedDomainBindingSObject__c, for a SObject that can't be referenced through an
                                     EntityDefinition field at all (for example ServiceResource and other Setup
                                     objects). If not given, the binding keeps whichever field it already uses — this
                                     flag only needs to be passed to change it.
      --trigger-operation=<option>   The trigger event this binding fires on. If you change --process-context to
                                     TriggerExecution, pass this too.
                                     <options: Before_Insert|After_Insert|Before_Update|After_Update|Before_Delete|After
                                     _Delete|After_Undelete>
      --wait=<value>                 [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Update an existing AT4DX Trigger Action Framework binding (DomainProcessBinding__mdt) in local source and/or a
  connected org.

  Finds the binding named --developer-name in local source and/or a connected org, applies only the fields given as
  flags — everything else, including which SObject reference field the binding uses, is preserved from the found record
  — and rewrites the `DomainProcessBinding.<DeveloperName>.md-meta.xml` file. Validates the resulting binding —
  alongside everything else already in scope — with the same rules `simply aep at4dx domain-process-binding validate`
  uses, and refuses to write if that introduces an error-severity issue unless --force is passed.

  When --source-dir is given, the binding is located there (searched across every directory given, same as
  `list`/`validate`) and that exact file is rewritten; the found file is also deployed if --target-org is given. When
  only --target-org is given, the binding is located and updated directly in the org via a temporary file, deployed,
  then discarded — no working-tree footprint.

  --developer-name identifies the binding to update and can't itself be changed by this command.

EXAMPLES
  $ sf simply aep at4dx domain-process-binding update --source-dir sfdx-source/core --source-dir sfdx-source/app --developer-name Account_Before_Insert_Assign_Owner --order 20 --no-active

  $ sf simply aep at4dx domain-process-binding update --target-org myOrg --developer-name Account_Before_Insert_Assign_Owner --class-to-inject AccountAssignOwnerActionV2

See code: @simplysf/simply-aep

sf simply aep at4dx domain-process-binding validate

Validate the AT4DX Trigger Action Framework bindings configured in an org or local source, failing when a wiring problem is found.

USAGE
  $ sf simply aep at4dx domain-process-binding validate [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d <value>...] [-s
    <value>...]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read bindings from. Use this for live-org discovery.
  -s, --sobject=<value>...     SObject API name(s) to filter to. Applies only to issues that name an SObject; issues
                               that span the whole scan (a duplicate DeveloperName, or a binding with no resolvable
                               SObject) are always reported, since filtering could hide the exact conflict they exist to
                               catch. If not specified, every issue is included.
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Validate the AT4DX Trigger Action Framework bindings configured in an org or local source, failing when a wiring
  problem is found.

  Reads AT4DX's Trigger Action Framework Custom Metadata Type — `DomainProcessBinding__mdt` — either from a live org or
  from local Salesforce DX source, and checks it for problems `simply aep at4dx domain-process-binding list` doesn't
  fail on: two active records silently fighting over the same execution slot, a binding with no resolvable SObject, a
  binding whose declared process context doesn't match the field that's actually populated (so it never runs), the same
  DeveloperName defined more than once, an ambiguous SObject reference, RelatedDomainBindingSObject__c set to a standard
  object that can't actually go through an EntityDefinition relationship, and RelatedDomainBindingSObjectAlternate__c
  set to an object that didn't need the Alternate field. Exactly one of `--target-org` or `--source-dir` must be
  specified.

  Prints a table of every issue found. When --sobject is specified, scan-wide issues (a duplicate DeveloperName, or a
  binding with no resolvable SObject) print in their own section below the filtered table, since they can't be
  attributed to one SObject. Exits non-zero when any issue is an error (a warning alone doesn't fail the command) — use
  this in CI to gate on AT4DX wiring problems before they reach an org.

EXAMPLES
  $ sf simply aep at4dx domain-process-binding validate --target-org myOrg

  $ sf simply aep at4dx domain-process-binding validate --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx domain-process-binding validate --target-org myOrg --sobject Account

  $ sf simply aep at4dx domain-process-binding validate --target-org myOrg --json

See code: @simplysf/simply-aep

sf simply aep at4dx field-set-inclusion create

Create a new AT4DX Selector field set inclusion (SelectorConfig_FieldSetInclusion__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx field-set-inclusion create -n <value> -s <value> -f <value> [--json] [--flags-dir <value>] [-d <value>] [-o <value>]
    [--api-version <value>] [--wait <value>] [--label <value>] [--sobject-alternate] [--active] [--force]

FLAGS
  -d, --source-dir=<value>      The package directory to create the field set inclusion's .md-meta.xml under. Created if
                                the customMetadata folder doesn't exist yet.
  -f, --fieldset-name=<value>   (required) FieldsetName__c — the field set to add to the selector's queried field list.
                                Unique org-wide across every SObject, not per-SObject.
  -n, --developer-name=<value>  (required) The record's DeveloperName. Must start with a letter, contain only letters,
                                numbers, and single underscores, not end with an underscore, and be 40 characters or
                                fewer.
  -o, --target-org=<value>      Deploy the generated field set inclusion to this org after writing it.
  -s, --sobject=<value>         (required) The SObject API name to bind the field set to (BindingSObject__c, or
                                BindingSObjectAlternate__c with --sobject-alternate).
      --[no-]active             IsActive__c. Defaults to true, matching the Custom Metadata Type's own default. Pass
                                --no-active to create it inactive.
      --api-version=<value>     Override the api version used for api requests made by this command
      --force                   Write (and deploy) even if validation finds an error-severity issue. Validation still
                                runs and its issues are still printed and returned.
      --label=<value>           The record's label. Defaults to --developer-name. Must be 40 characters or fewer.
      --[no-]sobject-alternate  Write --sobject to BindingSObjectAlternate__c instead of BindingSObject__c. Use this for
                                a SObject that can't be referenced through an EntityDefinition field at all (for example
                                ServiceResource and other Setup objects).
      --wait=<value>            [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a new AT4DX Selector field set inclusion (SelectorConfig_FieldSetInclusion__mdt) in local source and/or a
  connected org.

  Generates a `SelectorConfig_FieldSetInclusion.<DeveloperName>.md-meta.xml` file from the given flags and writes it
  under --source-dir, deploys it to --target-org, or both. Validates the resulting record — alongside everything else
  already in scope — with the same rules `simply aep at4dx field-set-inclusion validate` uses, and refuses to write if
  that introduces an error-severity issue unless --force is passed. At least one of --source-dir/--target-org is
  required; both may be given at once (write to source and deploy it live in the same run). Given --target-org alone,
  the file is written to a temporary directory, deployed, and discarded — no working-tree footprint.

  --sobject writes BindingSObject__c by default (pass --sobject-alternate to write BindingSObjectAlternate__c instead,
  for a SObject — such as ServiceResource and other Setup objects — that can't be referenced through an EntityDefinition
  field at all).

EXAMPLES
  $ sf simply aep at4dx field-set-inclusion create --source-dir sfdx-source/core --developer-name Account_Contact_Fields --sobject Account --fieldset-name ContactRelatedFields

  $ sf simply aep at4dx field-set-inclusion create --target-org myOrg --developer-name ServiceResource_Skills --sobject ServiceResource --sobject-alternate --fieldset-name SkillFields

See code: @simplysf/simply-aep

sf simply aep at4dx field-set-inclusion list

List the AT4DX Selector field set inclusions configured in an org or local source.

USAGE
  $ sf simply aep at4dx field-set-inclusion list [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d
  <value>...]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read field set inclusions from. Use this for live-org
                               discovery.
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  List the AT4DX Selector field set inclusions configured in an org or local source.

  Reads `SelectorConfig_FieldSetInclusion__mdt` — either from a live org or from local Salesforce DX source — and lists
  every record found. Unlike `simply aep at4dx binding list`, there's no priority/winner concept: every `IsActive__c:
  true` record for a selector's SObject contributes its field set simultaneously, so this is a flat table, not a
  resolved one. Exactly one of `--target-org` or `--source-dir` must be specified.

EXAMPLES
  $ sf simply aep at4dx field-set-inclusion list --target-org myOrg

  $ sf simply aep at4dx field-set-inclusion list --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx field-set-inclusion list --target-org myOrg --json

See code: @simplysf/simply-aep

sf simply aep at4dx field-set-inclusion update

Update an existing AT4DX Selector field set inclusion (SelectorConfig_FieldSetInclusion__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx field-set-inclusion update -n <value> [--json] [--flags-dir <value>] [-d <value>...] [-o <value>] [--api-version <value>]
    [--wait <value>] [--label <value>] [-s <value>] [--sobject-alternate] [-f <value>] [--active] [--force]

FLAGS
  -d, --source-dir=<value>...   One or more paths to directories containing Salesforce DX source, searched for the
                                record to update.
  -f, --fieldset-name=<value>   FieldsetName__c — the field set to add to the selector's queried field list. Changing it
                                changes which field set is included. If not given, the existing value is kept.
  -n, --developer-name=<value>  (required) The DeveloperName of the record to update.
  -o, --target-org=<value>      Locate (when --source-dir isn't given) and/or deploy the record to this org.
  -s, --sobject=<value>         The SObject API name to bind the field set to. If not given, the existing value is kept.
      --[no-]active             IsActive__c. If not given, the existing value is kept. Pass --no-active to deactivate.
      --api-version=<value>     Override the api version used for api requests made by this command
      --force                   Write (and deploy) even if validation finds an error-severity issue. Validation still
                                runs and its issues are still printed and returned.
      --label=<value>           The record's label. If not given, the existing label is kept.
      --[no-]sobject-alternate  Write --sobject to BindingSObjectAlternate__c instead of BindingSObject__c, for a
                                SObject that can't be referenced through an EntityDefinition field at all (for example
                                ServiceResource and other Setup objects). If not given, the record keeps whichever field
                                it already uses — this flag only needs to be passed to change it.
      --wait=<value>            [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Update an existing AT4DX Selector field set inclusion (SelectorConfig_FieldSetInclusion__mdt) in local source and/or a
  connected org.

  Finds the field set inclusion named --developer-name in local source and/or a connected org, applies only the fields
  given as flags — everything else, including which SObject reference field it uses, is preserved from the found record
  — and rewrites its `.md-meta.xml` file. Validates the resulting record — alongside everything else already in scope —
  with the same rules `simply aep at4dx field-set-inclusion validate` uses, and refuses to write if that introduces an
  error-severity issue unless --force is passed.

  When --source-dir is given, the record is located there (searched across every directory given, same as
  `list`/`validate`) and that exact file is rewritten; the found file is also deployed if --target-org is given. When
  only --target-org is given, the record is located and updated directly in the org via a temporary file, deployed, then
  discarded — no working-tree footprint.

  --developer-name identifies the record to update and can't itself be changed by this command.

EXAMPLES
  $ sf simply aep at4dx field-set-inclusion update --source-dir sfdx-source/core --source-dir sfdx-source/app --developer-name Account_Contact_Fields --no-active

  $ sf simply aep at4dx field-set-inclusion update --target-org myOrg --developer-name Account_Contact_Fields --fieldset-name ContactRelatedFieldsV2

See code: @simplysf/simply-aep

sf simply aep at4dx field-set-inclusion validate

Validate the AT4DX Selector field set inclusions configured in an org or local source, failing when a wiring problem is found.

USAGE
  $ sf simply aep at4dx field-set-inclusion validate [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>]
  [-d <value>...]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read field set inclusions from. Use this for live-org
                               discovery.
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Validate the AT4DX Selector field set inclusions configured in an org or local source, failing when a wiring problem
  is found.

  Reads `SelectorConfig_FieldSetInclusion__mdt` — either from a live org or from local Salesforce DX source — and checks
  them for problems `simply aep at4dx field-set-inclusion list` doesn't fail on: a record with no resolvable SObject, an
  ambiguous SObject reference, a SObject reference naming a standard object that can't actually go through an
  EntityDefinition metadata relationship, two records sharing a FieldsetName__c value (unique org-wide, not
  per-SObject), and the same DeveloperName defined more than once. Exactly one of `--target-org` or `--source-dir` must
  be specified.

  Prints a table of every issue found. Exits non-zero when any issue is an error (a warning alone doesn't fail the
  command) — use this in CI to gate on AT4DX field set inclusion wiring problems before they reach an org.

EXAMPLES
  $ sf simply aep at4dx field-set-inclusion validate --target-org myOrg

  $ sf simply aep at4dx field-set-inclusion validate --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx field-set-inclusion validate --target-org myOrg --json

See code: @simplysf/simply-aep

sf simply aep at4dx platform-event-subscription create

Create a new AT4DX Platform Event Distributor subscription (PlatformEvents_Subscription__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx platform-event-subscription create -n <value> --event-bus <value> --consumer <value> --matcher-rule
    MatchEventBus|MatchEventBusAndCategory|MatchEventBusAndEventName|MatchEventBusAndCategoryAndEventName [--json] [--flags-dir <value>] [-d <value>] [-o
    <value>] [--api-version <value>] [--wait <value>] [--label <value>] [--event-category <value>] [--event-name
    <value>] [--active] [--synchronous] [--force]

FLAGS
  -d, --source-dir=<value>      The package directory to create the platform event subscription's .md-meta.xml under.
                                Created if the customMetadata folder doesn't exist yet.
  -n, --developer-name=<value>  (required) The record's DeveloperName. Must start with a letter, contain only letters,
                                numbers, and single underscores, not end with an underscore, and be 40 characters or
                                fewer.
  -o, --target-org=<value>      Deploy the generated platform event subscription to this org after writing it.
      --[no-]active             IsActive__c. Defaults to true, matching the Custom Metadata Type's own default. Pass
                                --no-active to create it inactive.
      --api-version=<value>     Override the api version used for api requests made by this command
      --consumer=<value>        (required) Consumer__c — the IEventsConsumer-implementing Apex class name. Unique
                                org-wide across every subscription.
      --event-bus=<value>       (required) EventBus__c — the platform event object API name this subscription registers
                                against, e.g. My_Event__e.
      --event-category=<value>  EventCategory__c. Required when --matcher-rule is MatchEventBusAndCategory or MatchEventBusAndCategoryAndEventName
                                — leaving it blank for those raises matcher-rule-missing-field.
      --event-name=<value>      Event__c. Required when --matcher-rule is MatchEventBusAndEventName or MatchEventBusAndCategoryAndEventName — leaving
                                it blank for those raises matcher-rule-missing-field.
      --force                   Write (and deploy) even if validation finds an error-severity issue. Validation still
                                runs and its issues are still printed and returned.
      --label=<value>           The record's label. Defaults to --developer-name. Must be 40 characters or fewer.
      --matcher-rule=<option>   (required) MatcherRule__c — which of --event-category/--event-name the distributor's
                                matcher dereferences for this subscription. One of MatchEventBus, MatchEventBusAndCategory,
                                MatchEventBusAndEventName, MatchEventBusAndCategoryAndEventName.
                                <options: MatchEventBus|MatchEventBusAndCategory|MatchEventBusAndEventName|MatchEventBusAndCategoryAndEventName>
      --[no-]synchronous        Execute_Synchronous__c. Defaults to false. Pass --synchronous to have the distributor
                                invoke this consumer synchronously.
      --wait=<value>            [default: 33] Deploy poll timeout, in minutes. Only meaningful with --target-org.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a new AT4DX Platform Event Distributor subscription (PlatformEvents_Subscription__mdt) in local source and/or a
  connected org.

  Generates a `PlatformEvents_Subscription.<DeveloperName>.md-meta.xml` file from the given flags and writes it under
  --source-dir, deploys it to --target-org, or both. Validates the resulting record — alongside everything else already
  in scope — with the same rules `simply aep at4dx platform-event-subscription validate` uses, and refuses to write if
  that introduces an error-severity issue unless --force is passed. At least one of --source-dir/--target-org is
  required; both may be given at once (write to source and deploy it live in the same run). Given --target-org alone,
  the file is written to a temporary directory, deployed, and discarded — no working-tree footprint.

  --matcher-rule controls which of --event-category/--event-name the distributor's matcher dereferences for this
  subscription: MatchEventBus dereferences neither (the whole bus matches, once a category or event name gets it past
  the distributor's pre-filter — see `simply aep at4dx platform-event-subscription validate`'s unreachable-subscription
  rule for why at least one should usually be set anyway), MatchEventBusAndCategory requires --event-category, MatchEventBusAndEventName requires
  --event-name, and MatchEventBusAndCategoryAndEventName requires both. Leaving the field a MatcherRule needs blank is exactly the
  matcher-rule-missing-field hazard validation catches — see that command's description for why it matters at runtime.

EXAMPLES
  $ sf simply aep at4dx platform-event-subscription create --source-dir sfdx-source/core --developer-name Account_Change_Subscriber --event-bus Account_Change__e --consumer AccountChangeConsumer --matcher-rule MatchEventBusAndCategory --event-category Finance

  $ sf simply aep at4dx platform-event-subscription create --target-org myOrg --developer-name Account_Change_Subscriber --event-bus Account_Change__e --consumer AccountChangeConsumer --matcher-rule MatchEventBusAndCategoryAndEventName --event-category Finance --event-name AccountUpdated

See code: @simplysf/simply-aep

sf simply aep at4dx platform-event-subscription list

List the AT4DX Platform Event Distributor subscriptions configured in an org or local source.

USAGE
  $ sf simply aep at4dx platform-event-subscription list [--json] [--flags-dir <value>] [-o <value>] [--api-version
  <value>] [-d <value>...]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read platform event subscriptions from. Use this for
                               live-org discovery.
      --api-version=<value>    Override the api version used for api requests made by this command

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  List the AT4DX Platform Event Distributor subscriptions configured in an org or local source.

  Reads `PlatformEvents_Subscription__mdt` — either from a live org or from local Salesforce DX source — and lists every
  record found, grouped by event bus then category. Unlike `simply aep at4dx binding list`, there's no priority/winner
  concept: every `IsActive__c: true` subscription for a matching event is invoked by the distributor, so this is a flat
  table, not a resolved one. Exactly one of `--target-org` or `--source-dir` must be specified.

EXAMPLES
  $ sf simply aep at4dx platform-event-subscription list --target-org myOrg

  $ sf simply aep at4dx platform-event-subscription list --source-dir sfdx-source/core --source-dir sfdx-source/app

  $ sf simply aep at4dx platform-event-subscription list --target-org myOrg --json

See code: @simplysf/simply-aep

sf simply aep at4dx platform-event-subscription simulate

Simulate the AT4DX Platform Event Distributor's consumer resolution for a hypothetical event, and show which subscriptions would receive it and why the rest wouldn't.

USAGE
  $ sf simply aep at4dx platform-event-subscription simulate --event-bus <value> [--json] [--flags-dir <value>] [-o <value>] [--api-version <value>] [-d
    <value>...] [--category <value>] [--event-name <value>]

FLAGS
  -d, --source-dir=<value>...  One or more paths to directories containing Salesforce DX source. Use this for
                               local-source discovery.
  -o, --target-org=<value>     Username or alias of the org to read platform event subscriptions from. Use this for
                               live-org discovery.
      --api-version=<value>    Override the api version used for api requests made by this command
      --category=<value>       The hypothetical event's Category__c value. Omit to simulate an event with no category.
      --event-bus=<value>      (required) The platform event object API name (EventBus__c) of the hypothetical event to
                               simulate, e.g. My_Event__e.
      --event-name=<value>     The hypothetical event's EventName__c value. Omit to simulate an event with no event
                               name.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Simulate the AT4DX Platform Event Distributor's consumer resolution for a hypothetical event, and show which
  subscriptions would receive it and why the rest wouldn't.

  Reads `PlatformEvents_Subscription__mdt` — either from a live org or from local Salesforce DX source — and
  reimplements `PlatformEventDistributor`'s decision sequence against a hypothetical event you describe with
  `--event-bus`, `--category`, and `--event-name`: restrict to subscriptions on that bus, drop inactive records the
  distributor's own query never loads, apply `triggerHandler`'s pre-filter, then each record's `MatcherRule__c` branch.
  Exactly one of `--target-org` or `--source-dir` must be specified.

  Prints the exact consumer set the distributor would build, in order, tagged synchronous or asynchronous from
  `Execute_Synchronous__c`, plus every subscription on that bus that would _not_ receive the event and the structured
  reason why: `inactive`, `prefiltered` (the pre-filter rejected it before any matcher rule ran),
  `matcher-rule-missing-field` (the matcher rule dereferences a blank match field — a real NullPointerException in the
  org), or `no-match` (every field the matcher rule needs is present, but the values don't match this event).

  This is the same evaluation `simply aep at4dx platform-event-subscription validate` uses to derive
  `matcher-rule-missing-field` and `unreachable-subscription` — running it here against a concrete hypothetical event is
  how you confirm a subscription actually receives what you expect it to, beyond what `validate`'s static checks can
  tell you.

EXAMPLES
  $ sf simply aep at4dx platform-event-subscription simulate --target-org myOrg --event-bus Account_Change__e --category Finance --event-name AccountUpdated

  $ sf simply aep at4dx platform-event-subscription simulate --source-dir sfdx-source/core --event-bus Account_Change__e --event-name AccountUpdated

  $ sf simply aep at4dx platform-event-subscription simulate --target-org myOrg --event-bus Account_Change__e --json

See code: @simplysf/simply-aep

sf simply aep at4dx platform-event-subscription update

Update an existing AT4DX Platform Event Distributor subscription (PlatformEvents_Subscription__mdt) in local source and/or a connected org.

USAGE
  $ sf simply aep at4dx platform-event-subscription update -n <value> [--json] [--flags-dir <value>] [-d <value>...