Collision Resolving Rules
Uploading of a pack happens after attaching a SOP file to the record of a retrieved pack. During the uploading process, the system verifies whether the VCS records may cause collisions with the target instance configuration. Study and resolve collisions when the pack has been loaded.
Collision is a logical contradiction between the current and the imported content or configuration properties of a record.
Use case:
- You export a configuration record, for example, a business rule record.
- You upload it to the target instance, which has the same business rule record updated later than the one on the source instance. So this record on the target instance is newer.
- When loading the pack, the system throws a collision: the target instance has a newer version of this record.
You can find the information about loading the pack in the VCS Preview Log related list of the Retrieved Pack record form. The loading state of each VCS record is specified in the State field. If there is a collision, see the Message field for details.
Available state options
State | Description |
---|---|
Collision | The VCS record version requires the user's attention and cannot be implemented until the collision is solved. |
Good | The VCS version does not cause a collision. |
Skipped | The VCS record will be ignored while installing the pack. To import the version, change its state to Good. |
Warning | The VCS record is valid, but has some minor import issues. Depending on the error, the record versions are either implemented or ignored. |
To solve collisions, complete the following steps:
-
In the Related Lists area, select the VCS Preview Log tab.
-
Filter out records in the Good state using the condition builder.
-
Open the first record from the selection. In the Message field, you can see what caused the error.
-
Open the corresponding record in the Retrieved Records related list.
-
Make necessary changes in the JSON Copy field.
In some cases, especially when the version records require complex fixes, it is preferable to configure the erroneous records on the source instance. Re-attach the pack to the Retrieved Pack record, and click Load again.
-
Click Save or Save and exit to apply the changes.
-
Return to the configuration pack record and click Prepare changes.
-
Ensure that the VCS Preview Log record state has changed to Good.
-
Repeat the steps 3–8 until all necessary records in the VCS Preview Log are in the Good or, if necessary, Skipped state.
-
When all necessary records in the VCS Preview Log are in the Good state, click Import pack.
If a record causes multiple collisions, the system displays only the first one. Process it and click Prepare changes to see the next collision caused by this record.
Collision cases
Collision case 1
A pack contains a record X that references a record Y. The record Y does not exist on the target instance and is not included into the retrieved pack. When loading a VCS record, the following information appears in the Message column of the VCS Preview Log:
Reference {sys_id} in {column_name} does not exists in referenced table {reference_table_name}
Solution:
-
Add the record Y to this configuration pack on the source instance.
OR
-
Leave the record Skipped in the VCS Preview Log.
Collision case 2
A pack contains a record version X for deleting from the system. But there is a reference to this record in the configuration pack or on the instance. When loading a VCS record, the following information appears in the Message column of the VCS Preview Log:
{column_name} column in {reference_table_name} table referenced on this record;
Solution:
Leave the X record version Skipped in the VCS Preview Log.
Collision case 3
The set of fields mismatches when importing a pack.
Details:
The Scheduled scripts table on the source instance contains N fields. The Scheduled scripts table on the target instance contains N-1 fields (see the scheme below). When loading a VCS record, the following information appears in the Message column of the VCS Preview Log:
Column "c_typical" related to "sys_schedule_script" does not exist.
Solution:
-
Continue import with the Warning state. In this case, the column c_typical will not be created, and the imported version will have the N-1 of key-value pairs in the JSON copy field.
OR
-
Import the lacking c_typical column into the target instance. Then reload the initial local pack.
OR
-
If the absence of a particular field was expected:
- Open the record from the VCS Preview Log.
- In the Retrieved Records related list, click the record to open it.
- Remove the key-value pair for the c_typical column from the JSON copy field.
- Save the record and click Prepare for import.
Collision case 4
A record version on the target instance is newer than the one in the configuration pack. You can determine it by the date and time stated in the value of the sys_updated_at key in the JSON copy field. The record versions that are older than the ones in the system will be in the Skipped state. When loading a VCS record, the following information appears in the Message column of the VCS Preview Log:
The system has a newer record
Solution:
-
Change the state to Good to update the record versions from the configuration pack.
OR
-
Leave the Skipped state unchanged in the VCS Preview Log.
Collision case 5
A configuration pack contains a table that should be deleted. The same table on the target instance contains some records. When loading a VCS record, the following information appears in the Message column of the VCS Preview Log:
Table is not empty
Solution:
-
Change the state to Good. In this case, the table and all records will be deleted.
OR
-
Leave the Skipped state unchanged in the VCS Preview Log.
Collision case 6
A configuration pack contains a version of the application X. The target instance does not have this application installed. When loading the pack, the following information appears in the Message column of the VCS Preview Log:
Related application "{application_id}" does not exist. Please repack this pack on the source instance.
Solution:
- Export a version of the sys_application from the source instance.
- Import it to the target instance.
- Reload the pack with the application X versions again. To do so, click Load again on the Retrieved Pack form.
Collision case 7
A unique key violation causes a collision.
Details:
The imported configuration pack contains a record X1 from a table with a SQL unique constraint. The target instance contains the same record with a different ID, this is the record X2. In other words, these two records have identical field values except the ID. When loading the pack to the target instance, the following information appears in the Message column of the VCS Preview Log:
This record has a duplication of a unique key. DETAIL: Key (column_id, record_id, language_id)=(156941403909472422, 159170696512371798, 156628684306200767)
Solution:
-
Delete the record X2 on the target instance and click Reload pack.
OR
-
Leave the Skipped state unchanged for the record X1 in the VCS Preview Log.
Collision case 8
The column to be inserted exists on some level of inheritance.
Details:
The target instance has a table X and its child table Y. The table Y inherits columns of the table X. These columns belong to the table X (See the Table Extension article to learn more). The pack has a VCS record, which inserts column A to table Y. At the same time, the parent table X already has the same column A. When loading a pack, the following information appears in the Message column of the VCS Preview Log:
A record for column A already created in the table X.
Solution:
Set the Skipped state for the record X.
Collision case 9
An imported column contains a reference to a table that does not exist on the target instance. The configuration pack also does not contain a record of the table. When loading a pack, the following information appears in the Message column of the VCS Preview Log:
Trying to get property 'name' of non-object
Solution:
Import a pack with a version of the table, and then reload the configuration pack with that column.
Collision case 10
It is impossible to import a record, if its Protection policy is Protected.
When loading a pack, the following information appears in the Message column of the VCS Preview Log:
Don't update, policy is protected
Solution:
The solution depends on the Protection policy that the target record should have after the pack is loaded.
-
To import a record without changing its policy, do the following:
-
In the VCS Preview Log, open the necessary record.
-
In the related list of the form that opens, click the record in the Retrieved Records tab.
-
Change the Protection policy to Protected.
-
Click Prepare changes on the top right of the form.
As a result, the Message value for the record version in the VCS Preview Log has changed.
-
-
To import record versions with a change of the Protection policy, do the following:
-
On the source instance, open the VCS record that caused the collision and select the Is strong override checkbox.
-
Export the local pack with the updated record version and import it to the target instance.
-
Collision case 11
A VCS record on the target instance has been changed (Protection policy = Changed). When loading a pack, the following information appears in the Message column of the VCS Preview Log:
Don't update, record is changed
Solution:
- In the VCS Preview Log of the imported pack, open the necessary record.
- In the Current version related list, there is a record. Open it.
- Study the values of the JSON Copy, Local pack and Created by fields.
- If this record version should be imported, change the record state to Good in the VCS Preview Log.