You can define a multi-value property by specifying the constraint style of its property definition to be a Collection. Note that only string values are supported at the moment, with more data types coming soon.

You can apply multi-value properties to any type of entity in LUSID except transactions, holdings, reference portfolios and constituents.

As with any property definition, you can set the lifetime of the property to be either perpetual (the default) or time-variant. Note the EffectiveAt date applies to all property values in the collection; for more on bitemporality and properties, see this article.

To create a multi-value property, specify a 'value set', which is an object with an array; the array stores individual values. For example, you might define a Location portfolio property that has a collection of string values as follows:

  "Portfolio/scope/Location": { 
    "key": "Portfolio/scope/Location", 
    "value": { 
      "labelValueSet": { 
        "values": [ 
          "Europe", "England" 
    "effectiveFrom": "2021-08-20T00:00:00.0000000+00:00" 

Note the following:

  • Up to 250 values are allowed.
  • Each value must be unique. Any duplications are stored as the same value.
  • All values must conform to the data type specified in the property definition, for example string values for a property defined as a string.
  • The maximum number of characters in a value is 1024.
  • Filtering is available; note that only values with 128 characters or less are included in a filter result set in order to keep the system performant.
  • Values are not indexed and thus are returned in an arbitrary order.