OCMC Balance Query Remaining Balance (Doc ID 1949709.1)

Last updated on OCTOBER 10, 2016

Applies to:

Oracle Communications Online Mediation Controller - Version 6.1.0 and later
Information in this document applies to any platform.

Symptoms

There are issues with the results of unpublished ER (Enhancement requirement) 18240058 delivered with RP6. In short: it doesn't work.

There are three main problems:

1) It assumes diameter uses epoch time for time fields - which it does not.

2) It makes comparisons using signed ints - any future dates will be well above the MAXINT in this case - diameter requires a 4-byte /unsigned/ integer value.

   Almost everywhere it is used, validEnd is passed around as a long and cast as an int, but any valid date will be above the MAXINT for a signed integer (Java has no unsigned integers that I am aware of)

Take this example date from a balance query response:

2014-08-26T08:53:12.000-07:00

In epoch time, this is 1409068392 - that's OK, it's less than MAXINT (2147483647), but the diameter time field starts from 1900 rather than 1970 - so we need to add 70 years worth of seconds - I.E. 2208988800

2208988800 + 1409068392 = 3618057192

In a long data-type this is fine, but this looks like -676910104 when viewed as a signed integer (or 0xD7A72BE8 in hex). ng java int comparison.

In addition, OCMC supports does not support special handling/encoding is required for time dates beyond 2036.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms