To allow for data to be loaded in discrete transactions, we can specify the data in containers and push all the contents to the server to be processed in one transaction. Containers are delineated by the statements BeginContainer and EndContainer. If any part of the container fails to load, the whole container is rolled back.
In NLF format, if no container statements are included, then each object is treated as a separate container.
NLF format
.BeginContainer
.SPFFunctionalUnit
..Name|U101
.SPFFunctionalUnit
..Name|U102
.EndContainer
.BeginContainer
.SPFFunctionalUnit
..Name|U103
.EndContainer
U101 and U102 are loaded in one transaction and U103 in its own transaction.
XML format
<Containers>
<Container CompSchema="SPFReferenceComponent" Scope="Data" ContainerID="PBS.Data">
<FunctionalUnit>
<IObject Name="U101" />
<IFunctionalUnit />
</FunctionalUnit>
<FunctionalUnit>
<IObject Name="U102" />
<IFunctionalUnit />
</FunctionalUnit>
</Container>
<Container CompSchema="SPFReferenceComponent" Scope="Data" ContainerID="PBS.Data">
<FunctionalUnit>
<IObject Name="U103" />
<IFunctionalUnit />
</FunctionalUnit>
</Container>
</Containers>