Best practice for modeling Merchants as Customer Accounts with duplicate names
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi everyone,
I'm working on a ServiceNow CSM implementation where we're using the Customer Account (customer_account) table to represent two different business entities:
- Financial Institutions (Customers) → Customer = true
- Merchants → Customer = false
In our business model, each merchant is stored as a Customer Account because it needs to be related to cases, contacts, assets, sold products, etc.
Multiple merchants can legitimately have the same business name, for example:
| Merchant ID | Name | City |
| 100001 | ABC Pharmacy | Lima |
| 100002 | ABC Pharmacy | Lima |
| 100003 | ABC Pharmacy | Arequipa |
Each merchant has a unique Merchant ID, but the Name is not necessarily unique.
Currently, ServiceNow prevents us from creating another Customer Account with the same Name.
Additionally, the Normalization plugin is installed in our instance.
My questions are:
- Is it considered a best practice to allow duplicate Account Names when using Customer Accounts to represent merchants?
- Should uniqueness be enforced on the Merchant ID instead of the Account Name?
- Has anyone implemented a similar model where merchants are stored as Customer Accounts? If so, how did you handle merchants with identical names?
I'd appreciate any recommendations or best practices.
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
an hour ago
Hi @luishuallpa,
Enforce uniqueness on Merchant ID, not on Name. What's actually blocking you here isn't a hard platform rule on customer_account, it's the Normalization Data Services plugin. Since customer_account extends core_company, its two normalization business rules, Set Canonical Hash and Make Canonical Company, hash the company name and collapse anything matching into one canonical record, which is exactly wrong for merchants that legitimately share a trade name.
- Add a custom Merchant ID field and mark it unique at the dictionary level, that's your real business key
- Scope those two normalization business rules to skip customer_account (or at least records where customer = false) rather than disabling normalization instance-wide
- Leave Name as free text since it was never meant to be your identifier
Thank you,
Vikram Karety
Octigo Solutions INC