NodeBranches explainedNodeBranching - What & Why Sweagle automatically builds up the full history of any given node in the data model. Whenever the node is changed by adding or removing a childNode, or adding or removing CDI we automatically create a new "version" of the node to keep it separate from each other and allow tracking the changes over time. But sometimes there is the need to manage different discrete versions or tracks for a given node. You might want to create a list of nodes for different versions such as v1.0 and v1.1. Or for different stages like -DEV, -ACC and -PRD. Each of these nodes basically has its own lifecycle of changes but "belong" together. That is where nodeBranches come into the picture. Node branching allows to "group" a set of discrete nodes (= branches) together below a parent node. The parent node level will enforce a certain naming syntax for each of the nodeBranches, and optionally allows to define some additional settings such as if all the nodeBranches need to have the same nodeType or not, if there is a "default" nodeBranch, etc. How To Apply NodeBranching? 1 - In NodeTypes: Create A Multi-Branch NodeType A user with content admin permissions creates a new nodeType and switch the "is multi-branch" toggle to true, and also sets a regex which every nodeBranch must follow. The regex allows enforcing suffix/prefix syntax in combination with the parent nodeName and the label. The @@parent_name@@ is built in Sweagle and will automatically use the branch "parent" name. The label must contain between () the regex to be applied on the branch label. Sweagle will validate that the entire node branch name follows this regex. Note: It is recommended to not have any referenced child nodes defined within the multiBranch nodeType as it will conflict with the branch node name regex, and create complexity for reapplying the nodeType. 2 - In DataModel: Create A Multi-Branch Node A user with edit permissions for the path can use the "create multi-branch" option in the right-click menu. This simplified method asks for 3 inputs: the nodeType for the multiBranch node (use the % key to display the list or start typing a part of the nodeType name and select), the parent name, and the first node branch label. Upon providing that, Sweagle then automatically creates the node name and adds the first node branch below it automatically. Example Branch Name Regex regexdescriptionallowednot allowed@@parent_name@@-@@label(\d+)@@an integer numbermyApp-100myApp-100a@@parent_name@@-v@@label(\d+\.\d+)@@-vMajor.Minor syntaxmyApp-v5.3myApp-v5.3.0 & myApp_v5.3@@parent_name@@-@@label(DEV|UAT|PRD)@@a stage labelmyApp-PRDmyApp-prd myApp-prod Default Branch In the case of multiple branchNodes, it is possible to flag 1 node as the default node. The default branch is a concept that allows us to introduce more advanced functionalities in the future. As an example, it would be possible to create an include without specifying specifically which nodeBranch but rather just the default one. At all times the include will be based upon whatever the default nodeBranch is at any given moment in time. This is forward-looking functionality and not yet fully enabled. API There is no difference in behavior when you create a node through the API. The name of the nodeBranch must follow the regex as defined in the parent. There are 2 new API calls which are documented here : API endpoint to retrieve all the nodeBranches for a given parentNodeAPI endpoint to get the default nodeBranch