Unable to create new project under teamspaceIssue KB ARTICLE Unable to Create New Project Under Teamspace Duplicate Extended Column Assignment on tsp1_project Article Type Break / Fix Product Area SPM / PPM — Teamspace (tsp1_project) Affected Table tsp1_project Affected Releases Xanadu, Yokohama, Zurich (confirm against your instance) Symptoms Symptoms Users are unable to create new projects under the Teamspace module.Form submission fails silently or throws a generic error.The following error appears in system logs: FAILED TRYING TO EXECUTE ON CONNECTION: INSERT INTO task ... ERROR: column "a_bln_20" specified more than once Position: 793 org.postgresql.util.PSQLException: ERROR: column "a_bln_20" specified more than once Facts Diagnosis Steps Step 1 — Confirm the error in system logs Navigate to System Logs → System Log → All and filter by: Source contains: glideMessage contains: a_bln_20 or specified more than once Step 2 — Identify the conflicting field Run the following in System Definition → Scripts - Background: var gr = new GlideRecord('sys_dictionary'); gr.addQuery('name', 'IN', 'task,planned_task,pm_project,tsp1_project'); gr.addQuery('internal_type', 'boolean'); gr.orderBy('name'); gr.orderBy('element'); gr.query(); while (gr.next()) { gs.log( 'Table: ' + gr.name + ' | Field: ' + gr.element + ' | Sys ID: ' + gr.sys_id + ' | Created by: ' + gr.getValue('sys_created_by') + ' | Update name: ' + gr.getValue('sys_update_name') ); } Step 3 — Confirm boolean field counts per table var tables = ['task', 'planned_task', 'pm_project', 'tsp1_project']; tables.forEach(function(tbl) { var d = new GlideRecord('sys_dictionary'); d.addQuery('name', tbl); d.addQuery('internal_type', 'boolean'); d.query(); gs.log('Table: ' + tbl + ' | Boolean field count: ' + d.getRowCount()); }); Expected output confirming the conflict: Table: task | Boolean field count: 3 Table: planned_task | Boolean field count: 11 Table: pm_project | Boolean field count: 8 Table: tsp1_project | Boolean field count: 1 ← u_sku_addition (conflicting) Step 4 — Inspect the conflicting field record var gr = new GlideRecord('sys_dictionary'); gr.addQuery('name', 'tsp1_project'); gr.addQuery('element', 'u_sku_addition'); gr.query(); if (gr.next()) { gs.log('Sys ID: ' + gr.sys_id); gs.log('Created: ' + gr.getValue('sys_created_on')); gs.log('Created by: ' + gr.getValue('sys_created_by')); gs.log('Update set: ' + gr.getValue('sys_update_name')); gs.log('Default: ' + gr.getValue('default_value')); gs.log('Mandatory: ' + gr.getValue('mandatory')); } 📋 Note Record all field attributes before proceeding to resolution. You will need these values to accurately recreate the field in Step 2 of Resolution. ReleaseZurich Patch 7Cause Root Cause The tsp1_project table extends pm_project, which extends planned_task, which extends task. ServiceNow assigns physical database column slots sequentially across this inheritance chain for each field type. Boolean fields are assigned slots in the format a_bln_X based on the cumulative count of boolean fields declared at each level of the hierarchy. Table Boolean Field Count Physical Slots Assigned task 3 a_bln_1 → a_bln_3 planned_task 11 a_bln_4 → a_bln_14 pm_project 8 a_bln_15 → a_bln_22 tsp1_project 1 a_bln_23 (expected) A custom boolean field A custom boolean field u_sku_addition was added to tsp1_project but was incorrectly assigned the physical column slot a_bln_20 — a slot already occupied by a pm_project field. When the platform generates the SQL INSERT statement for a new project record, it includes a_bln_20 twice, which PostgreSQL rejects as a syntax violation.Resolution Resolution ⚠️ Before Proceeding Ensure you are in an active update set before making any changes. Perform all steps in DEV first and promote through TEST before applying to PROD. Follow your organization's standard change management process. Step 1 — Delete the conflicting dictionary entry var DRY_RUN = true; // Set to false when ready to execute var gr = new GlideRecord('sys_dictionary'); gr.addQuery('name', 'tsp1_project'); gr.addQuery('element', 'u_sku_addition'); gr.query(); if (gr.next()) { gs.log('Found: ' + gr.name + '.' + gr.element + ' | Sys ID: ' + gr.sys_id); if (!DRY_RUN) { gr.setWorkflow(false); gr.deleteRecord(); gs.log('DELETED — proceed to Step 2'); } else { gs.log('DRY RUN — no changes made. Set DRY_RUN = false to execute.'); } } Step 2 — Recreate the field Navigate to System Definition → Tables.Search for and open tsp1_project.In the Columns tab, click New.Set the following field attributes: Type: True/FalseColumn name: u_sku_additionLabel: SKU AdditionReapply any attributes noted in Diagnosis Step 4 (default value, mandatory, etc.) Click Submit. The platform will auto-assign the next available slot (a_bln_23). Step 3 — Verify correct slot assignment var gr = new GlideRecord('sys_dictionary'); gr.addQuery('name', 'tsp1_project'); gr.addQuery('element', 'u_sku_addition'); gr.query(); if (gr.next()) { gs.log('Recreated Sys ID: ' + gr.sys_id); gs.log('Created on: ' + gr.getValue('sys_created_on')); gs.log('Verify field count is now 1 on tsp1_project with no collision.'); } Step 4 — Reapply dependent configurations Check and reapply any configurations that reference u_sku_addition: Form layouts (sys_ui_section, sys_ui_element)Business RulesClient ScriptsUI PoliciesScripted references in Script Includes or Flow Designer Step 5 — Validate Create a new test project under the Teamspace module.Confirm the record saves successfully with no system log errors.Confirm the u_sku_addition field is present and functional on the form. Post-Resolution Capture the delete and recreate steps in the same update set.Promote the update set through TEST and PROD following your standard change management process.Monitor system logs after each environment deployment to confirm the error does not recur.Related Links Related Reference Description sys_dictionary ServiceNow dictionary table — stores all field definitions tsp1_project Teamspace Project table — extends pm_project → planned_task → task Extended column allocation Boolean column slot assignment behavior in ServiceNow inherited table hierarchies HI ticket Recommended if the column collision involves two delivered (non-custom) fields