[900]: Service Denied. RIC creation using ATS_INSERT_S

Hi,

Im trying to write java program using EMA API to create RIC record on ATS. I have been following all the steps as documented here :

Implementing Refinitiv Real-Time APIs applications to work with ATS - Part 1 | Refinitiv Developers

But still got ack that says [900]: Service Denied. Referring to refinitiv documentation, it says "the record is incorrect or does not exist".

Here is the post message sent to ATS:

<!-- Outgoing Reactor message -->
<!-- java.nio.channels.SocketChannel[connected local=/10.21.248.34:64121 remote=/10.18.31.20:14002] -->
<!-- Wed May 18 10:53:59 ICT 2022 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<POST domainType="MARKET_PRICE" streamId="1" containerType="MSG" flags="0x66 (HAS_POST_ID|HAS_MSG_KEY|POST_COMPLETE|ACK)" postId="1" postUserId="24820" postUserAddr="10.21.248.34" dataSize="42">
<key flags="0x03 (HAS_SERVICE_ID|HAS_NAME)" serviceId="262" name="ATS_INSERT_S"/>
<dataBody>
<REFRESH domainType="MARKET_PRICE" streamId="0" containerType="FIELD_LIST" flags="0x00" groupId="0" State: Open/Ok/None - text: "" dataSize="26">
<dataBody>
<fieldList flags="0x08 (HAS_STANDARD_DATA)">
<fieldEntry fieldId="-1" data="4D59 5F4E 4557 5F52 4943"/>
<fieldEntry fieldId="22" data="0F0C"/>
<fieldEntry fieldId="25" data="0F0F"/>
</fieldList>
</dataBody>
</REFRESH>
</dataBody>
</POST>

And here is the ack :

<!-- Incoming Reactor message -->
<!-- java.nio.channels.SocketChannel[connected local=/10.21.248.34:64121 remote=/10.18.31.20:14002] -->
<!-- Wed May 18 10:53:59 ICT 2022 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<ACK domainType="MARKET_PRICE" streamId="1" containerType="NO_DATA" flags="0x32 (HAS_TEXT|HAS_MSG_KEY|HAS_NAK_CODE)" ackId="1" nakCode="132" text="[900]: Service Denied " dataSize="0">
<key flags="0x07 (HAS_SERVICE_ID|HAS_NAME|HAS_NAME_TYPE)" serviceId="262" name="ATS_INSERT_S" nameType="1"/>
<dataBody>
</dataBody>
</ACK>

2022-05-18 10:53:59.323 INFO 24820 --- [pool-2-thread-1] c.t.e.ommconsumer.SubmissionAppClient : AckMsg
streamId="1"
domain="MarketPrice Domain"
ackId="1"
nackCode="Unknown NackCode value 132"
text="[900]: Service Denied"
name="ATS_INSERT_S"
nameType="1"
serviceId="262"
AckMsgEnd

I have set ENABLE_INSERT_CONTRIB to TRUE in ats.params. I have also add X_RIC_NAME in both my local RDMFieldDictionary and ATS server RDMFieldDictionary (/opt/thomsonreuters/globalConfig/RDMFieldDictionary) as specified in rdms.cnf.


1652847452824.png

Anyone has idea why it still fails ?

And a few questions though. Why RDMFieldDictionary by default doesn't come with negative fid such as X_RIC_NAME so that we have to add it manually ?

is ENABLE_INSERT_CONTRIB the only thing i have to set in ATS server ? do i have to set any permission or some other things ?

What is NACK code 132 and how it could be unknown.

Thank you for your help.

Best Answer

  • wasin.w
    wasin.w admin
    Answer ✓

    Hello @William.yang1099

    By default, the RDMFieldDictionary file should be in your <RTDS installation path>/etc/ folder.

    I highly recommend you check with your Market data team to help you.

    If the problem still persists, I highly recommend you contact the ATS support team directly. This error message is generated from the RTDS-ATS, so it may require the server team to verify the issue. You can submit a ticket to the ATS support team via the https://my.refinitiv.com/content/mytr/en/productsupport.html link and choose "Refinitiv Real-Time Advanced Transformation Server" Product.

    contact-ats-support.png

Answers

  • Hello @William.yang1099

    Do your connection diagram looks like this?

    EMA Application --> RTDS (ADS/ADH) --> ATS

    If so, please be informed that the RTDS's RDMFieldDictionary file must contain the same ATS X_RIC_NAME field definition too.

  • Hi
    @wasin.w ,

    Do you know where i could find RDMFieldDictionary in RTDS ?