Attention: Confluence is not suitable for the storage of highly confidential data. Please ensure that any data classified as Highly Protected is stored using a more secure platform.
If you have any questions, please refer to the University's data classification guide or contact ict.askcyber@sydney.edu.au
TAP-253 - MS - Column header in their List View called Action - calculated field
REQUIREMENTS
GA require a way to filter gifts in their List View (queue) based on whether they can action it or not
They have proposed a field on the GA consolidate screen that will display the status of a particular GIN object, as being ready to enter or held back for some reason, called ‘Status’
Below are the combinations of different statuses
Funding Type | Funding Sub Type | Funds Received | Supporting Documentation | Status |
Philanthropic grant (Research) | New Philanthropic Grant(Pledge) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Philanthropic grant (Research) | New Philanthropic Grant(Pledge) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Philanthropic grant (Research) | New Philanthropic Grant(Pledge) | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Philanthropic grant (Research) | New Philanthropic Grant(Pledge) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Philanthropic grant (Non Research) | New Philanthropic Grant(Pledge) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Philanthropic grant (Non Research) | New Philanthropic Grant(Pledge) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Philanthropic grant (Non Research) | New Philanthropic Grant(Pledge) | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Philanthropic grant (Non Research) | New Philanthropic Grant(Pledge) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | New One off Gift | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | New One off Gift | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | New Pledge | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | New Pledge | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(one Off) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(Pledge) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(one Off) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(Pledge) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | New One off Gift | Funds Received:No | Supporting Documentation:Yes | Held:Awaiting Funds |
Gift to USYD (Affiliated Org) | New One off Gift | Funds Received:No | Supporting Documentation:No | Held: Awaiting Funds and Signed Docs |
Gift to USYD (Affiliated Org) | New Pledge | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | New Pledge | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(one Off) | Funds Received:No | Supporting Documentation:Yes | Held:Awaiting Funds |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(Pledge) | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(one Off) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Funds and Signed Docs |
Gift to USYD (Affiliated Org) | Supplementary Top Up Gift(Pledge) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | New One off Gift | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | New Pledge | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | Supplementary Top Up Gift(one Off) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | Supplementary Top Up Gift(Pledge) | Funds Received:Yes | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | New One off Gift | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | New Pledge | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | Supplementary Top Up Gift(one Off) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | Supplementary Top Up Gift(Pledge) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | Supplementary Top Up Grant(Pledge) | Funds Received:Yes | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | New One off Gift | Funds Received:No | Supporting Documentation:Yes | Held:Awaiting Funds |
Gift to USYD | New Pledge | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | Supplementary Top Up Gift(one Off) | Funds Received:No | Supporting Documentation:Yes | Held:Awaiting Funds |
Gift to USYD | Supplementary Top Up Gift(Pledge) | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | New One off Gift | Funds Received:No | Supporting Documentation:No | Held: Awaiting Funds and Signed Docs |
Gift to USYD | New Pledge | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | Supplementary Top Up Gift(one Off) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Funds and Signed Docs |
Gift to USYD | Supplementary Top Up Gift(Pledge) | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Gift to USYD | Gift In Kind | Funds Received:No | Supporting Documentation:Yes | Ready to enter |
Gift to USYD | Gift In Kind | Funds Received:No | Supporting Documentation:No | Held: Awaiting Signed Docs |
Minor Modification to description in funding sub-type picklist as set out below
Changes to Picklist values | Note: Sub-Type picklist field is at Opportunity level |
Supplementary Top Up Gift | divide in two (one off gift and pledge)
Create new picklist values:
Supplementary Top Up Gift (Pledge)
Supplementary Top Up Gift (One Off Gift)
Note: Don’t deactivate the existing value “Supplementary Top Up Gift” yet once the business review existing one with the value they will update to new values.
|
New Philanthropic Grant | Add (Pledge) to description
Update the existing value “New Philanthropic Grant” to “New Philanthropic Frant Pledge” |
Supplementary Top Up Grant | Add (Pledge) to description
Update the existing value “Supplementary Top Up Grant” to “Supplementary Top Up Grant Pledge”
|
IMPLEMENTATION
Requirement #1 - Minor Modification to description in Sub-type <AQC_Sub_type__c> picklist in Opportunity object
Created the 2 new picklist values:
Supplementary Top Up Gift (Pledge)
Supplementary Top Up Gift (One Off Gift)
Deployment Note: Include the picklist assignment to the 3 Opportunity record types [Gift/Pledge, Gift in Will, Unsolicited]
2. Update the existing picklist labels below:
“New Philanthropic Grant” to “New Philanthropic Grant (Pledge)”
“Supplementary Top Up Grant” to “Supplementary Top Up Grant (Pledge)”
Requirement #2 - GA requires a way to filter gifts in their List View (queue) based on whether they can action it or not. They have proposed a field on the GA consolidate screen that will display the status of a particular GIN object, as being ready to enter or held back for some reason, called ‘Status’.
Create a new picklist field called “Status” in Gift Implementation object having the following values:
Ready to enter
Held: Awaiting Funds and Signed Docs
Held: Awaiting Signed Docs
Held:Awaiting Funds
Held
Held-awaiting confirmation of banking name
2. Create a new metadata type called “Gift Implementation Status Matrix”
3. Create the 5 custom fields below in the new metadata
Funding Sub Type - Text(255)
Funding Type - Text(255)
Funds Received - Picklist
Yes
No
Supporting Documentation - Checkbox
Status - Picklist
Held: Awaiting Funds and Signed Docs
Held: Awaiting Signed Docs
Held:Awaiting Funds
Ready to enter
Held
Held-awaiting confirmation of banking name
4. Insert all the combinations as records in the metadata
5. Create a flow called “Update Gift Implementation Status” that will be triggered once the Gift Implementation object is created/updated having these components below:
Start - configure component to start executing when record is new or updated
Get Record - component that fetches a record from the metadata based on the following filter: Funding Sub Type, Funding Type, Funds Received and Supporting Documentation
Decision - component should be configured to only include gift implementation records that are newly created or any of these 4 fields (Funding type, funding sub-type, funds received and supporting document) being updated that calculate the status.
Note: This is to make the manual updating of the status applicable
Update Record - component will update the “Status” of the Gift Implementation record with the equivalent status coming from the fetched status from metadata record. This will only be executed if the decision is true (new gift implementation record or update on the record is only on those 4 fields)
6. Updated the Gift Implementation Status upon opportunity change of Funding type or Funding Sub-type, we need to create another automation (flow/trigger).
Note: Test class will be included if trigger automation is the final approach
7. Added the new field to the List view (GA Consolidate) in Gift Implementation object
8. Added the new field to the Gift Implementation Layout
UNIT TESTING STEPS
Scenarios
#1 Update the Funds Received or Supporting Doc Signed by Donor Received field to an existing Gift Implementation record
Log in as a GA (Gift Administration) user (user with this Permission Set Group: Gift_Administration)
Go to Gift Implementation tab
Select any Gift Implementation record
Update the Supporting Doc Signed by Donor Received → True and Save.
Expected Output: The Status field will be updated to “Ready to Enter” based on the fetched metadata record equivalent to the combination.
Actual Output: Status was updated to “Ready to Enter”.
#2 Create a new Gift Implementation record and check Status field
Log in as a GA (Gift Administration) user
Go to any existing Opportunity record
Create a new Related Gift Implementation record
Set the Funds Received? → No
Expected Output: A combination is found from the Metadata with these fields:
Funding Type: Gift to USYD
Funding Sub-Type: New Pledge
Funds Received?: No
Supporting Doc Signed by Donor Received: Not Check
Equivalent Status: Held: Awaiting Signed Docs
Actual Output: Status is set “Held: Awaiting Signed Docs” upon creation.
#3 [Negative Testing] Update the Type or Sub-type of the parent Opportunity of the Gift Implementation record
Log in as a GA (Gift Administration) user
Go to Gift Implementation tab
Select any Gift Implementation record
Open the parent Opportunity of the Gift Implementation
Update the Type of the opportunity into a no-combination Status from the metadata records
Expected Output: As there is no equivalent combination of Funding Type ( Philanthropic grant (Non Research)) and Sub-type (New Pledge) from the Metadata, the Status of the Gift Implementation record will be blank.
Actual Output: Status field from Gift Implementation record is Blank.
COMPONENTS ADDED/MODIFIED
Component Name | API Name | Type | Parent Object | Operation (New/Update) |
Usyd_Opportunity_BeforeInsert | Usyd_Opportunity_BeforeInsert | Trigger | Opportunity | Update |
Usyd_OpportunityTriggerHandler | Usyd_OpportunityTriggerHandler | Apex Class | N/A | New |
Usyd_OpportunityTriggerHandlerTest | Usyd_OpportunityTriggerHandlerTest | Apex Class | N/A | New |
Usyd_Update Gift Implementation Status | Usyd_Update_Gift_Implementation_Status | Flow | Gift Implementation | New |
Gift Implementation Status Matrix | Gift_Implementation_Status_Matrix__mdt | Metadata | N/A | New |
Status | Status__c | Field | Gift Implementation | New |
Sub-type | AQC_Sub_type__c | Field | Opportunity | Update |
Gift Implementation Status | Gift_Implementation_Status | Global Value Set | N/A | New |
GA Consolidate | GA_Consolidate | List View | Gift Implementation | Update |
Gift Implementation Layout | Gift Implementation Layout | Page Layout | Gift Implementation | Update |
Gift/Pledge | Gift/Pledge | Record Type | Gift Implementation | Update |
Gifts in Will | Gifts in Will | Record Type | Gift Implementation | Update |
Unsolicited | Unsolicited | Record Type | Gift Implementation | Update |
AQC Opportunity to Gift | AQC_Opportunity_to_Gift | Permission Set | N/A | Update |
Combination01 | Combination01 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination02 | Combination02 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination03 | Combination03 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination04 | Combination04 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination05 | Combination05 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination06 | Combination06 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination07 | Combination07 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination08 | Combination08 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination09 | Combination09 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination10 | Combination10 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination11 | Combination11 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination12 | Combination12 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination13 | Combination13 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination14 | Combination14 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination15 | Combination15 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination16 | Combination16 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination17 | Combination17 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination18 | Combination18 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination19 | Combination19 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination20 | Combination20 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination21 | Combination21 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination22 | Combination22 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination23 | Combination23 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination24 | Combination24 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination25 | Combination25 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination26 | Combination26 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination27 | Combination27 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination28 | Combination28 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination29 | Combination29 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination30 | Combination30 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination31 | Combination31 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination32 | Combination32 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination33 | Combination33 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination34 | Combination34 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination35 | Combination35 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination36 | Combination36 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination37 | Combination37 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination38 | Combination38 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination39 | Combination39 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination40 | Combination40 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination41 | Combination41 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination42 | Combination42 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination43 | Combination43 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination44 | Combination44 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination45 | Combination45 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination46 | Combination46 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination47 | Combination47 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination48 | Combination48 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination49 | Combination49 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination50 | Combination50 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
Combination51 | Combination51 | Custom Metadata Type Record | Gift_Implementation_Status_Matrix__mdt | New |
PRE DEPLOYMENT STEPS
Extract report in PROD for Opportunities with Sub-type "Supplementary/Top Up Gift" with the following fields:
ID
Name
Stage
Sub-type
Rename the existing picklist values:
Existing Value | Rename | Purpose |
---|---|---|
New Philanthropic Grant (Pledge) | New Philanthropic Grant | To make way for the update of picklist api names. This will be deactivated once the new picklist api names will be deployed |
Supplementary Top Up Grant (Pledge) | Supplementary Top Up Grant | To make way for the update of picklist api names. This will be deactivated once the new picklist api names will be deployed |
POST DEPLOYMENT STEPS - Removed as this is done as part of deployment
Note: As Gift/Pledge record type is a managed packaged, we cannot update the picklist values from the CI/CD or metadata itself. Thus, this step will have to be performed manually.
Go to Setup and Object Manager
Open Opportunity Object
Select record types
Under Picklists Available for Editing section, click Edit button beside the Sub-type field
Add the following picklist values to the Selected Values section
Supplementary Top Up Gift (Pledge)
Supplementary Top Up Gift (One Off Gift)
Since the renaming of the API names of the picklist values are treated as new picklists to the Sub-type field in Opportunity object, We also need to manually add the new picklist values in the Gift/Pledge record type.
6. Add the following picklist values to the Selected Values section
a. New Philanthropic Grant (Pledge)
b. Supplementary Top Up Grant (Pledge)