Error
When a Quoter quote is pushed to HaloPSA, the integration may fail with an error similar to:
Error: Client error: `POST https://<your-domain>.halopsa.com/api/Item` resulted in a `400 Bad Request` response:
{"ClassName":"System.Exception","Message":"Name must be unique."}What this means
HaloPSA rejected an attempt to create an Item/Product because another Halo record is already using the same name. The conflicting record may be active, inactive, or previously deleted but still retaining the name.
This is generally a Halo catalog conflict. The /api/Item endpoint indicates that the failure occurred while Quoter was creating or matching a product for a quote line item.
Quoter first attempts to match a line item to an existing Halo product by Halo Product ID, then by Quoter MPN/Code to Halo SKU, and then by an exact name match. If no match is found, Quoter attempts to create a new Halo product. Halo rejects that creation when the name is already reserved. See Halo PSA Integration Overview and Setup.
Common causes
A Quote contains an item that was deleted or made obsolete in Halo, and Quoter is attempting to create it again.
A matching Halo product is inactive and is not returned during the lookup, so Quoter attempts to create a duplicate.
A quote was copied from an older quote that contains an outdated catalog item.
A line item was created manually in Quoter with the same name as a Halo product.
Halo’s Product names must be unique per vendor setting is enabled and prevents the duplicate product from being created. See Halo PSA Integration Overview and Setup.
Resolution
1. Identify the affected quote and review its line items
Use the Quote number shown in the integration error notification. Review every line item on the affected Quote, including optional items and items added manually.
The error does not always identify the specific product name, so check the complete list rather than only the first item on the quote.
2. Check Halo for active and inactive products
In HaloPSA:
Open Products.
Open the three-dot menu.
Select Show Inactive Products.
Compare the quote’s item names with both active and inactive Halo products.
Pay particular attention to items that were recently deleted, replaced, renamed, or marked obsolete. An inactive or deleted record may still reserve the original name.
3. Correct the catalog conflict
Use the least disruptive option that fits your catalog workflow:
If the matching product is the correct product, reactivate it and use that product rather than creating a new one.
If the old product is obsolete and no longer needed, remove or permanently purge it only after confirming that no Halo records depend on it.
If both products are needed, rename the new or obsolete product so that the names are unique.
If the Quote was copied from an older quote, remove the obsolete line item and add the current Halo catalog item instead.
Do not add random suffixes to products unless that naming convention is intentional. It can create duplicate catalog entries and make future matching more difficult.
4. Retry the integration
After the Halo catalog conflict is corrected, Quoter should retry the failed request automatically. Check the integration request status to confirm that the Item request succeeds and that the Quote push completes.
Avoid repeatedly changing the quote status back and forth while troubleshooting. Make the catalog correction first, then allow the integration retry to process.
If the error continues
If the push still fails after the catalog cleanup:
Confirm that every Quote line item has a unique, intentional name.
Check active and inactive Halo products again for spelling, punctuation, and naming variations.
Confirm that the Quote is using the intended Halo product or SKU rather than recreating a product.
Review the failed request status and provide Support with the quote number and/or affected revision.
| ✉️ Any questions? Reach out to our friendly, neighborhood support team by submitting a support ticket. |
| 🎙️ Interested in attending a live Q&A session with our Product Adoption team? Sign up to attend Quoter Office Hours and get real-time answers to your questions. |