How do I create a fund configuration module?

Providing you have suitable access control permissions, you can create a fund configuration module that identifies general ledger accounts in the underlying ABOR responsible for recording activity such as dealing (subscriptions and redemptions) and P&L.

Once created, you can create a fund that references the fund configuration module.

Using the LUSID web app

  1. Sign in to the LUSID web app as a user with suitable permissions.

  2. From the top left menu, select Financial Reporting > Fund Configurations.

  3. Click the Create fund configuration button to open the dialog and specify a Scope, Code and Display Name.

  4. In the Dealing Filters section, click the Add button and add at least one filter identifying general ledger account(s) recording dealing activity, for example a subscriptions account. Note the Filter ID can be any meaningful string, and the syntax and allowed values for filter expressions are documented below:

  5. Optionally, click the Add button again to add more filters identifying accounts recording dealing activity, for example a redemptions account. Note the order in which multiple dealing filters are specified is significant; LUSID uses the first matching filter found, so if you have more than one you might want to change the order using the drag handles:

  6. In the PnL Filters section, click the Add button and add at least one filter identifying general ledger account(s) recording P&L activity.

  7. Click the Create button to create the fund configuration module in the list.

Note: Do not add Back Out Filters for now.

Using Luminesce

You can use the Lusid.FundConfiguration.Writer provider.

Using the LUSID API

  1. Obtain an API access token.

  2. Call the CreateFundConfiguration API, specifying a scope in the URL and, in the body of the request:

    • A code that, together with the scope, uniquely identifies the module in LUSID.

    • A displayName and, optionally, a description.

    • In the dealingFilters collection, a set of filters identifying dealing accounts in the underlying ABOR. Note the order in which filters are specified is significant; LUSID uses the first matching filter found. Each rule must consist of:

    • In the pnlFilters collection, a set of rules identifying P&L account(s) in the underlying ABOR in the same way as above.

    • Optionally in the properties collection, any number of custom properties from the FundConfiguration domain to extend the data model. Alternatively, you can add or remove properties independently using the UpsertFundConfigurationProperties API.

Note: Set backOutFilters to an empty collection for now.

Consider the following request, of a fund configuration module with a scope of MyFunds (in the URL) and a code of StandardFundConfig (in the body):

curl -X POST 'https://<your-domain>.lusid.com/api/api/fundconfigurations/MyFunds'
  -H 'Content-Type: application/json-patch+json'
  -H 'Authorization: Bearer <your-API-access-token>'
  -d '{
  "code": "StandardConfigModule",
  "displayName": "Standard Fund Configuration",
  "dealingFilters": [
    {
      "filterId": "SUBS",
      "filter": "generalLedgerAccountCode eq '3-Subscriptions'"
    },
    {
      "filterId": "REDS",
      "filter": "generalLedgerAccountCode eq '4-Redemptions'"
    }
  ],
  "pnlFilters": [
    {
      "filterId": "PnL",
      "filter": "generalLedgerAccountCode eq '5-PnL'"
    }
  ],
  "backOutFilters": []
}'

Providing the request is successful, the response confirms the unique ID of the entity consists of its scope and code:

{
  "id": {
    "scope": "MyFunds",
    "code": "StandardConfigModule"
  },
  "displayName": "Standard Fund Configuration Module",
   ...
}

Syntax and allowed values

The syntax of a filter expression is:

<attribute> <operator> <value>

...where:

Note the following:

  • A filter expression is case-insensitive.

  • A string <value> must be enclosed in single straight quote marks (the %27 UTF-8 encoding).

  • You can concatenate expressions using the and and or operators. If you use both, standard boolean operator precedence applies.

<attribute>

Data type

Example expression

Explanation/origin of <value>

An account field

System-defined

Account.type in 'Asset', 'Liabilities'

This can be any of the stored fields for an account, prefixed by Account. Nested fields can be accessed using dot notation.

An account property

User-defined

properties[Account/Type/AssetClass] eq 'Equity'

This can be any property with a 3-stage key in the Account domain.

An ABOR property

User-defined

properties[Abor/Client/Accountant] not in 'Fred Bloggs', 'Sarah Smart'

This can be any property with a 3-stage key in the Abor domain.