Donor Opportunity (akoya_donoropportunities)¶
A Donor Opportunity is a tracked cultivation engagement or planned-giving prospect — the pipeline record for a potential gift at various stages (identification through stewardship). It captures projected and actual commitments, vehicle (bequest, insurance, etc.), and timeline markers (target close date, maturity, follow-up).
At a glance
| Display name | Donor Opportunity |
| Logical name | akoya_donoropportunities |
| Primary ID attribute | akoya_donoropportunitiesid |
| Entity set name (Web API) | akoya_donoropportunitieses |
| Ownership | UserOwned |
| Change tracking | Enabled |
| Audit | Enabled |
Entity set name
The entity set name is akoya_donoropportunitieses (the logical name ends in "ies" already, so Dataverse pluralizes to "ieses"). Verify against the live Web API before hardcoding.
Web API¶
GET {org}/api/data/v9.2/akoya_donoropportunitieses
GET {org}/api/data/v9.2/akoya_donoropportunitieses({oppid})
POST {org}/api/data/v9.2/akoya_donoropportunitieses
PATCH {org}/api/data/v9.2/akoya_donoropportunitieses({oppid})
Attributes¶
Core¶
| Display name | Logical name | Type | Required | Description |
|---|---|---|---|---|
| Stage | akoya_stage |
Choice | None | Cultivation pipeline stage. See values. |
| Opportunity Type | akoya_opportunitytype |
Choice | None | Promise vs. opportunity classification. |
| Promise Type | akoya_promisetype |
Choice | None | Global option set. |
| Revocable | akoya_revocable |
Choice | None | Global option set. |
| Vehicle | akoya_vehicle |
Multi-select choice | None | Planned-giving vehicles (bequest, life insurance, etc.). |
| Inclination | akoya_inclinat |
Choice | None | Propensity-to-give rating. |
Amounts¶
All money columns have paired _Base columns.
| Display name | Logical name | Description |
|---|---|---|
| Estimated Commitment | akoya_estimatedcommitment |
Projected gift amount. |
| Actual Commitment | akoya_actualcommitment |
Amount actually committed. |
| Promise Amount | akoya_promiseamount |
Promised amount on documentation. |
| Remainder Value | akoya_remaindervalue |
Remainder interest value. |
Dates¶
| Display name | Logical name | Type |
|---|---|---|
| Target Close Date | akoya_targetclosedate |
DateTime |
| Actual Close Date | akoya_actualclosedate |
DateTime |
| Maturity Date | akoya_maturitydate |
DateTime |
| Follow Up Date | akoya_followupdate |
DateTime |
Lookups¶
| Logical name | Target | Purpose |
|---|---|---|
akoya_donor |
akoya_donor |
Required. Donor being cultivated. |
akoya_fund |
akoya_fund |
Intended destination fund. |
akoya_gift |
akoya_gift |
Resulting gift, once the opportunity closes. |
akoya_committee |
akoya_committee |
Committee overseeing the opportunity. |
akoya_event |
akoya_event |
Source event. |
Choice values¶
akoya_stage values¶
| Label | Value |
|---|---|
| Identification | 100000000 |
| Qualification | 100000001 |
| Cultivation | 100000002 |
| Solicitation | 100000003 |
| Stewardship | 100000004 |
Supported messages¶
| Message | Supported |
|---|---|
| Create | ✓ |
| Retrieve | ✓ |
| RetrieveMultiple | ✓ |
| Update | ✓ |
| Delete | ✓ |
| Upsert | — (no alternate keys; use GET then PATCH) |
Examples¶
Conventions
Examples assume ORG (env URL), access_token (valid bearer), headers (standard Dataverse headers dict), and service (a ServiceClient instance). See Authentication.
Active opportunities by stage¶
GET {org}/api/data/v9.2/akoya_donoropportunitieses?
$select=akoya_stage,akoya_estimatedcommitment,akoya_targetclosedate&
$filter=statecode eq 0 and akoya_stage eq 100000003&
$expand=akoya_Donor($select=akoya_formaldefault),akoya_Fund($select=akoya_fundname)&
$orderby=akoya_targetclosedate asc
Accept: application/json
OData-Version: 4.0
OData-MaxVersion: 4.0
curl "https://{org}.crm.dynamics.com/api/data/v9.2/akoya_donoropportunitieses?\$select=akoya_stage,akoya_estimatedcommitment,akoya_targetclosedate&\$filter=statecode%20eq%200%20and%20akoya_stage%20eq%20100000003&\$expand=akoya_Donor(\$select=akoya_formaldefault),akoya_Fund(\$select=akoya_fundname)&\$orderby=akoya_targetclosedate%20asc" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json" \
-H "OData-Version: 4.0" \
-H "OData-MaxVersion: 4.0"
r = requests.get(
f"{ORG}/api/data/v9.2/akoya_donoropportunitieses",
params={
"$select": "akoya_stage,akoya_estimatedcommitment,akoya_targetclosedate",
"$filter": "statecode eq 0 and akoya_stage eq 100000003",
"$expand": "akoya_Donor($select=akoya_formaldefault),akoya_Fund($select=akoya_fundname)",
"$orderby": "akoya_targetclosedate asc",
},
headers=headers,
)
opportunities = r.json()["value"]
var query = new QueryExpression("akoya_donoropportunities") {
ColumnSet = new ColumnSet("akoya_stage", "akoya_estimatedcommitment", "akoya_targetclosedate"),
Criteria = {
Conditions = {
new ConditionExpression("statecode", ConditionOperator.Equal, 0),
new ConditionExpression("akoya_stage", ConditionOperator.Equal, 100000003)
}
},
Orders = { new OrderExpression("akoya_targetclosedate", OrderType.Ascending) }
};
var opportunities = service.RetrieveMultiple(query);
Change history¶
Schema extracted from the Akoyanet solution XML on 2026-04-24. Global option sets (akoya_promisetype, akoya_revocable, akoya_vehicle) are pending the Phase 2 metadata generator.