REST web services method fails with HTTP error for local attribute of inactive contact (cnt)

book

Article ID: 141522

calendar_today

Updated On:

Products

CA Service Desk Manager CA Service Desk Manager - Mobile Application

Issue/Introduction

When performing a GET method against an inactive contact (cnt) record, the REST call fails with error 404 (NotFound) or 500 (Internal Server Error) whenever the header value for X-Obj-Attrs is "*" or contains any of the following fields: audit_userid, notify_urgency1, notify_urgency2, notify_urgency3, notify_urgency4, pgroups. 

The problem also occurs when using PUT to perform an update. 

The REST call succeeds if the status of the contact record is Active.

The REST call succeeds if the X-Obj-Attr value is set to other fields, such as "access_type,alias,contact_num,delete_flag,first_name,last_name,userid".

Cause

The list of attributes that have been reported as failing are all "LOCAL" attributes.

The bop_sinfo command can be used to determine the LOCAL attributes of an object.

To display the list of local attributes of the "cnt" object, run the command: bop_sinfo -dq cnt | find "LOCAL"

The output of the command in a 17.2.0.4 environment would be:

producer_id LOCAL STRING(20)
persistent_id LOCAL STRING(60)
web_url LOCAL STRING(0) DERIVED('http://ibntest000222:8080/CAisd/pdmweb.exe?OP=SEARCH+FACTORY=cnt+SKIPLIST=1+QBE.EQ.id=' || CAST(id AS NVARCHAR))
combo_name LOCAL STRING(0) DERIVED(last_name || isnull(', ' || first_name || ' ' || middle_name))
combo_name2 LOCAL STRING(0) DERIVED(last_name || ',' || isnull(first_name) || ',' || isnull(middle_name))
notify_urgency1 LOCAL SREL -> noturg.enum
notify_urgency2 LOCAL SREL -> noturg.enum
notify_urgency3 LOCAL SREL -> noturg.enum
notify_urgency4 LOCAL SREL -> noturg.enum
pgroups LOCAL STRING(0)
auto_bias_wf LOCAL INTEGER
auto_bias_isswf LOCAL INTEGER
auto_bias_crwf LOCAL INTEGER
audit_userid LOCAL SREL -> cnt.id TENANCY_UNRESTRICTED

Environment

Release : 17.2.0.4 

Component : Service Desk Manager (SDM) > REST Web Services

Resolution

When specifying a LOCAL attribute in "X-Obj-Attrs" for an inactive object, use a where clause.  The format of the where clause is: "?WC=id%3dU'<uuid_of_cnt_entry>' ".

For example, use "/caisd-rest/cnt?WC=id%3dU'0B3EB1842CAD444783378E1B60E0FC48' " instead of "/caisd-rest/cnt/U'0B3EB1842CAD444783378E1B60E0FC48' " after replacing U'0B3EB1842CAD444783378E1B60E0FC48' with the UUID of the target cnt object.

Additional Information

The issue is known to occur in CA SDM 17.2.0.4. The associated defect is DE52173.