Commandment 1: Do Not Reuse GUIDs
At times, you may need to copy the XML that constitutes an Infinity table or an Infinity feature (such as data forms, data lists, search lists, and record operations) to create a new feature. When this occurs, it is imperative that you do NOT reuse the global unique identifier (GUID) for the root element's ID attribute of the spec. This rule also applies to the DataFormInstanceID attribute of data form specs.
<AddDataFormTemplateSpec
XMLns="bb_appfx_adddataformtemplate"
XMLns:common="bb_appfx_commontypes"
ID="bf83e304-c10e-4197-baa2-97fca68b2436"
Name="Widget Add"
Description="Adds a new widget."
Author="SDK Author"
DataFormInstanceID="e227b066-b7a1-4b18-a530-a8ff1dd60332"
RecordType="Widget"
common:SecurityUIFolder="Widget”>
<SPDataForm>
<!-- describe the save SP -->
<SaveImplementation SPName="USP_DATAFORMTEMPLATE_ADD_WIDGET">
….
Each spec type, such as a TableSpec or an AddDataFormTemplateSpec, has a corresponding catalog table within the Infinity database used to store the spec's metadata within the database. The Infinity platform uses this metadata to bring the feature to life at runtime. For example, when you load a TableSpec into the Infinity catalog, the spec's metadata is loaded into a table within the database named TABLECATALOG. Similarly, when you load an AddDataFormTemplateSpec into the catalog, the spec's metadata is loaded into a table within the database named DATAFORMTEMPLATECATALOG. The ID attribute of the spec is used to populate the ID column within the catalog table which is also the primary key of the table. Therefore, these values should not repeat.