Managing data objects with nested data structures in Constellation (important DSS!)

Every day is a learning journey!

We learnt of this DSS today after @Maciej_Dybal and I were looking into saving some embedded data inside a data object. E.g. Managing external system of record through REST with CRUD actions in Pega Constellation or How to update operator profile or data in Constellation application using savable datapage - Knowledge Share - Pega Forums for the examples of scenarios this may help in.

It is documented but not commonly referenced anywhere as far as we could find, certainly not one the LLMs picked up easily - sharing to help promote this for those who may hit this issue in the future.

EnableNestedDataSupportForCustomerDatatypes DSS is default off.

What is it?

To support CRUD for Data Objects with nested data structures, you must enable this Dynamic System Setting before creating the Data Object in App Studio by setting

See Pega Documentation

Enjoyed this article?

See suggested articles from our Constellation 101 series and view all our Knowledge Shares from our User Experience Expert Circle.

5 Likes

Just a couple comments to keep in mind when planning to configure CRUD on DataTypes with more complex structure:

  1. Changing this DSS will not affect already existing DataTypes! It will only allow saving embedded properties for the DataTypes created after the DSS was set to “true”. At the same time, disabling it at later time will not affect the DataTypes that are already created
  2. As per documentation, only Postgres DB are supported - important to keep in mind for on-prem customers using different databases
  3. For external SOR and/or unsupported DBs, there is one more option available: custom Save Plan on Savable DataPage. While it won’t support the embedded scenario 1 to 1, it “recreates” the same experience. Looking at the simple Person + multiple Addresses scenario:
    3.1. Create Person and Address DataTypes
    3.2. Address should have “PersonID” property
    3.3. In Person create Addresses (embedded PageList) and AddressesQuery (Query PageList) properties
    3.4. In Person Savable DataPage add post-lookup DataTransform to copy Query value to Embed property
    3.5. In Person Savable DataPage change DataBase SavePlan to Activity - within handle Address Emebed separately from main Person Object
  4. The approach above is only supported in Inf’25 and forward - before that release the pzMapRequestBody did not map the pageInstructions part of the payload (and the PageList property was not visible in Activity)
1 Like