Dawn Jurek
ServiceNow Employee
ServiceNow Employee

Imagine this: When you roll out your long-awaited service catalog, you immediately get complaints about the outrageous prices:

image1_gold.png

Customer service sends you this quote from an angry customer:   "Why is this mouse so expensive? Is it made of pure gold?" And it doesn't help that the mouse has a gold finish. Those who do spring for the overpriced mouse will be disappointed when the 24-karat gold plated mouse they were expecting turns out to be gold colored plastic.

Oops! What went wrong? In this 13th installment of our best practices series, we look at ways to set up currency properties in your instance.

How does the ServiceNow platform handle currency?

The ServiceNow platform uses two kinds of currency: session and reference. Session currency is defined for the user by the user's locale—if the system uses multiple-currency mode—or by single-currency mode if that's what the system uses. Multiple-currency, which is the base system setting, is the recommended mode. Reference currency is determined by the system locale and is a standard used across the entire instance. Each time a value is entered in a currency or price field, the system stores three pieces of information:

  • The value as entered, in the user's locale
  • The currency code, in the user's locale
  • The value converted to the reference currency using the current exchange rate

In order to perform calculations on heterogeneous currency values, the platform stores currency values converted to a system currency, referred to as the reference currency. Every currency field in the system contains a reference currency value. The reference currency is determined by the following, in this order:

What happened in the scenario above was that the user who created the service catalog item resided in Thailand, and the amount entered was in Thai baht. But the glide.system.local property had not been set, and the user's record in the User [sys_user] table didn't contain a language or country code. So the system guessed what the reference currency might be, in this case selecting the first active currency in the instance's Currencies list, Australian dollars:

image2.png

Another cause of currency issues is import sets that populate currency fields with values that don't match the default currency, number of decimal places, or other currency properties. Also, changing certain currency properties or system localization properties after records have been created can lead to trouble.

Fortunately, you can avoid most cost and amount problems by following these best practices.

Currency-related best practices:

  • Configure your system localization properties (navigate to System Properties > System Localization) before creating any records that contain cost or amount values... and don't change these properties after the system goes into production. The glide.system.locale property, shown here, determines the system's default currency into which all prices are automatically converted before other sums or conversions are performed.

image2a.png

  • When adding users to the system, always complete the Language and Country code fields. The user's locale is based on these two fields in the user record, and currency for the user is based on that locale. If the Language and Country code fields don't appear by default on the user form, you can add them by configuring the form.

    This user record doesn't have the Language or Country code fields set:

image3.jpg

This user record does have the Language and Country code fields set:

image4.jpg

When we personalize the User list to include the Country code column, we clearly see that of the two user records shown above, only Alene Rabeck's has an assigned Country code value:

image5.jpg

If you've followed these best practices but you're still having issues with a cost or amount field displaying incorrectly in the service catalog or anywhere else in your ServiceNow instance, the likely culprit is the fx_currency_instance record or fx_price record that points to that cost or amount. Check out Converting amount & currency type based on locale for help.

For more information, see:

--

Behind the scenes here at ServiceNow, the Knowledge Management and Multimedia teams work closely with subject matter experts to disseminate critical information to our customers. We've found that certain topics come up frequently, in the form of best practices that can help you keep your ServiceNow instances running smoothly. This series aims to target those topics so that you and your organization can benefit from our collective expertise. If you have a best practices topic you'd like us to cover in this series, please let us know in the comments below.

To access all of the blog posts in this series, search for "nowsupport best practices series."