Documents available for Accounts

ayman_h
Kilo Sage
Kilo Sage

Hi,

 

We have a requirement as part of a CSM implementation to host invoices (pdf) for specific accounts. A registered contact should be able to access the invoices when they login using the CSM portal.

 

A possible solution could be to use Document management and create Document Reference link to the Account. To make it visible on the CSM Portal, create a new page and navigate menu to display the documents. 

 

Are there any other better solutions or best practices around this as this is a common use case?

 

Regards,

Ayman 

1 ACCEPTED SOLUTION

tiagomacul
Giga Sage

I’ve done this a few times directly using attachments — for example, by adding a “Visible in Portal (Yes/No)” column on the record, so after uploading the invoice file the analyst can decide whether it should be exposed to the customer. That works fine for smaller-scale scenarios, but since invoices are such a common CSM requirement, it’s worth thinking about scalability, security, and user experience.

 

Here are some approaches I’ve seen work well:

1. Attachment on a Custom Invoice Table

  • Create a dedicated Invoice table (e.g., u_invoice) [or maybe using attachs] with fields like Invoice Number, Date, Amount, Status, Account, Contact.

  • Store the PDF as an Attachment on the invoice record.

  • Use ACLs to ensure the logged-in contact belongs to the correct Account (customer_account).

  • In the CSM Portal, build a UI Builder page that lists invoices filtered by the user’s account, with a link to download the PDF.

  • Optional: add the “Visible in Portal” field to let agents decide per-invoice.

This fits well with the CSM data model, allows reporting, and supports extensions like disputes (via Case) or payment integrations.


2. Document Management with Document References

  • Use Document Management to create references tied to Accounts.

  • Add a portal page/menu for “Invoices” that pulls from table.

This can be a quick win if your organization already uses Document Management for policies or onboarding documents. But it’s not as flexible for transactional documents like invoices.


3. Integration with External Repository

  • If invoices are stored in an ERP or DMS (e.g., SAP, Oracle, SharePoint, AWS S3), keep only metadata in ServiceNow and fetch the file securely via REST/IntegrationHub.

  • This avoids filling up ServiceNow’s attachment storage and leverages cheaper, compliant storage for large volumes.


4. Hybrid Approach

  • For small to medium volumes → keep attachments in ServiceNow.

  • For high volumes → metadata in ServiceNow, PDFs in an external repository.


Best Practices

  • Use ACLs or Document Security Policies to prevent URL sharing.

  • Consider Table per Customer Data  if invoices are sensitive and isolation is required, or if you're in a domain separation.

  • Add filters and sorting in the portal (by date, status, etc.) for a better customer experience.

  •  

 

If your volume isn’t massive, go with think about (Custom Invoice table + attachments). It’s clean, scalable enough for most orgs, and aligns with the CSM data model. If your invoices come from an external ERP and you’re dealing with tens of thousands per year, consider Option 3 to offload file storage but still use ServiceNow as the access layer.

View solution in original post

2 REPLIES 2

tiagomacul
Giga Sage

I’ve done this a few times directly using attachments — for example, by adding a “Visible in Portal (Yes/No)” column on the record, so after uploading the invoice file the analyst can decide whether it should be exposed to the customer. That works fine for smaller-scale scenarios, but since invoices are such a common CSM requirement, it’s worth thinking about scalability, security, and user experience.

 

Here are some approaches I’ve seen work well:

1. Attachment on a Custom Invoice Table

  • Create a dedicated Invoice table (e.g., u_invoice) [or maybe using attachs] with fields like Invoice Number, Date, Amount, Status, Account, Contact.

  • Store the PDF as an Attachment on the invoice record.

  • Use ACLs to ensure the logged-in contact belongs to the correct Account (customer_account).

  • In the CSM Portal, build a UI Builder page that lists invoices filtered by the user’s account, with a link to download the PDF.

  • Optional: add the “Visible in Portal” field to let agents decide per-invoice.

This fits well with the CSM data model, allows reporting, and supports extensions like disputes (via Case) or payment integrations.


2. Document Management with Document References

  • Use Document Management to create references tied to Accounts.

  • Add a portal page/menu for “Invoices” that pulls from table.

This can be a quick win if your organization already uses Document Management for policies or onboarding documents. But it’s not as flexible for transactional documents like invoices.


3. Integration with External Repository

  • If invoices are stored in an ERP or DMS (e.g., SAP, Oracle, SharePoint, AWS S3), keep only metadata in ServiceNow and fetch the file securely via REST/IntegrationHub.

  • This avoids filling up ServiceNow’s attachment storage and leverages cheaper, compliant storage for large volumes.


4. Hybrid Approach

  • For small to medium volumes → keep attachments in ServiceNow.

  • For high volumes → metadata in ServiceNow, PDFs in an external repository.


Best Practices

  • Use ACLs or Document Security Policies to prevent URL sharing.

  • Consider Table per Customer Data  if invoices are sensitive and isolation is required, or if you're in a domain separation.

  • Add filters and sorting in the portal (by date, status, etc.) for a better customer experience.

  •  

 

If your volume isn’t massive, go with think about (Custom Invoice table + attachments). It’s clean, scalable enough for most orgs, and aligns with the CSM data model. If your invoices come from an external ERP and you’re dealing with tens of thousands per year, consider Option 3 to offload file storage but still use ServiceNow as the access layer.

Thanks @tiagomacul for the detailed choices. I was thinking Option 2 but it does look Option 1 might be a better long term solution as the volumes aren't going to be big.

 

Regards,

Ayman