in src/Common/ProcessImporter.ts [119:159]
private async _addFieldsToWorkItemTypes(payload: IProcessPayload): Promise<void> {
for (const entry of payload.workItemTypeFields) {
for (const field of entry.fields) {
try {
// Make separate call to set default value on identity field allow failover
const defaultValue = field.defaultValue;
field.defaultValue = field.type === WITProcessDefinitionsInterfaces.FieldType.Identity ? null : defaultValue;
const fieldAdded = await Engine.Task(
() => this._witProcessDefinitionApi.addFieldToWorkItemType(field, payload.process.typeId, entry.workItemTypeRefName),
`Add field '${field.referenceName}' to work item type '${entry.workItemTypeRefName}'`);
if (!fieldAdded || fieldAdded.referenceName !== field.referenceName) {
throw new ImportError(`Failed to add field '${field.referenceName}' to work item type '${entry.workItemTypeRefName}', server returned empty result or reference name does not match.`);
}
if (defaultValue) {
field.defaultValue = defaultValue;
try {
const fieldAddedWithDefaultValue = await Engine.Task(
() => this._witProcessDefinitionApi.addFieldToWorkItemType(field, payload.process.typeId, entry.workItemTypeRefName),
`Updated field '${field.referenceName}' with default value to work item type '${entry.workItemTypeRefName}'`);
}
catch (error) {
if (this._config.options && this._config.options.continueOnIdentityDefaultValueFailure === true) {
logger.logWarning(`Failed to set field '${field.referenceName}' with default value '${JSON.stringify(defaultValue, null, 2)}' to work item type '${entry.workItemTypeRefName}', continue because 'skipImportControlContributions' is set to true`);
}
else {
logger.logException(error);
throw new ImportError(`Failed to set field '${field.referenceName}' with default value '${JSON.stringify(defaultValue, null, 2)}' to work item type '${entry.workItemTypeRefName}'. You may set skipImportControlContributions = true in configuraiton file to continue.`);
}
}
}
}
catch (error) {
Utility.handleKnownError(error);
throw new ImportError(`Failed to add field '${field.referenceName}' to work item type '${entry.workItemTypeRefName}', see logs for details.`);
}
}
}
}