Portal trying to retrieve info from contacts table in SM, timeout and fails.

  • KM03177212
  • 11-Jun-2018
  • 11-Jun-2018

Summary

Open a request in Portal, field "Contact name" and "Request for" are not filled in

Question

Log in to Portal and try to open a new request. When you click in the field "Contact" or "Request For", it retrieves the values from SM.
Sometimes, it tries to get the values but times out and fails
This issue is random, sometimes it gets the contact values and other times it doesn't.


The list fields in the Portal wait for a short time for a response from the server, about 10 seconds.   In the SM log for the contacts query found this

RTE W sqllimit exceeded, user=smIntgAdmin      limit=5.000 actual=10.266 SQL statement follows
RTE D 3824: sqociSelectSome - EXECUTE:SELECT m1."CONTACT_NAME" FROM CONTCTSM1 m1 WHERE ((m1."CONTACT_NAME" IS NOT NULL and m1."CONTACT_NAME" <> :Y and (m1."CONTACT_NAME" LIKE :Y or m1."CONTACT_PHONE" LIKE :Y or m1."EXTENSION" LIKE :Y or m1."DEPT_NAME" LIKE :Y or m1."C
RTE D 3824: OMPANY" LIKE :Y or m1."OPERATOR_ID" LIKE :Y or m1."FULL_NAME" LIKE :Y))) ORDER BY m1."CONTACT_NAME" ASC

Answer


This is a timeout issue, it takes too long to get the contacts value.

To solve this, one solution could be to improve the Oracle queries, for example adding an index to the Oracle DB

Other solution is to modifie the format 'contacts.qbe.g' in SM:
The SL uses the columns on the format 'contacts.qbe.g' as 'searchable' fields for the query from the Portal (this SL is shared by SRC and was inherited by the Portal). 
So by adding or removing columns from that format you can 'search' contacts.  For example in the drop down you could enter the company name and the query would return all users for that company or you could enter a telephone number.
You can edit the format 'contacts.qbe.g' and add/remove fields as needed. For example, if you will sarch contacts only based on the Contact name, you can remove the columns for Department and Company (for example). This implies less data to be retrieved and will solve the timeout problem.