International Aid Transparency Initiative (IATI) Publishing: Customization Options
This page covers:
Related Pages:
International Aid Transparency Initiative (IATI) Publishing - Data Entry & Management
Overview of IATI Publishing with Amp Impact
IATI Publishing in Amp Impact allows organisations to take its impact and transaction data in Amp Impact, generate an IATI standard XML file. In this guide, we’ll cover the five steps to set up IATI Publishing in Amp Impact:
IATI Field & Object Permission Configuration
For users to generate their IATI XML file through Amp Impact, they will need additional permissions to ensure they have access to the data relevant to IATI reporting. This access is not provided out-of-the-box for all Amp Impact users.
Enable XML Generation from Accounts
Since Account is a central object from which both the IATI Organisation and IATI Activity XMLs will be generated, some setup on the Account object is required to enable XML generation.
[Optional] Set Defaults for IATI XMLs
Save time with data entry if there is only one reporting organisation by setting the organisation’s details as the default for all the generated IATI files.
IATI Terminology Overview
Before we get into the weeds, let’s align on a couple of IATI-specific terms.
Term | Description |
---|---|
The International Aid Transparency Initiative (IATI) is a global initiative to improve the transparency of development and humanitarian resources and their results to address poverty and crises. | |
The IATI organisational standard is used to describe one or more organisations involved in any stage development cooperation (funding, implementing, etc.). It is designed to report forward-looking aggregate budget information for the reported organisations, and planned future budgets to recipient institutions or countries. The IATI organisational standard is also used to report links to relevant public documents. Organizations publish this data in an organisation file. It is expected that every organisation publishing IATI data should include one organisation file, which is updated at least annually. | |
The IATI activity standard is designed for reporting the details of individual development cooperation activities/projects. An activity is defined by the reporting organisation. Depending on who is reporting, it might be a large program, a small project, or another logical grouping of work and resources. The IATI activity standard is the most widely used part of IATI. The activity standard supports around forty different fields, referenced by standard codelists, and designed to capture information about many different kinds of aid activities. Organisations publish this data in an activity file. It is expected that every organisation publishing IATI data should include one or more activity files. An activity file can detail one or many activities, and an organisation can publish one or many files. |
IATI Field & Object Permission Configuration
IATI field- and object-level access is not assigned out-of-the-box and there are a few configuration steps to ensure that the right users have the access and permissions they need to manage the IATI publishing process.
Assign IATI Permission Set to IATI Users
Amp Impact comes with the “IATI Full Access” permission set that can be assigned to users that need access to all the related IATI fields and object. To assign this permission set, first enable the IATI feature and then follow these steps to assign the permission set:
Go to the Setup Quick Search box, and enter “Permission Sets”.
Select the “IATI Full Access” Permission Set.
Click the “Manage Assignments” button.
Click the “Add Assignments” button.
Select all relevant users that should have access to the IATI Full Access Permission Set and click “Assign”.
If an IATI User does not need access to all IATI objects and fields, the IATI_Full_Access permission set can be cloned, and object/field permissions that are not necessary can be removed from the cloned permission set.
Add Permissions for IATI Fields to User Profiles/Custom Permission Sets
Due to a Salesforce limitation on packaging permissions for objects that are detail in a master-detail relationship to standard Salesforce objects, object- and field-level permission for ampi__Organization_Role__c and ampi__Project_Role__c must be assigned manually. There are two options for adding permissions to these objects:
Manually add these objects and fields to the relevant profiles;
[Recommended] Create a customer permission set to provide access to these objects and fields and assign this to the relevant users.
Below is the list of objects/fields for which permissions must be manually set:
Object | Field |
---|---|
ampi__Organization_Role__c | ampi__Organization__c |
ampi__Organization_Activity_Identifier__c | |
ampi__Role__c | |
ampi__Organization_Role__c | |
Name | |
ampi__Project__c | |
ampi__IATI_Providing_Project__c | |
ampi__Exclude_From_IATI__c | |
ampi__IATI_Role_Code__c | |
ampi__Project_Role__c | ampi__Active__c |
ampi__Contact__c | |
ampi__Description__c | |
ampi__End_Date__c | |
ampi__Project__c | |
Name | |
ampi__Role__c | |
ampi__Start_Date__c | |
ampi__Type__c | |
ampi__IATI_Contact_Type__c | |
ampi__Is_IATI_Reporter__c |
Enable “Customize Application” Permission for Direct Read Access to Custom Metadata Types
The “Customize Application” Permission is required for direct read access to Custom Metadata Types. This follows Salesforce’s rollout of the “secure by default” approach. For more information on its use in Amp Impact, see Set Defaults for IATI XMLs.
To grant a profile or permission set read access to a custom metadata type:
Go to the profile or permission set that you want to grant access to.
Under “Enabled Custom Metadata Type Access”, click Edit, as shown in the screenshot below.
Add the custom metadata type, “ampi.IATI Default Contact” and “ampi.IATI Default Reporting Org”, to the list of Enabled Custom Metadata Types.
To re-enable read access to custom metadata outside of Apex code or system mode contexts, see the following steps:
In Setup, navigate to “Schema Settings”.
Deselect “Restrict access to custom metadata types”.
Enable XML Generation from Accounts
Account is the central object from which both the IATI Organisation and IATI Activity XMLs will be generated. In order to generate the XML files, some setup is required on the Account page layout to enable Users to generate their IATI files.
Create/Customize Flow from Template
By default, Amp contains a Screen Flow that Users will interact with to:
Select whether they are creating the XML file according to the IATI Organisation Standard or the IATI Activity Standard,
If the XML is being generated according to the IATI Activity Standard, filter the Activities (ampi__Project__c records) that will be printed into the XML.
By default, the only filter that is available for use is to either display all records, or only records where ampi__Ready_For_IATI_Reporting__c = TRUE.
If the Screen Flow must be customized (e.g. text changed, filter options added), then this Flow can be cloned and modified for those customizations.
Customize Flow Filters (Activity Standard Only)
This step is only required if the filters for the Activity Standard XML in the Screen Flow need to be customized. In order to customize these filters, follow the steps below:
Go to Setup.
Type and select “Flows” in the QuickSearch menu.
Open the IATI_XML_Generation Flow in Flow Builder.
Modify the available filters in the Filter_IATI_Activities Screen element.
Ensure that the filter criteria is reflected in the Filtered_IATI_Activities Get Records element.
Click Save As.
In the Save screen, select to save as a New Flow.
Create Lightning Action to Launch Custom Flow
If a custom flow has been created for IATI XML generation, then a new Lightning Action must be created to launch that flow from an Account record.
Go to Setup.
Go to Object Manager.
In Object Manager, select Account.
Go to Buttons, Links, and Actions.
Click New Action to create a Flow Action, selecting the custom flow created. The Label and Name can be filled out per the use case.
(Required) Add Lightning Quick Action to Account Record Page
To ensure that Users can open the Flow that generates the IATI XML files, the Lightning Quick Action that launches the Flow must be added to the Account page layout.
Go to Setup.
Go to Object Manager.
In Object Manager, select Account.
Go to Page Layouts.
Click into the Page Layout that will be assigned to the Profile(s) of Users who will be generating XML files for IATI reporting.
In the top menu, select Mobile & Lightning Actions. From the options that appear, drag and drop Generate IATI XML into the page layout.
Click Save.
Set Defaults for IATI XMLs
Create Default Reporting Organisation
If only one organisation will be the reporting organisation for all the IATI XML files generated from a single Salesforce environment, the organisation’s details can be set as the default for all the IATI files so that the information does not need to be entered for each IATI Activity.
Open Setup.
Use the Quick Find search to find and open Custom Metadata Types.
Click “Manage Records” next to “IATI Default Reporting Org”.
In the list displayed, click the “New” button to create the IATI Default Reporting Organisation.
In the edit view:
Set the Label field to the name of the Organisation. When clicking out of the input box, this will automatically set the IATI Default Reporting Organisation Name.
Enter the IATI Organisation Identifier. This must be the unique Id provided by IATI to the reporting organisation. For more information on Organisation Identifiers, read here.
If no default Reporting Organisation is set, then the parent Organisation (Account) for an Activity (ampi__Project__c) will be printed as the Reporting Organisation for that Activity.
Create Default Contact
If there is only one individual whose contact information will be used for all IATI Activity XML files generated from a single Salesforce environment, that contact information can be set as the default for all the IATI files so that the information does not need to be entered for each IATI Activity file.
Open Setup.
Use the Quick Find search to find and open Custom Metadata Types.
Click “Manage Records” next to “IATI Default Contact”.
In the list displayed, click the “New” button to create the IATI Default Contact.
In the edit view:
Set the Label field to the name of the Contact. When clicking out of the input box, this will automatically set the IATI Default Contact Name.
Enter the IATI Organisation. This must be the text name of the Organisation to contact for more information about an Activity.
Enter the IATI Organisation Department.
All other fields are optional.
If no default Contact is set, then the related Contact (ampi__Project_Role__c) marked as the IATI Reporter (ampi__Is_IATI_Reporter__c = TRUE) for an Activity (ampi__Project__c) will be printed as the Contact for that Activity.
Set Up Environment for IATI Data Entry
Depending on the reporting requirements of an organisation, the default page layouts and field labels in Amp Impact can be modified to ensure that those requirements are met while creating or updating data.
Update Page Layouts to Include IATI Fields and Related Lists
The objects mentioned in the IATI Data Entry Mapping Sheet contain IATI-specific fields that can be printed into the generated XML file.
The fields in the IATI Data Entry Mapping Sheet need to be added into the respective page layouts so that values can be entered for IATI reporting.
Apart from the fields, there are some related lists that need to be added to some of the Objects. These can be found in the table below. Please make sure these can be found on the object page.
Object (API Name) | Related Lists (Child Object API Name) |
---|---|
Account |
|
ampi__Allocation__c |
|
ampi__Budget__c |
|
ampi__Disbursement__c |
|
ampi__Project__c |
|
ampi__Project_Indicator__c |
|
ampi__Organization_Role__c |
|
Add or Override Help Text for IATI Reporting
To support users in entering data required for IATI reporting, help text on all IATI-specific fields has been added by default. For fields that are not IATI-specific, help text may be added or modified to provide additional context to users, as indicated in the table below:
Object (API Name) | Field (API Name) | Suggested Help Text |
---|---|---|
ampi__Allocation__c | ampi__Internal_Code__c | Enter the internal reference linking this transaction back to the publisher’s financial management system. |
ampi__Disbursement__c | ampi__Internal_Code__c | Enter the internal reference linking this transaction back to the publisher’s financial management system. |
ampi__Disbursement__c | ampi__Status__c | Enter to capture the status of disbursement. If Status = Paid, this transaction will be printed as Incoming Funds (transaction type 1). If Status is not equal to1, this transaction is printed as a Planned Disbursement. |
ampi__Financial__c | ampi__Internal_Code__c | Enter the internal reference linking this transaction back to the publisher’s financial management system. |
ampi__Project__c | ampi__Description__c | Description type 1: Unstructured, long description of the activity. |
Translate Amp Terminology to IATI Terminology
Override Amp Labels with IATI Terms
Amp Impact and IATI use different terminology to describe different artifacts in M&E. The table below provides the default labels of objects and fields in Amp Impact, and their corresponding IATI term. Using Translation Workbench, organisations can override the default Amp labels with IATI terminology.
API Name | Amp Impact Label | Type of Artifact | IATI Term |
---|---|---|---|
ampi__Project__c | Project | Object label | Activity |
ampi__Catalog_Objective__c | Objective | Object label | Result |
ampi__Result__c | Result | Object label | Actual |
ampi__Organization_Role__c.ampi__Project__c | Project | Field label | IATI Receiving Activity |
ampi__Organization_Role__c.ampi__IATI_Providing_Project__c | IATI Providing Project | Field label | IATI Providing Activity |
Account | Account | Object label | Organisation |
ampi__Indicator__c.ampi__Data_Type__c | Data Type | Field label | Measure |
ampi__Project_Indicator__c.ampi__Data_Type__c | Data Type | Field label | Measure |
ampi__Disaggregation_Group__c | Disaggregation Group | Object label | Dimension |
ampi__Disaggregation_Value__c | Disaggregation Value | Object label | Dimension Value |
Add IATI Fields to Field Sets
To facilitate IATI data entry through Amp Impact, certain field sets can be modified to include IATI fields for population. Those field sets are listed below:
Object | Field Set Name | Functionality |
---|---|---|
ampi__Catalog_Objective__c | ADD_NEW_OBJECTIVE_POPUP | Add New Framework Item popup on ManageLogframes |
ampi__Disbursement__c | ADD_EDIT_POPUP | Add New Disbursement and Edit Disbursement popups on ManageDisbursements |
DISBURSEMENT_TABLE | Table columns on ManageDisbursements | |
ampi__Financial__c | BUDGET_EXCEL_COLUMNS | Columns in Excel spreadsheet downloaded from ampi__Budget__c |
REPORT_EXCEL_COLUMNS | Columns in Excel spreadsheet downloaded from ampi__Reporting_Period__c | |
ampi__Indicator__c | CATALOG_INDICATORS_TABLE | Columns in Indicator Catalog on ManageIndicators |
| INDICATOR_CATALOG_SEARCH_FILTER | Search filters in the Indicator Catalog on ManageIndicators |
ampi__Objective__c | EDIT_PROJECT_OBJECTIVE | Edit Framework Item popup on ManageLogframes |
LOG_FRAMES_TABLE | Table columns on ManageLogframes | |
ampi__Project__c | PROJECT_SUMMARY | Summary header on ManageDisbursements |
ampi__Project_Indicator__c | ADD_RESULTS_INFO_POPOVER | Hover popover on AddResults |
AR_SEARCH_FILTERS | Search filters on AddResults | |
DEACTIVATED_PROJECT_INDICATORS_TABLE | Columns in Deactivated Project Indicators table on ManageIndicators | |
EDIT_PROJECT_INDICATOR_POPUP | Edit Project Indicator popup on ManageIndicators | |
PROJECT_INDICATORS_SEARCH_FILTERS | Search filters in Selected Project Indicators and Deactivated Project Indicators tabs on ManageIndicators | |
SELECTED_PROJECT_INDICATORS_TABLE | Columns in Selected Project Indicators table on ManageIndicators | |
SET_TARGETS_INFO_POPOVER | Hover popover on AddResults | |
ST_SEARCH_FILTERS | Search filters on SetTargets |
Picklist Limitation for IATI Reporting
Due to the codes generated and printed into the IATI XML files by populating picklist fields, there is a limitation around customizing any of these fields. For any picklist field used for IATI reporting, the picklist values can only be edited in the Label and not in the API Name in order for the corresponding code to print correctly.
Find below the list of picklist fields used in IATI reporting with this limitation:
Object | Field |
---|---|
Account | ampi__IATI_Organization_Type__c |
ampi__Allocation__c
| ampi__IATI_Aid_Type__c |
ampi__IATI_Aid_Type_Vocabulary__c | |
ampi__IATI_Disbursement_Channel__c` | |
ampi__IATI_Finance_Type__c | |
ampi__IATI_Flow_Type__c | |
ampi__IATI_Tied_Status__c | |
ampi__Budget__c | ampi__IATI_Budget_Status__c |
ampi__IATI_Vocabulary__c | |
ampi__Disbursement__c | ampi__IATI_Aid_Type__c |
ampi__IATI_Aid_Type_Vocabulary__c | |
ampi__IATI_Disbursement_Channel__c | |
ampi__IATI_Finance_Type__c | |
ampi__IATI_Flow_Type__c | |
ampi__IATI_Tied_Status__c | |
ampi__Status__c | |
ampi__Financial__c | ampi__IATI_Aid_Type__c |
ampi__IATI_Aid_Type_Vocabulary__c | |
ampi__IATI_Disbursement_Channel__c | |
ampi__IATI_Finance_Type__c | |
ampi__IATI_Flow_Type__c | |
ampi__IATI_Tied_Status__c | |
ampi__IATI_Policy__c | ampi__Policy_Marker__c |
ampi__Policy_Significance__c | |
ampi__Vocabulary_Code__c | |
ampi__Indicator__c | ampi__Aim__c |
ampi__Objective__c | ampi__IATI_Vocabulary__c |
ampi__Level__c | |
ampi__Organization_Role__c | ampi__Role__c |
ampi__Project__c | ampi__IATI_Activity_Scope__c |
ampi__IATI_Aid_Type__c | |
ampi__IATI_Aid_Type_Vocabulary__c | |
ampi__IATI_Budget_Not_Provided_Reason__c | |
ampi__IATI_Collaboration_Type__c | |
ampi__IATI_Condition_Type__c | |
ampi__IATI_Finance_Type__c | |
ampi__IATI_Flow_Type__c | |
ampi__IATI_Humanitarian_Scope__c | |
ampi__IATI_Humanitarian_Scope_Vocabulary__c | |
ampi__IATI_Project_Status__c | |
ampi__IATI_Tied_Status__c | |
ampi__Project_Geographic_Area__c | ampi__IATI_Exactness__c |
ampi__IATI_Feature_Designation__c | |
ampi__IATI_Geographic_Vocabulary__c | |
ampi__IATI_Location_Class__c | |
ampi__IATI_Location_Reach__c | |
ampi__IATI_Region_Vocabulary__c | |
ampi__Project_Indicator__c | ampi__Calculate_Total__c |
ampi__Data_Type__c | |
ampi__Project_Role__c | ampi__IATI_Contact_Type__c |
ContentVersion | ampi__IATI_Document_Category__c |
Set Up Named Credential for IATI XML Validation
In order to validate the IATI Organisation or Activity XML while it is being generated, a Named Credential record will need to be created in order to connect an Amp Impact environment with the IATI Validator. Before you can create this, you will first need to obtain an IATI Gateway API Key.
Create IATI Gateway API Keys
Navigate to https://developer.iatistandard.org
Click “Sign Up”.
Follow the sign up process and confirm your account from an email link.
Sign In to the API Gateway developer portal (same URL as above).
Click Subscriptions > “Exploratory”/“Full Access” (as per requirement).
Enter a Subscription Name (this can be anything you want) in the box.
Check the box to agree to the Terms of Use.
Click the Subscribe Button.
Copy your Primary or Secondary Key from your Profile on the API Gateway webpage.
Create Named Credential Record in Salesforce
With the primary and secondary keys copied from the previous section, you are now ready to create a Named Credential record to connect Salesforce and Amp Impact to the IATI Public Validator.
Go to setup and search for “Named Credentials”.
Click on “External Credentials” and then click on “New”.
Fill in the following details and click Save.
Label: IATI VALIDATOR EXTERNAL CREDS
Name: IATI_VALIDATOR_EXTERNAL_CREDS
Authentication Protocol: Custom
Create a Permission Set Mapping for the External Credential. This Permission Set Mapping will help to authorize users such that users assigned to this permission set will only be allowed to utilize a specific OcpApimSubscriptionKey provided by the IATI.
Input the OcpApimSubscriptionKey (Primary or Secondary Key) provided by the API Gateway in the value field of Parameter 1 and click Save.
Create a custom header with the following inputs.
Name: Ocp-Apim-Subscription-Key
{!$Credential.IATI_VALIDATOR_EXTERNAL_CREDS.OcpApimSubscriptionKey}
Sequence Number: 1
Now, create a Named Credential, with the following parameters.
Label: IATI VALIDATOR
Name: IATI_VALIDATOR
External Credential: IATI VALIDATOR EXTERNAL CREDS
Allowed Namespaces: ampi
Create a new custom header within the Named Credential with the following parameters:
Name: Content-Type
Value: text/plain
Sequence Number: 1