Comments

  • Charlie Mopps

    ...and to be clear.... My select statement looks like:

    "SELECT opportunity from opportunity where ID = 632681 limit 1"

    Which is a random record where that field is not null, just for testing purposes.

    I see you have more complicated SQL above for QueryCSV... What we're trying to do is return objects in blocks and include the names. Do we have to make a special select to get the names as well?

  • Charlie Mopps

    I've had it built that way, but I'm still not getting the name for the namedid.

    Here's my C# that's litterally cut and pasted from your documentation. I had to modify it for our QueryObjects request because there are no examples of that:

                    GenericField customField = new GenericField();
                    customField.name = "tds_lead_src";

                    GenericObject customFieldsc = new GenericObject();
                    customFieldsc.GenericFields = new GenericField[] { customField };
                    customFieldsc.ObjectType = new RNObjectType() { TypeName = "OpportunityCustomFieldsc" };

                    GenericField customFieldsPackage = new GenericField();
                    customFieldsPackage.name = "c";
                    customFieldsPackage.dataType = DataTypeEnum.OBJECT;
                    customFieldsPackage.dataTypeSpecified = true;
                    customFieldsPackage.DataValue = new DataValue();
                    customFieldsPackage.DataValue.Items = new[] { customFieldsc };
                    customFieldsPackage.DataValue.ItemsElementName = new[] { ItemsChoiceType.ObjectValue };


                    ObjTemplate.CustomFields = new GenericObject
                    {
                        GenericFields = new[] { customFieldsPackage },
                        ObjectType = new RNObjectType { TypeName = "ContactCustomFields" }
                    };

    Here's the XML that generates:

            <q1:CustomFields>
              <ObjectType xmlns="urn:generic.ws.rightnow.com/v1_2">
                <Namespace xsi:nil="true" />
                <TypeName>ContactCustomFields</TypeName>
              </ObjectType>
              <GenericFields name="c" dataType="OBJECT"
              xmlns="urn:generic.ws.rightnow.com/v1_2">
                <DataValue>
                  <ObjectValue>
                    <ObjectType>
                      <Namespace xsi:nil="true" />
                      <TypeName>OpportunityCustomFieldsc</TypeName>
                    </ObjectType>
                    <GenericFields name="tds_lead_src">
                      <DataValue xsi:nil="true" />
                    </GenericFields>
                  </ObjectValue>
                </DataValue>
              </GenericFields>
            </q1:CustomFields>

     

    And here's the XML for that field that gets returned. It has the correct ID in the return, but no name:

                        </n3:GenericFields>
                        <n3:GenericFields name="tds_lead_src"
                        dataType="NAMED_ID">
                          <n3:DataValue>
                            <n3:NamedIDValue>
                              <n2:ID id="1296"></n2:ID>
                            </n3:NamedIDValue>
                          </n3:DataValue>

     

     

    I actually get ALL the custom fields and their coresponding IDs, but no names.

     

  • Charlie Mopps

    Where in the tree of objects should this appear?
    For example I'm working in opportunities at the moment, so I have:

    Opportunity.Customfields.GenericFields.... ?

    Are there any examples out there? This particular functionality seems to have changed several times since the API was released and I'm finding conflicting info all over the place.

  • Charlie Mopps

    Here's the Soap Envelope I'm sending:

            <q1:CustomFields>
              <ObjectType xmlns="urn:generic.ws.rightnow.com/v1_2">
                <Namespace xsi:nil="true" />
                <TypeName>OpportunityCustomFields</TypeName>
              </ObjectType>
              <GenericFields name="tds_lead_src" dataType="NAMED_ID"
              xmlns="urn:generic.ws.rightnow.com/v1_2">
                <DataValue>
                  <NamedIDValue>
                    <ID xmlns="urn:base.ws.rightnow.com/v1_2" />
                  </NamedIDValue>
                </DataValue>
              </GenericFields>
            </q1:CustomFields>

     

     

    And then here's the Repsonse I get back:

                        <n3:GenericFields name="tds_lead_src"
                        dataType="NAMED_ID">
                          <n3:DataValue>
                            <n3:NamedIDValue>
                              <n2:ID id="1296"></n2:ID>
                            </n3:NamedIDValue>
                          </n3:DataValue>
                        </n3:GenericFields>

     

     

    I get the ID, but not the name. I'm assuming something's wrong with my request?

  • Charlie Mopps

    We are trying to replicated the entire database and continuously update it in preparation for the upcoming deprecation of ODBC so we can continue reporting... so yes, it's a large chunk of data indeed.

    QuerryCSV is very problematic, because it doesn't return data-types, and string values in the return are almost guaranteed to contain instances of whatever we use for a delimiter. If we use that we're going to have to custom map every field, one at a time, to it's place in our local Oracle tables. Given that this will be the ENTIRE database, that's a daunting task. Because your API doesn't work well with any middleware we've found, we have to code the XML by hand. I'm coding the captures in C#, packet capturing the XML envelopes and passing that to our middleware people so they can code the envelopes properly from there.

    Is there any documentation covering how to properly return a custom field namedID using QueryObjects?
    Further, is there a way to pre-build the XML envelope in such a way that it just, by default, returns all the names? I'd like to avoid having to code every single custom field by hand and then later add new ones when we create them in the application.

  • Charlie Mopps
    Chakravarthy Elchuri said:

    Finally added radio buttons in report

    Thanks,

    Chakravarthy.

    View original

    Wait... what? How did you get radio buttons in a report?

  • Charlie Mopps

    You cannot create a relationship in a report in Rightnow analytics if it does not already exist in the Object designer. All joins have to be built in the Object designer if they do not already exist.

  • Charlie Mopps

    I've gotten further on my issues. I've found that there is something really broken with the permissions on the report/workspace/object.

    I've got an object that links Orgs to contacts in a many to many relationship. My object is simply a linking table. I've a report on the Org that should show all of my objects and their related contacts. I've the report set to only have permissions to the object with a default action of "open" however, you cannot open them at all. However, if I then enable permissions to "Contacts" it will suddenly let you see the Report controls again and open the record from there. However, you still cannot double click them. If I enable permissions to the "Contact" record and disable permissions to my linking object, it will then let you open the linking object! Even by double clicking! Even though the report doesn't have the object checked anymore.

    I continue to update my ticket with Rightnow support with new info, but they haven't replied in weeks.

  • Charlie Mopps

    Stumbled across this because I had the same error.

    To fix it you have to change your app.config

    Change the bindings section to something like this:

          <bindings>
            <customBinding>
              <binding name="RightNowSyncBinding"
                       sendTimeout="00:10:00"
                       receiveTimeout="00:10:00"
                       openTimeout="00:10:00"
                       closeTimeout="00:10:00"
                             >
                <!-- The above timeouts determine how long the client will wait for a repsonse -->

                <security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
                      requireDerivedKeys="true" securityHeaderLayout="Lax" includeTimestamp="false">
                  <localClientSettings detectReplays="false" />
                  <localServiceSettings detectReplays="false" />
                </security>

                <textMessageEncoding messageVersion="Soap11"  />
                <httpsTransport maxReceivedMessageSize="524288000"/>
                <!-- the maxReveivedMessageSize MUST be made larger for the querry to work -->
              </binding>
            </customBinding>
          </bindings>

  • Charlie Mopps

    Stumbled across this because I had the same error.

    To fix it you have to change your app.config

    Change the bindings section to something like this:

          <bindings>
            <customBinding>
              <binding name="RightNowSyncBinding"
                       sendTimeout="00:10:00"
                       receiveTimeout="00:10:00"
                       openTimeout="00:10:00"
                       closeTimeout="00:10:00"
                             >
                <!-- The above timeouts determine how long the client will wait for a repsonse -->

                <security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
                      requireDerivedKeys="true" securityHeaderLayout="Lax" includeTimestamp="false">
                  <localClientSettings detectReplays="false" />
                  <localServiceSettings detectReplays="false" />
                </security>

                <textMessageEncoding messageVersion="Soap11"  />
                <httpsTransport maxReceivedMessageSize="524288000"/>
                <!-- the maxReveivedMessageSize MUST be made larger for the querry to work -->
              </binding>
            </customBinding>
          </bindings>

  • Charlie Mopps

    That's good advice! And I ran into that problem when we first started using objects a few years ago. Just to be sure, I checked again now and we've got full permissions to the object, even to delete and it's still not working. But, we have issues with custom objects already, we're aware of at least 2 bugs affecting our deployment that support is already working on and I suspect this might be related. We actually ran out of space for custom fields/objects which triggered all sorts of problems for us, I think we may be one of the first clients RN has had reach this limit. I'd strongly recommend that any team managing rightnow develop a strong policy to manage Custom Fields/Objects. Limit new ones, delete old fields, etc... You do not want to hit this limit, it's a very bad thing.

  • Charlie Mopps
    Jiju Dineshan said:

    Hi Clemens,

    We too are stuck with  the same issue, and we couldn't find "Hide report controls" option. Could you please guide us as to where can we find that option.

    Thanks.

    Regards

    Jiju

    View original

    Open the workspace in question.

    Click on the offending report

    Go to the "Design" tab

    On the far right, there are a list of check boxes, one of them is "Hide report commands"

    In my case, even showing the report commands doesn't help. There's some sort of bug on the custom object. I have had a ticket open with support for this for days/weeks, I'm still waiting for a reply. I'll come back here if we figure anything out.

  • Charlie Mopps

    No

    You can do it on a workspace though.

  • Charlie Mopps

    Interesting, I'm starting to think you are correct now. I had several workspaces where I had these buttons disabled and now it appears you can no-longer open records from these reports. This wasn't the case when I created them, but it's been a few upgrade since then. I'm not sure if this is intentional or a bug. I've a ticket open with support on a related issue, I'll see if they can answer this question for me as well.

  • Charlie Mopps

    That's not accurate. I have plenty of reports I can open records on that I have the controls disabled in. You do not need to have the controls enabled to open a record.