Data Types in Oracle BI Publisher Web Services
https://docs.oracle.com/cd/E23943_01/bi.1111/e22259/datatypes.htm#BIPDV209This chapter provides details on the data types that Oracle BI Publisher Web services use or define.
We are trying to fetch the data displayed in an OTBI data model through an web service for further integrations.
We use BI Publisher web services -> ReportServicesSoapBinding -> GetReportSampleData ->Requests1.
But this gives us following error:
Receiving respons HTTP/1.1 Connected / tunnel to target created / Sending request POST / Receiving response HTTP : Internal Server error
PublicReportsServiceImpl::generateReportsSampleData for reportsAbsolutePath [] Failure: Due to oracle.xdo.servlet.CreateException: report definition not found
Any idea what could cause this ?
Thank you.
Hi Maria,
Can you walk me through what webservice you're using? (full URL without your pod name will suffice).
The method you're calling I'm assuming takes the following parameters; reportAbsolutePath, userID, password. However, you're calling the getReportSampleData() method, which will only return the sample data that is stored on the data model post-parameters (i.e. you create a data model, view the data and click 'save sample data' on the BI Publisher Data Model editor). This is pretty useless unless you're looking to seed an external integration with metadata or programmatically retrieving sample XML to build templates.
The method you want is runReport(). runReport() takes in three parameters: reportRequest, userID, password. You'll need to build the reportRequest definition yourself to pass into the method, the details of which can be found here:
The easiest way to get the information you need dynamically is to first run the getReportDefinition() method, which takes in three parameters: reportAbsolutePath, userID, password. This will output the required data needed by the reportRequest definition which gets passed into the runReport() method. Now, it should also be noted that you can either return the raw template file with data (e.g. pdf, csv, excel etc.) and manipulate it downstream, or you can return the reportData, which is base64 encoded and will need to be decoded to use the data. Both options are explained in the link above, and if you scroll down slightly there will be another section for ReportResponse.
Thanks
Aaron
Hi Maria,
Certainly - first of all, are you authenticated? On the request page for SoapUI, in the bottom left-hand corner, there will be a little padlock icon followed by the word 'Auth'. Click on that, then enter your credentials using the 'Basic' authentication method (username + password).
Secondly, there's an issue with your absolute path; it's currently attempting to read the entire url for the report path vs the absolute.
Absolute Path:
/Custom/Human Capital Management/Integrations/PAY101/PAY101Report.xdo
Notice we omit the URL, and instead just include the path on BI to the report itself (including the report format, which will most likely be .xdo).
Hopefully you should be able to get a response from the server now.
Thanks
Aaron
@maria.stanciu - You probably already know this info....
It might be related to this known issue with OTBI:
Also, Oracle changed the WSDL version from 22A onward. If you haven't already done so, you'll probably want to update your SOAP code to use the v12 WSDL. We had lots of headaches and broken method calls after the 22A update until we started using v12. The official documentation for OBIEE 12.2.1.4 (upon which OTBI 22A+ is based) is still wrong and says to use v6 or v7...those versions no longer work (see Release Notes link below).
NOTE: The methods in v12 are changed from v6 and v7. Pay close attention to the order of parameters in your method calls since Oracle has rearranged them slightly (and added new parameters).
This error typically means that the user does not have permission to the report.
Best way to check this is log in via the UI with the user and ensure that user can navigate down to the report as well as edit it.
Hi Noelle,
Thank you.
Yes, the user does have access to the report and can navigate to it and edit it even.
Hi Maria,
Have you tried clearing the cache and retest?
Administration-> Manage publisher -> Click "Clear Object Cache" and 'Clear Metadata Cache'.
Regards,
Raghavan P
Hi Raghavan,
Thank you for your answer.
I have just tried the action you suggested.
We are not getting an error but the response file we get from the BI Publisher is empty (instead of containing the data from the data model).
Any suggestions on what could be the possible causes ?
Thank you.
Best regards,
Maria
Hi Aaron,
Thank you for your reply, it gives us more insights on a possible solution.
We have started to implement it and we got to the first step: call the getReportDefinition() method. We are using SoapUI to test this and we provided the absolutePath to the method (attached the print screen).
The next step is to give the userid and password but for this we need the template of the SOAP message to know where to fill in this information.
Is this something you can help us with please?
Thank you.
Regards,
Maria
We have tried to add :
<pub:userID>userid</pub:userID>
<pub:password>******</pub:password>
to the soap message but we are still getting the 401 Unauthorized error message
That worked like a charm, we are now getting the response from the server containing the report data.
Thank you for your reply , it solved our issue.
@Chris Pfeifer , I'll have a close look at your suggestions and keep them in mind.
Thank you very much for the input !