Odoo Month End Close
erpipe-org/mcp-odoo
Drive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every…
Configure end-to-end Agency Billing on a Salesforce FSC Insurance Brokerage org via dispatch MCP calls.
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configure --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .claude/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .claude/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configure --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .agents/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .agents/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configure --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .cursor/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .cursor/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/sf-skills.git --path skills/insurance-brokerage-agency-billing-configure--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configure --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .gemini/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .gemini/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .github/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .github/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/sf-skills insurance-brokerage-agency-billing-configure --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/sf-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/insurance-brokerage-agency-billing-configure .opencode/skills/insurance-brokerage-agency-billing-configure && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "insurance-brokerage-agency-billing-configure" agent skill from https://github.com/forcedotcom/sf-skills/tree/main/skills/insurance-brokerage-agency-billing-configure into .opencode/skills/insurance-brokerage-agency-billing-configure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "insurance-brokerage-agency-billing-configure", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
insurance-brokerage-agency-billing-configureConfigure end-to-end Agency Billing on a Salesforce FSC Insurance Brokerage org via dispatch MCP calls.
Insurance Brokerage Agency Billing Configure is an agent skill from forcedotcom/sf-skills. Configure end-to-end Agency Billing on a Salesforce FSC Insurance Brokerage org via dispatch MCP calls. Use this skill when users want to set up brokerage billing, configure agency billing, enable insurance billing features, create billing rules, set up accounting periods, assign billing permission sets, or create a demo policy for the Issue-to-Invoice flow. TRIGGER when: user mentions agency billing setup, brokerage billing configuration, insurance billing enablement, billing treatments, billing rules creation…
Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/accounting-setup.md`, `references/billing-rules-config.md` and `references/billing-settings.md`).
It sits in Business, Finance & HR, covering Accounting and bookkeeping, Forms and invoices and CRM management. It works with Salesforce and Model Context Protocol. The repository describes itself as: Salesforce's curated collection of agent skills for building applications. Optimized for Agentforce Vibes, compatible with all AI tools. The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4bbae5c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
soap.sforce.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
INVALID_CROSS_REFERENCE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Insurance Brokerage Agency Billing Configure loads about 5.8k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 256 tokens; SKILL.md has 2,434 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from forcedotcom/sf-skills at commit 4bbae5c, republished under its Apache-2.0 licence (© forcedotcom). 2,434 words, ~5,815 tokens.
.claude/skills/insurance-brokerage-agency-billing-configure/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.Automates the full Agency Billing setup on a Salesforce FSC Insurance Brokerage org. Runs 7 sequential phases using dispatch MCP calls to verify licenses, enable features, assign permissions early, configure billing settings, create billing rules, set org defaults, set up accounting, and create a demo policy for Issue-to-Invoice testing. Phase order is critical: permissions must be assigned before billing settings configuration.
SonicLicensedOrg feature not present on standard brokerage orgs — enable it manually if needed.dispatch (headless routes + Metadata CRUD + Tooling API). No manual steps, no SF CLI, no gaps.Every field in this workflow is STANDARD. Never append __c to any field name. Here are the correct API names:
| Object | Field (correct) | WRONG (never use) |
|---|---|---|
| BillingTreatment | Status | |
| TaxEngine | TaxEngineName | |
| PaymentTerm | DaysDue | |
| PaymentTerm / PaymentTermItem | PeriodUnit | |
| PaymentTerm | Active | |
| LegalEntity | Active | |
| BillingTreatmentItem | ChargeType | |
| BillingTreatmentItem | BillingType | |
| BillingTreatmentItem | Active | |
| ProductSellingModel | Active |
Do not ask the user for any information — proceed autonomously using defaults and the pre-configured environment.
dispatch GET /chatter/users/me.id field from the /chatter/users/me response and use it as AssigneeId for all license and permission assignments throughout all phases.Defaults (always apply unless the user explicitly overrides in their initial prompt):
references/demo-policy-config.mdreferences/billing-rules-config.mdreferences/permissions-config.mdAll phases are sequential. Do not skip or reorder. Critical cross-dependencies:
Follow the execution order below exactly.
Verify org connectivity and capture target user ID — call dispatch GET /chatter/users/me and confirm a 200 response. Capture the id field from the response and store it as TARGET_USER_ID — this SAME ID must be used throughout ALL phases for license assignments, permission set assignments, and any user-specific operations. If Chatter is disabled, fall back to querying the User object: dispatch GET /query?q=SELECT+Id,Username,Name+FROM+User+WHERE+IsActive=true+AND+Profile.Name+LIKE+'%25System+Administrator%25'+LIMIT+1 and capture the Id field from the first record.
CRITICAL: Do not re-query for the user ID in later phases. Use the same TARGET_USER_ID captured here for all subsequent operations. Re-querying can return a different user if multiple admins exist.
Verify 19 required licenses — read references/prerequisites.md for the full license list. Use dispatch GET /query?q=<SOQL> to query PermissionSetLicense records. If any are missing from the org, stop and inform the user.
Assign missing licenses to target user — query PermissionSetLicenseAssign for the TARGET_USER_ID captured in step 1. Assign any missing licenses via dispatch POST /sobjects/PermissionSetLicenseAssign using the same TARGET_USER_ID.
Enable features — read references/prerequisites.md for the feature enablement sequence and exact routes. Each feature is a read → write → verify cycle. Enable in order: Context Service, Brokerage, Billing, Salesforce Pricing.
Features MUST be enabled in dependency order. Context Service before Brokerage, Brokerage before Billing.
Assign permission sets EARLY — read references/permissions-config.md for the 15 required sets. Query current assignments, assign only missing ones via dispatch POST /sobjects/PermissionSetAssignment. This must run before Phase 3 (Billing Settings) because several billing settings require these permissions to modify.
Create custom permission set with FLS for InsPolicyBillingInfo billing lookup fields — MANDATORY STEP, CANNOT BE SKIPPED UNDER ANY CIRCUMSTANCES. The 6 billing lookup fields on InsPolicyBillingInfo require Field-Level Security to be visible: BillingTreatmentId, TaxTreatmentId, ProrationPolicyId, PaymentTermId, ProductSellingModelId, LegalEntityId. Without this FLS, Phase 7 will fail with INVALID_FIELD errors when creating InsPolicyBillingInfo records.
CRITICAL: ALWAYS attempt to create the permission set — DO NOT skip this step based on FLS query results. Even if FieldPermissions query shows FLS is already granted via another permission set, you MUST attempt to create the Insurance_Billing_Field_Access permission set. If it already exists, the API will return DUPLICATE_VALUE — treat this as success and continue.
Step 1 — Verify FLS (for diagnostic purposes only, NOT a gate for creation):
dispatch GET /query?q=SELECT+Field+FROM+FieldPermissions+WHERE+SobjectType='InsPolicyBillingInfo'+AND+Field+IN+('InsPolicyBillingInfo.BillingTreatmentId','InsPolicyBillingInfo.TaxTreatmentId','InsPolicyBillingInfo.ProrationPolicyId','InsPolicyBillingInfo.PaymentTermId','InsPolicyBillingInfo.ProductSellingModelId','InsPolicyBillingInfo.LegalEntityId')+AND+PermissionsRead=true+AND+PermissionsEdit=trueStep 2 — UNCONDITIONALLY create the permission set (DO NOT skip regardless of Step 1 results):
dispatch POST /services/data/v66.0/headless/metadata
{
"type": "PermissionSet",
"fullName": "Insurance_Billing_Field_Access",
"xmlRep": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><PermissionSet xmlns=\"http://soap.sforce.com/2006/04/metadata\"><fieldPermissions><field>InsPolicyBillingInfo.BillingTreatmentId</field><readable>true</readable><editable>true</editable></fieldPermissions><fieldPermissions><field>InsPolicyBillingInfo.TaxTreatmentId</field><readable>true</readable><editable>true</editable></fieldPermissions><fieldPermissions><field>InsPolicyBillingInfo.ProrationPolicyId</field><readable>true</readable><editable>true</editable></fieldPermissions><fieldPermissions><field>InsPolicyBillingInfo.PaymentTermId</field><readable>true</readable><editable>true</editable></fieldPermissions><fieldPermissions><field>InsPolicyBillingInfo.ProductSellingModelId</field><readable>true</readable><editable>true</editable></fieldPermissions><fieldPermissions><field>InsPolicyBillingInfo.LegalEntityId</field><readable>true</readable><editable>true</editable></fieldPermissions><hasActivationRequired>false</hasActivationRequired><label>Insurance Billing Field Access</label><description>Grants FLS for InsPolicyBillingInfo billing lookup fields</description></PermissionSet>"
}Expected outcomes:
{ results: [{ success: true, id: "0PS...", fullName: "Insurance_Billing_Field_Access" }] } — capture the id field.{ results: [{ success: false, errors: [{ statusCode: "DUPLICATE_VALUE" }] }] } — the permission set exists; proceed to reconciliation step below.Reconcile FieldPermissions — MANDATORY, DO NOT SKIP. A pre-existing Insurance_Billing_Field_Access permission set may be missing some of the 6 required entries. Resolve the permission set ID, query its FieldPermissions, and for each of the 6 required fields (InsPolicyBillingInfo.BillingTreatmentId, .TaxTreatmentId, .ProrationPolicyId, .PaymentTermId, .ProductSellingModelId, .LegalEntityId) that is missing or has read/edit false: create or PATCH the FieldPermissions record. See references/permissions-config.md § "Reconcile Field Permissions" for the exact API calls. Only after all 6 fields are confirmed read+edit proceed to assignment.
Assign the permission set to target user — MANDATORY STEP, DO NOT SKIP. Query for the permission set ID (whether you just created it or it already existed), then verify assignment status and create the assignment if missing.
First, resolve the permission set ID:
dispatch GET /query?q=SELECT+Id+FROM+PermissionSet+WHERE+Name='Insurance_Billing_Field_Access'+AND+IsOwnedByProfile=falseThen check if already assigned:
dispatch GET /query?q=SELECT+Id+FROM+PermissionSetAssignment+WHERE+AssigneeId='<TARGET_USER_ID>'+AND+PermissionSetId='<PS_ID>'If the assignment query returns 0 records, create the assignment:
dispatch POST /sobjects/PermissionSetAssignment
{"AssigneeId": "<TARGET_USER_ID>", "PermissionSetId": "<PS_ID>"}If the assignment POST returns DUPLICATE_VALUE, the user already has it assigned between your query and now (treat as success). Any other error is a failure and must be reported.
Read current billing settings — read references/billing-settings.md for the full settings map and routes. Call dispatch GET /headless/invoke/platform/billing-settings/get-billing-general-setting-states to read current state.
Write only changed settings — compare each field against desired state and write only what differs. Enable Design Document Templates via dispatch PATCH /headless/invoke/platform/accounting-guided-setup/setup-billing-doc-gen-and-fetch-invoice-template-data (must run after billing is on). InsuranceBrokerage IPT/IPTD settings are now automated via PATCH /setup/org/values/I_P_T_D_ENABLED_FOR_BROKERAGE and PATCH /setup/org/values/I_P_T_ENABLED_FOR_BROKERAGE.
If any setting returns "Access denied": Phase 2 permissions did not propagate yet. Wait 30 seconds and retry.
Query existing billing rules — for each record type (Legal Entity, Billing Treatments, Tax Engine, Tax Treatment, Payment Term, Product Selling Models, Proration Policy), use dispatch GET /query?q=<SOQL> before creating. Read references/billing-rules-config.md for exact field values and search patterns.
Create only missing records — use dispatch POST /sobjects/<Object> for creates and dispatch PATCH /sobjects/<Object>/<id> for updates. For Billing Treatments, follow the Draft→Items→Activate sequence. Track all record IDs.
Billing Treatments must be created in Draft, child Items created in Active, then parent activated. This is enforced by the platform.
references/org-defaults.md. Set the five default fields (Legal Entity, Billing Treatment, Tax Treatment, two DPE definitions) via dedicated headless routes. Use record IDs from Phase 4.Create accounting periods — read references/accounting-setup.md. Compute dates at runtime for the current fiscal year. Query existing periods via dispatch GET /query?q=<SOQL>, create only missing months via dispatch POST /sobjects/AccountingPeriod. Link periods to Legal Entity via LegalEntyAccountingPeriod.
Create GL accounts — query by AccountingCode, create only missing accounts (11 total) via dispatch POST /sobjects/GeneralLedgerAccount. Link each to the Legal Entity.
Create GLAAR rules — query existing rules, create parent GeneralLedgerAcctAsgntRule + child GeneralLedgerJrnlEntryRule if missing.
Demo policy — proceed with creating a demo policy for Issue-to-Invoice testing. Skip only if the user explicitly requested to skip this phase in their initial prompt.
Create demo policy chain — read references/demo-policy-config.md. Check for duplicate Account via dispatch GET /query?q=<SOQL>. If none exists, create: Account → Contact → Insurance Policy → Coverages → Surcharges → Insurance Policy Billing Information. Use record IDs from Phase 4 for billing info lookups. All creates via dispatch POST /sobjects/<Object>.
Verify FLS — use dispatch GET /query?q=<SOQL> to query FieldPermissions for policy objects. Report any fields needing manual FLS configuration.
| Constraint | Rationale |
|---|---|
| Query before create — always | Prevents duplicates; existing records may have been created manually or by a colleague |
| Never ask the user questions or offer to run later | Proceed autonomously — execute all commands immediately. Never say "if you want me to run" or "say Run now". Just do it. Report results at the end. |
| Capture target user ID once in Phase 1, use everywhere | Phase 1 step 1 captures TARGET_USER_ID — this SAME ID is used for all license assignments, permission set assignments, and user-specific operations. Do NOT re-query for user ID in later phases. |
| Track all record IDs across phases | Later phases reference IDs from earlier phases for lookups |
| Enable features individually and sequentially | Cross-dependencies require ordered enablement |
Use dispatch for all org operations | No sf CLI dependency — all reads/writes go through the project-codey MCP dispatch tool |
| Compute dates at runtime | Fiscal year, accounting periods, and policy dates must reflect the current calendar year |
| Read config from references/ files | Centralizes field values; prevents drift between instructions and actual creates |
NEVER use __c suffix on ANY object or field | Every object and every field in this workflow is STANDARD. There are ZERO custom objects or custom fields. Never write __c anywhere — not on object names, not on field names. Status not Status__c. Active not Active__c. BillingType not BillingType__c. Using __c causes immediate DML failures. |
| Report skipped steps | When a commented-out section is skipped, tell the user which settings were not configured and why |
| Issue | Resolution |
|---|---|
| Chatter may be disabled on the target org | If GET /chatter/users/me returns 403 FUNCTIONALITY_NOT_ENABLED, fall back to SELECT Id,Username,Name FROM User WHERE IsActive=true AND Profile.Name LIKE '%System Administrator%' LIMIT 1 to identify the target user |
| Target user ID must be captured once in Phase 1 and used consistently across ALL phases | Capture the user ID from /chatter/users/me (or the User query fallback) in Phase 1 step 1 and store it as TARGET_USER_ID. Use this SAME ID for all license assignments (Phase 1), permission set assignments (Phase 2), and any user-specific operations. Do NOT re-query for the user ID in later phases — if multiple System Administrator users exist, re-querying can return a different user, causing "invalid user id" errors. If Phase 2 or Phase 7 returns INVALID_CROSS_REFERENCE_KEY with "invalid user id", you used the wrong ID — go back to Phase 1 and use the correct TARGET_USER_ID captured there. |
TaxEngine name field is TaxEngineName, not Name | Use TaxEngineName in queries and creates |
PeriodUnit (on PaymentTerm and PaymentTermItem) is singular, not PeriodUnits | Field was renamed; use singular form |
ProrationPolicy has NO Status field | Do not include Status in queries or creates for this object |
BillingTreatment activation validates children exist | Must create Items before activating parent |
InsPolicyBillingInfo is abbreviated, not InsurancePolicyBillingInformation | Use the short API name |
InsPolicyTransactionDetail is abbreviated, not InsurancePolicyTransactionDetail | Use the short API name |
GeneralLedgerAccount.Name is auto-generated | Do not include Name in create; use AccountingCode + AccountingName |
LegalEntyAccountingPeriod.Name is auto-generated | Do not include Name in create |
InsurancePolicyCoverage uses CoverageName not Name | Name is auto-generated on this object |
| Surcharges must be on terminal nodes (coverages), not directly on the policy | Platform enforces this for tax proration to work correctly |
| Headless invoke routes use kebab-case path segments | The route PATCH /headless/invoke/platform/billing-settings/set-billing-setup-enabled is the canonical form; camelCase variants 404 |
INSURANCE_BILLING requires INSURANCE_TRANSACTION_DETAIL on first | Enable I_P_T_D_ENABLED_FOR_BROKERAGE before I_P_T_ENABLED_FOR_BROKERAGE. The handle-pref-enable route is wrong for both — use PATCH /setup/org/values/<name> with {"orgValue": true} (same as SetupApiFamilyController.updateOrgValue in the UI). |
InsuranceBrokerageSettings context mapping via /setup/org/values/* | Use the same pattern as IPTD/IPT: GET/PATCH /setup/org/values/INS_BRK_BILLING_CTX_DEF (and _SCHED_GRP_MAP, _TNX_MAPPING) with {"orgValue": "<value>"}. Tooling API SELECT Metadata FROM InsuranceBrokerageSettings returns INVALID_TYPE on standard orgs. |
BillingSettings Tooling SOQL returns INVALID_TYPE | SELECT Id,Metadata FROM BillingSettings via Tooling API fails on many org types. BillingSettings is a standard platform Metadata type (Metadata API deploy/retrieve works), but the Tooling SOQL surface doesn't expose it universally. For Phase 4 org defaults, use the dedicated headless routes in references/org-defaults.md — they write the same underlying OrgValues without any Tooling API dependency. |
BillingTreatmentItem.Percentage is required even for Advance/Arrears | Platform requires Percentage on all BTI types, not just Milestone. Use 100 for non-milestone items |
BillingTreatmentItem has no CurrencyIsoCode field | Do not include CurrencyIsoCode — the field does not exist on this object |
InsurancePolicyCoverage has no CurrencyIsoCode field | Do not include CurrencyIsoCode — the field does not exist on this object |
ProductSellingModel OneTime cannot have PricingTerm or PricingTermUnit | Omit both fields when SellingModelType=OneTime; platform returns INVALID_INPUT if either is set |
PaymentTerm must be created without Status, then activated after child item | Creating PaymentTerm with Status=Active fails if no PaymentTermItem exists. Create without Status, add PaymentTermItem, then PATCH Status=Active+IsDefault=true |
GeneralLedgerAcctAsgntRule create fails with Status=Active if no child journal entry rule exists | Create with Status=Inactive, add GeneralLedgerJrnlEntryRule child, then PATCH Status=Active. Valid values: Active, Inactive (no Draft) |
LegalEntity has no CurrencyIsoCode field on orgfarm orgs | Omit from SOQL query and create body |
BillingTreatment.ExcludeFromBilling is a restricted picklist | Valid values are "Yes"/"No" only. Sending a boolean-like "true"/"false" string fails with 400 INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST |
InsPolicyBillingInfo billing lookup fields require FLS grants from Phase 2 custom permission set | BillingTreatmentId, TaxTreatmentId, ProrationPolicyId, PaymentTermId, ProductSellingModelId, LegalEntityId are hidden from describe and SOQL until Field-Level Security is granted. Phase 2 creates a custom permission set "Insurance Billing Field Access" with FieldPermissions for these 6 fields and assigns it to the target user. If the POST returns INVALID_FIELD on any of these after Phase 2 completed, the FLS grants may not have been created correctly — verify the custom permission set exists and has the 6 FieldPermissions records. Phase 7 MUST run after Phase 2 completes. |
This skill produces no file artifacts. It configures an org via dispatch calls and produces a status report at the end of each phase and a comprehensive summary after all phases complete. Commented-out steps are reported as skipped with investigation notes.
| File | When to read |
|---|---|
references/prerequisites.md | Phase 1 — license list, feature enablement routes |
references/permissions-config.md | Phase 2 — 15 permission sets API names (moved early to unblock Phase 3) |
references/billing-settings.md | Phase 3 — settings field map, headless routes, and desired values |
references/billing-rules-config.md | Phase 4 — billing rules field values, search patterns, creation sequence |
references/org-defaults.md | Phase 5 — investigation status and deferred default fields |
references/accounting-setup.md | Phase 6 — GL account chart, GLAAR rule structure, period naming |
references/demo-policy-config.md | Phase 7 — demo policy record fields, lookup resolution, and FLS verification |
© forcedotcom, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (references) in skills/insurance-brokerage-agency-billing-configure of forcedotcom/sf-skills.
Open the folder on GitHubat commit 4bbae5c
Insurance Brokerage Agency Billing Configure next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Insurance Brokerage Agency Billing Configure this skillforcedotcom/sf-skills | 1.1k | — | ~5.8k | Automated safety check: Pass | Apache-2.0 | |
| Odoo Month End Closeerpipe-org/mcp-odoo | 421 | — | ~753 | Automated safety check: Pass | MIT | |
| Salesforce Core Workflow Ajeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1k | Automated safety check: Pass | MIT | |
| Salesforce Core Workflow Bjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Salesforce Deploy Integrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Salesforce Incident Runbookjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Pass | MIT |
erpipe-org/mcp-odoo
Drive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every…
jeremylongshore/tons-of-skills-marketplace
Run a metadata-aware Salesforce record workflow with bounded SOQL, CRUD and field-access checks, mutation preview, and reconciliation.
jeremylongshore/tons-of-skills-marketplace
Analyze and run the correct Salesforce high-volume operation using Bulk API 2.0, Composite, Graph, or sObject Collections with reconciliation.
jeremylongshore/tons-of-skills-marketplace
Deploy a Salesforce-connected application through immutable artifacts, environment binding, canary traffic, reconciliation, and rollback.
jeremylongshore/tons-of-skills-marketplace
Run evidence-led Salesforce integration incident response from detection through containment, recovery, reconciliation, and prevention.
jeremylongshore/tons-of-skills-marketplace
Review a Salesforce integration for fixed API versions, unsafe auth, N-plus-one queries, shared-limit blindness, stale metadata, blind retries, event gaps, and missing reconciliation.
forcedotcom/sf-skills
Declared architecture snapshot for one Agentforce agent: planner, topics, actions, flows, Apex, prompt templates, and NGA plugins.
forcedotcom/sf-skills
Data Cloud 360° view of a single Agentforce session. An agent skill from forcedotcom/sf-skills.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/sf-skills
Apply SLDS-compliant UI using the correct blueprints, styling hooks, utility classes, and icons.
forcedotcom/sf-skills
Lightning Web Components with PICKLES methodology and 165-point scoring.
Works with
Categories
Configure end-to-end Agency Billing on a Salesforce FSC Insurance Brokerage org via dispatch MCP calls. Insurance Brokerage Agency Billing Configure is an agent skill from forcedotcom/sf-skills. Configure end-to-end Agency Billing on a Salesforce FSC Insurance Brokerage org via dispatch MCP calls.
Insurance Brokerage Agency Billing Configure fits situations like: users want to set up brokerage billing; configure agency billing; enable insurance billing features; create billing rules.
Run `npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a claude-code`. Or copy the skill folder (skills/insurance-brokerage-agency-billing-configure in forcedotcom/sf-skills) into .claude/skills/insurance-brokerage-agency-billing-configure in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a codex`. Or copy the skill folder (skills/insurance-brokerage-agency-billing-configure in forcedotcom/sf-skills) into .agents/skills/insurance-brokerage-agency-billing-configure in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/sf-skills --skill insurance-brokerage-agency-billing-configure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/insurance-brokerage-agency-billing-configure, .gemini/skills/insurance-brokerage-agency-billing-configure, .github/skills/insurance-brokerage-agency-billing-configure and .opencode/skills/insurance-brokerage-agency-billing-configure in your project.
Going by SKILL.md and its folder, Insurance Brokerage Agency Billing Configure needs credentials named INVALID_CROSS_REFERENCE_KEY.
SKILL.md names 1 domain. In commands or code: soap.sforce.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Insurance Brokerage Agency Billing Configure is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 11k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Insurance Brokerage Agency Billing Configure: Odoo Month End Close (erpipe-org/mcp-odoo, 421 stars), Salesforce Core Workflow A (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Salesforce Core Workflow B (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and Salesforce Deploy Integration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
forcedotcom (a GitHub organization) maintains it in forcedotcom/sf-skills, which has 1,067 GitHub stars. The repository holds 252 skills in this directory. The repository was last updated on October 9, 2026.
Source: forcedotcom/sf-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.