New GraphQL Schema Updates: Introducing Subfund

Introduction

In the past year, we've observed a rise in the complexity of fund setups within our environment. Particularly, certain fund environments allow investors to invest in either one or multiple funds simultaneously. Historically, extracting data and monitoring investors' selections and commitment amounts for each fund has proven challenging, primarily due to limitations within our GraphQL schema, which supported only a single commitment amount field.

To address this challenge, we've introduced a new concept and schema structure known as Subfunds. This enhancement aims to facilitate smoother data extraction processes, enabling more effective monitoring of investors' selections and commitment amounts across various fund choices.

Introducing Subfunds

A Subfund is an investment fund used by fund managers to raise capital. In any given fund environment, there may be one or multiple Subfunds, depending on the setup. Each Subfund can have its own commitment amount and currency type.

This marks a change from our previous setup, where each fund environment could only handle one commitment amount and currency type. With Subfunds, our system now offers more flexibility, allowing for different commitment amounts and currency types within the same environment. This new setup is available for new funds starting May 2024.

GraphQL Schema Updates for Subfund

New Field

We have introduced a new field to represent the subfund. This addition applies to both the FundSubscription and Order objects.

SubFund {
  id: String!
  name: String
  currency: String
}

An important note to highlight is that the newly added fields in the Fund and Order objects remain relevant even in a single-fund setup. Specifically, when a fund is configured with only one fund, the Fund.subFunds field contains a single item of type SubFund, serving as the place to verify the currency. Similarly, the Order.commitmentAmounts field holds at most one item, representing the commitment amounts of the subscription.

Getting sub-fund and currencies of a Fund

To retrieve a list of sub-funds associated with a fund, you can access the new field subFunds within the Fund object. Refer to the example query and response provided below:

{
  getFundSubscription(id: "FUND-ID") {
    subFunds(first: 10) {
      id
      name
      currency
    }
  }
}
{
  "data": {
    "getFundSubscription": {
      "subFunds": [
        {
          "id": "SUB-FUND-ID-I",
          "name": "Fund I",
          "currency": "USD"
        },
        {
          "id": "SUB-FUND-ID-II",
          "name": "Fund II",
          "currency": "EUR"
        },
        {
          "id": "SUB-FUND-ID-III",
          "name": "Fund III",
          "currency": "USD"
        }
      ]
    }
  }
}

In the JSON response, you will notice that this fund has 3 sub-funds. Fund II uses the Euro, while the remaining two use the Dollar.

Getting commitment amounts of an Order

A new list field named commitmentAmounts has been introduced to the Order object. Each entry in this list corresponds to a sub-fund to which the respective Order has subscribed. Please refer to the provided sample request and response below for more details.

{
  getOrder(id: "ORDER-ID") {
    commitmentAmounts(first: 10) {
      subFund {
        id
        name
        currency
      }
      estimatedCommitmentAmount
      submittedCommitmentAmount
      acceptedCommitmentAmount
    }
  }
}
{
  "data": {
    "getOrder": {
      "commitmentAmounts": [
        {
          "subFund": {
            "id": "SUB-FUND-ID-I",
            "name": "Fund I",
            "currency": "USD"
          },
          "estimatedCommitmentAmount": 50000,
          "submittedCommitmentAmount": 40000,
          "acceptedCommitmentAmount": 40000
        },
        {
          "subFund": {
            "id": "SUB-FUND-ID-II",
            "name": "Fund II",
            "currency": "EUR"
          },
          "estimatedCommitmentAmount": 100000,
          "submittedCommitmentAmount": 50000,
          "acceptedCommitmentAmount": 50000
        }
      ]
    }
  }
}

You will notice the order in this example subscribed to two sub-funds.

Fields Depreciation

As we transition to support the new structure and field, we will begin deprecating the existing commitment amount and currency fields starting on July 3, 2024.

  • Fund.currency
  • Order.estimatedCommitmentAmount
  • Order.submittedCommitmentAmount
  • Order.acceptedCommitmentAmount

All existing funds have been migrated to be compatible with the new structure. Customers utilizing these fields in GraphQL are advised to update their queries promptly to prevent service interruption.