本文へ移動
cccskills
無料GitHub で公開

grant-management-setup

Use when configuring grant tracking in a Salesforce nonprofit org: NPSP Outbound Funds Module (open-source outfunds managed package) or Nonprofit Cloud for Grantmaking (separate license). Trigger keywords: grant management, funding awards, disbursement tranches, grantmaking setup, OFM, FundingAward, FundingDisbursement, FundingAwardRequirement. NOT for recording donor gifts and receipts, use admin/gift-entry-and-processing. NOT for reporting program outcomes to a funder, use admin/program-outcome-tracking-design.

インストール方法を見る

含まれるファイル(7)

  • SKILL.md16.5 KB
  • references/examples.md11.2 KB
  • references/gotchas.md12.1 KB
  • references/llm-anti-patterns.md7.8 KB
  • references/well-architected.md7.5 KB
  • scripts/check_grant_management_setup.py9.8 KB
  • templates/grant-management-setup-template.md5.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Grant Management Setup

This skill activates when a practitioner needs to configure grant tracking in a Salesforce nonprofit org. It covers both available platform paths — NPSP Outbound Funds Module (OFM) and Nonprofit Cloud for Grantmaking — and provides the decision logic, object model orientation, and configuration steps for each.


Before Starting

Gather this context before working on anything in this domain:

  • Which platform is installed? Check Installed Packages for npsp (NPSP), outfunds (Outbound Funds Module), and the Grants Management managed package, and check Setup > Grantmaking Settings. These products do not share objects. Do not mix guidance between them.
  • Is Grantmaking licensed and turned on? Grantmaking objects need the Grantmaking licence, the feature turned on, and the Manage Funding Awards system permission. Turning Grantmaking on cannot be undone (references/gotchas.md, Gotchas 1 and 2).
  • What is the disbursement model? Single payment or scheduled tranches. Both products model tranches: FundingDisbursement in Grantmaking, outfunds__Disbursement__c in Outbound Funds.
  • Which deliverables gate which payments? Both products have a requirement object that can point at a disbursement: FundingAwardRequirement.FundingDisbursementId and outfunds__Requirement__c.Disbursement__c. (Corrected: an earlier version said Outbound Funds has no deliverable-tracking object.)

Questions to Ask Before Configuring

Each question traces to a gotcha in references/gotchas.md.

QuestionWhy it mattersWhat a good answer addsWhat proper configuration adds over just doing it
"Which grants product is installed or licensed today: Outbound Funds, Grants Management, or Grantmaking?"The products share no objects, and Grantmaking cannot be turned off once on (Gotcha 1)A named platform path, confirmed from installed packages and SetupNo automation is built against objects the org does not have
"Who needs to create awards, who reviews reports, and do grantees use a portal?"Access needs the licence, the feature, and Manage Funding Awards; portals use a separate permission set (Gotcha 2)A permission set group per persona, including Experience Cloud usersUsers see the objects on day one without hand-built permissions
"Which requirement status means what: the grantee's state, the review decision, or both?"Requirements carry Status and ApprovalStatus, and Rejected is standard (Gotcha 3)A field-meaning table and the standard values in useReports and automation read the same field for the same question
"Which payments wait for which reports, and who releases them?"The requirement-to-disbursement link exists, but enforcement is your automation (Gotcha 5)Requirement-to-tranche mapping and a release ruleA tranche cannot be marked Paid before its report is approved
"Do applications come through Individual Application or the Spring '26 Application Form model?"Individual Application gets no future enhancements and needs an Application RecordType Config (Gotcha 7)A chosen application model and its record type setupNew programmes start on the model that will keep improving
"How are amendments and multi-year terms recorded?"One agreement is one award with master-detail tranches; changes go on amendments (Gotcha 8)An amendment process and the award Status ruleCommitted totals report once, not once per tranche

What proper configuration adds over "just creating awards": one award per agreement with its tranches and requirements as children, statuses whose meaning is written down, and payment release tied to the reports that should gate it.


Core Concepts

Platform Path 1: NPSP Outbound Funds Module (OFM)

The Outbound Funds Module is a managed package, namespace outfunds, published as "a community developed and maintained Open Source Commons project." Its objects are Funding_Program__c, Funding_Request__c, Funding_Request_Role__c, Disbursement__c, Requirement__c, and Review__c. A grant is a Funding Request (with Requested_Amount__c, Awarded_Amount__c, Status__c, term dates, and rollups such as Total_Disbursed__c); disbursements and requirements are its children, and a requirement can look up the disbursement it relates to. An NPSP extension package (outfundsnpspext) links disbursements to NPSP General Accounting Units through GAU_Expenditure__c.

Key constraints of OFM:

  • Status fields are package picklists; transitions are not governed by the platform.
  • Support comes from the Open Source Commons community, not a Salesforce product line.
  • OFM is not compatible with Grantmaking objects: moving between them is a data transformation.
  • (Corrected: the earlier text said OFM ties grants to the Opportunity through a lookup and has no requirement object; the package source shows neither an Opportunity field on Funding_Request__c nor a missing requirement object.)

Platform Path 2: Nonprofit Cloud for Grantmaking (Grantmaking)

Grantmaking is a platform feature available in Nonprofit Cloud for Grantmaking and Public Sector Solutions. Its standard objects include FundingOpportunity, FundingAward, FundingAwardAmendment, FundingDisbursement, FundingAwardRequirement, FundingAwardRqmtSection, Budget and related budget objects, and the application objects. The three objects most grant setups touch:

ObjectKey fieldsNotes
FundingAwardAmount (total award), AwardeeId (business or person account), ContactId, FundingOpportunityId, IndividualApplicationId or ApplicationFormId, StartDate, EndDate, Status (Active, Cancelled, Completed)One record per grant agreement
FundingDisbursementFundingAwardId (master-detail), Amount, ScheduledDate, DisbursementDate, IsApproved, PaymentMethodType, Status (Scheduled, Pending Approval, Approved, Processing, Paid, Returned, Cancelled)A payment "made or scheduled to be made"; no Draft value
FundingAwardRequirementFundingAwardId (master-detail), FundingDisbursementId, Type (Combined Report, Contract, Financial Report, Narrative Report), DueDate, AssignedContactId, AssignedUserId, Status (Open, In Progress, Submitted, Delayed, Approved, Rejected), ApprovalStatus (New, In Review, Approved, Rejected), IsSubmitted, SubmittedDateA deliverable or milestone for an award or a disbursement

These are standard objects without package prefixes, available only with the Grantmaking licence, Grantmaking turned on, and the Manage Funding Awards permission. UNVERIFIED (2026-10-03): the earlier statement that Grantmaking is "part of the Agentforce Nonprofit product line as of 2024" was not found in a fetched source.

Requirement Status Model

The earlier version of this skill described a fixed Open, Submitted, Approved lifecycle with no Rejected state; the NPC Guide documents six Status values and a separate ApprovalStatus. A workable convention: Status tracks where the deliverable is (Open, In Progress, Submitted, Delayed), and the reviewer's decision is recorded both in ApprovalStatus (In Review, Approved, Rejected) and by moving Status to Approved or Rejected. A rejected deliverable goes back to Open or In Progress for resubmission, with feedback in Description. Document whichever convention you choose.

Architectural Incompatibility Between Platforms

OFM and Grantmaking share no common objects, no shared APIs, and no native migration path. An org moving from OFM to Grantmaking must:

  1. Transform outfunds__Funding_Request__c → FundingAward
  2. Transform outfunds__Disbursement__c → FundingDisbursement
  3. Transform outfunds__Requirement__c → FundingAwardRequirement, mapping Status__c and Type__c values to the standard picklists
  4. Re-map all Flows, reports, and automation that reference OFM API names

This is a data migration project, not a configuration toggle.


Common Patterns

Pattern: Multi-Tranche Disbursement Schedule in Grantmaking

When to use: The award pays in several scheduled tranches and the org uses Grantmaking.

How it works:

  1. Create one FundingAward with Amount = the total award, AwardeeId = the grantee account, and Status = Active.
  2. Create one FundingDisbursement per tranche with Amount, a future ScheduledDate, and Status = Scheduled.
  3. Move each tranche through Pending Approval, Approved, Processing, and Paid, setting DisbursementDate when paid.
  4. Set FundingAward.Status to Completed when every tranche is Paid or Cancelled (a Flow can do this).

Why not the alternative: Do not model tranches as separate FundingAward records: this breaks parent-child reporting and duplicates requirements.

Pattern: Deliverable Tracking and Payment Gating With FundingAwardRequirement

When to use: Grantees must submit reports before later tranches are released.

How it works:

  1. At award setup, create one FundingAwardRequirement per deliverable with Type, DueDate, AssignedContactId (grantee) or AssignedUserId, Status = Open, and FundingDisbursementId = the tranche it gates.
  2. When the grantee submits, set IsSubmitted, SubmittedDate, and Status = Submitted; notify the grants manager.
  3. The reviewer sets ApprovalStatus and Status to Approved or Rejected.
  4. Enforce the gate: validation rules for same-record rules, and a record-triggered flow on FundingDisbursement that blocks Status = Paid while any requirement pointing at it is not Approved (references/examples.md, Example 3).

Why not the alternative: Tasks or Chatter posts produce no structured data, cannot be reported in aggregate, and cannot gate automation.


Decision Guidance

SituationRecommended ApproachReason
Org is on NPSP, no Grantmaking licenceOutbound Funds Module (plus outfundsnpspext for GAU accounting)Purpose-built package with requests, disbursements, and requirements
Org has the Grantmaking licenceGrantmaking (FundingAward, FundingDisbursement, FundingAwardRequirement)Standard objects, applications, budgets, amendments, Experience Cloud components
Org is on Nonprofit Cloud but Grantmaking is NOT licensedDo not use Grantmaking objects; evaluate OFM or buy the licenceThe objects are not accessible without the licence
Org has the Grants Management managed packageDo not turn on Grantmaking in that org without a planSalesforce recommends against running both; Grantmaking cannot be turned off
Org needs to migrate from OFM to GrantmakingFull data transformation projectNo native migration path
New nonprofit org evaluating Salesforce for grantmakingGrantmaking on the Spring '26 Application Form modelNo migration cost; the model receiving enhancements

Recommended Workflow

  1. Identify the platform path: Confirm installed namespaces (npsp, outfunds, Grants Management) and the Grantmaking licence; do not proceed until the path is unambiguous.
  2. Assess grant requirements: Document tranches, deliverables and the tranches they gate, grantee portal access, application model, and reporting needs. Match them to the decision table above.
  3. Turn on and grant access: For Grantmaking: Setup > Quick Find "Grantmaking" > Grantmaking Settings > turn on (irreversible); assign Grantmaking Manager (and Grantmaking for Experience Cloud for portal users) through permission set groups; configure the application model and, for Individual Application, the Application RecordType Config.
  4. Configure the data model: Page layouts, field sets, and record types for awards, disbursements, and requirements; write down the requirement status convention.
  5. Build lifecycle automation: Validation rules for same-record rules and a record-triggered flow for the disbursement gate (references/examples.md, Example 3); a flow to complete awards.
  6. Validate end to end and document: Create a test award with tranches and requirements, walk every status, confirm reports, then record the platform path, picklist conventions, and automation for future support and migrations.

Review Checklist

Run through these before marking work in this area complete:

  • Platform path (OFM vs. Grantmaking vs. Grants Management) is confirmed in writing, not assumed
  • Grantmaking licence, feature switch, and Manage Funding Awards permission are verified if Grantmaking objects are in use
  • FundingDisbursement tranches are children of the correct FundingAward (not separate awards)
  • Requirement status convention (Status and ApprovalStatus) is documented and automation follows it
  • Gating requirements reference their tranche through FundingDisbursementId, and a Paid tranche cannot bypass them
  • No OFM API names (outfunds__) appear in automation built for Grantmaking, and vice versa
  • Reports and dashboards reference the correct object set for the chosen platform

Salesforce-Specific Gotchas

The full list with sources is in references/gotchas.md. The ones that most often break a grants setup:

GotchaConsequence
Three different grants products; Grantmaking cannot be turned off (Gotcha 1)Enabling it in the wrong org is permanent and confuses users
Two requirement status fields, with Rejected standard (Gotcha 3)The earlier "Open, Submitted, Approved only" model was wrong; reports disagree if fields are mixed
Disbursement statuses have no Draft (Gotcha 4)Automation built on Draft never fires; use Scheduled

Output Artifacts

ArtifactDescription
Platform path decision recordWritten confirmation of OFM vs. NC Grantmaking choice, with licensing and requirement rationale
FundingAward / OFM Funding Request configurationPage layouts, field sets, record types, and picklist values for the chosen platform
FundingDisbursement tranche setupDisbursement records per award with scheduled dates and status automation
FundingAwardRequirement workflowRequirement records, status lifecycle automation, and disbursement gating logic
Grant management reports and dashboardsStandard reports on award pipeline, disbursement schedule, and requirement completion

Related Skills

  • npsp-vs-nonprofit-cloud-decision — Use this skill first if the org has not yet decided between NPSP and Nonprofit Cloud; this grant skill assumes the platform path is already determined
  • npsp-program-management — For tracking program delivery funded by grants (PMM Service Delivery vs. grant award records are separate data stacks)
  • gift-entry-and-processing — For donor gift processing in NPSP; grant awards are not the same as donor gifts and use different objects

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use this skill when writing test-first, behavior-driven acceptance criteria in Given/When/Then format for a Salesforce user story. Covers happy path, edge cases, negative paths, permission boundaries, and data-state preconditions so the AC block can drive UAT scripts and Apex test design downstream. Trigger keywords: given when then, gherkin, behavior driven AC, test first acceptance criteria, scenario outline, BDD acceptance criteria. NOT for the user-story format itself (use admin/user-story-writing-for-salesforce). NOT for UAT script writing (use admin/uat-test-case-design). NOT for Apex test method generation (use agents/test-class-generator). NOT for high-level UAT planning (use admin/uat-and-acceptance-criteria). More triggers: acceptance criteria record, ac_id, req_id on a criterion, artefact under test, negative case for a rule-type requirement, no-match fall-through criterion, oracle for a Then clause, test type apex flow manual, criteria linter, check_ac_format.py, --manifest-dir.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Task and Event objects: polymorphic WhatId/WhoId, Activity object model, ActivityHistory vs OpenActivity, activity timeline customization, bulk task creation, Einstein Activity Capture boundaries. NOT for turning on EAC or calendar sync — use admin/einstein-activity-capture-setup. NOT for Email-to-Case — use admin/case-management-setup. Covers ActivitiesSettings metadata, enableActivities, shared Task/Event custom fields and FLS, TaskStatus value sets, Shared Activities and TaskRelation/EventRelation, recurring and child activities, and partial-success bulk DML on Task.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Design Invocable Apex actions that return deterministic, agent-friendly errors instead of surfacing raw exceptions to the LLM. NOT for authoring the action itself — @InvocableMethod schema, labels, security context — use agentforce/custom-agent-actions-apex. NOT for the Apex tests that force each error branch — use agentforce/agent-action-unit-tests.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Use when designing how an Agentforce agent extracts structured input parameters (slots) from a user's natural-language utterance to invoke an action. Triggers: 'agent extract date from user', 'agent action argument extraction', 'agentforce slot filling', 'agent invocable input mapping', 'agent fails to fill required parameter'. NOT for action authoring (use agentforce/agent-actions) or for prompt-template variable binding (use agentforce/prompt-builder-templates).

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Apex test patterns for @InvocableMethod agent actions: per-reason-code branch coverage, bulk safety, callout mocking, deterministic assertions. NOT for testing whether the agent routes to the right topic or answers well — use agentforce/agent-testing-and-evaluation. NOT for designing the error envelope the tests assert on — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Designing or reviewing Agentforce actions: Flow actions, Apex invocable actions, prompt-template actions, action naming, input and output contracts, confirmation requirements, and safe error behavior. Triggers: 'agent actions', 'build an agent that can look up an order', 'make the agent able to check order status', 'give the agent a capability', 'agent that can retrieve a record', 'flow action for agent', 'agent invocable action', 'action schema design'. NOT for writing the Apex class itself — use agentforce/custom-agent-actions-apex. NOT for the reason_code error envelope that stops an agent retry loop — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

PranavNagrecha のスキルをすべて見る

このスキルの問題を報告する