XML Bursting in Oracle Apps

XML Bursting

XML Bursting can be used to split one XML File into multiple XML Blocks. These individual xml blocks can then be used to generate reports and even use different layouts. You can also deliver the reports to multiple destinations based on a XML Element. The steps involved are listed below for your understanding:

  • Generate the XML File
  • Split the XML into multiple XML Blocks
  • Generate Report based on the individual XML Blocks
  • Deliver the report

Take a look at the below image and the process will be much more clearer:

XML Bursting Process
XML Bursting Process

Bursting Control File

Bursting control is used to identify:

  • How to split the XML file / data
  • How to deliver the Report
  • Delivery destination details

After defining the XML Bursting Control File, we will upload the same to the Data Definition. But before that, lets take a look at the XML file that we have.

<?xml version="1.0" encoding="UTF-8"?>
<INVOICEDATA>
  <LIST_G_SUPPLIER>
    <G_SUPPLIER>
      <SUPPLIER_NUMBER>1001</SUPPLIER_NUMBER>
      <SUPPLIER_NAME>VENDOR001</SUPPLIER_NAME>
      <SUPPLIER_EMAIL>contact@vendor1.com </SUPPLIER_EMAIL>
      <LIST_G_INV>
        <G_INV>
         <INV_NUMBER>INVOICE_01_001</INV_NUMBER>
         <CURRENCY_CODE>USD</CURRENCY_CODE>
         <AMOUNT>100.27</AMOUNT>
        <G/G_INV>
      </LIST_G_INV>
    </G_SUPPLIER>
    <G_SUPPLIER>
      <SUPPLIER_NUMBER>1002</SUPPLIER_NUMBER>
      <SUPPLIER_NAME>VENDOR002</SUPPLIER_NAME>
      <SUPPLIER_EMAIL>contact@vendor2.com</SUPPLIER_EMAIL>
      <LIST_G_INV>
        <G_INV>
          <INV_NUMBER>INVOICE_02_001</INV_NUMBER>
          <CURRENCY_CODE>USD</CURRENCY_CODE>
          <AMOUNT>612.99</AMOUNT>
        </G_INV>
      </LIST_G_INV>
    </G_SUPPLIER>
  </LIST_G_SUPPLIER>
</INVOICEDATA>

As you can see the above XML file has details of two Suppliers (VENDOR001 and VENDOR002). I want the invoice details of VENDOR001 to be emailed to contact@vendor1.com and invoice details of VENDOR002 to be emailed to contact@vendor2.com. In this case, I know that I have to split the XML File into two.

The first thing that we need to do is to identify the Level at which the file has to be split, so that we get two different XML files. If you take a closer look at the XML file, you will see that the <G_SUPPLIER> … </G_SUPPLIER> group is repeated twice. So to get two different XML Files, we will split the actual file at /INVOICEDATA/LIST_G_SUPPLIER/G_SUPPLIER Level. The result is the below XML Files.

Split XML Files
XML Files After Splitting

We also know that we need to deliver these reports by email. We will use the G_SUPPLIER/SUPPLIER_EMAIL element to get the email id from the XML file. Now let us take a look at the Bursting Control File.

<?xml version="1.0" encoding="utf-8"?>
<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi">
  <xapi:request select="/INVOICEDATA/LIST_G_SUPPLIER/G_SUPPLIER">
     <xapi:delivery>
       <xapi:email id="${SUPPLIER_NUMBER}" reply-to="ap@quest4apps.com" from="ap@quest4apps.com" port="25" server="ora.q4apps.us">
         <xapi:message subject="Invoice Details" attachment="true" to="${SUPPLIER_EMAIL}" id="${SUPPLIER_NUMBER}">
          Please find your electronically formatted Invoice Details.
         </xapi:message>
       </xapi:email>
     </xapi:delivery>
     <xapi:document delivery="${SUPPLIER_NUMBER}" output-type="pdf" output="/data/test1/interfaces/out/${SUPPLIER_NUMBER}.pdf">
       <xapi:template type="rtf" location="xdo://Q4A.XXQ4ASUPINV.en.00/?getSource=true" />
     </xapi:document>
  </xapi:request>
</xapi:requestset>

Please find below details of the XML tags.

xapi:request: Give details of how you want to split the XML File

xapi:email: Give details of the Email

  • id: This is a unique value that identifies each group. In our case it is the Supplier Number.
  • reply-to: This is the reply to email address
  • from: This is the from email address that will be used while sending the email
  • port: The port number of the email server. Check with your DBA / System Administrator for this value.
  • server: The details of the email server

xapi:message: Give details of the Email Message

  • subject: Subject of the Email
  • attachment: We are attaching the report output with the email. So the value should be “true”.
  • to: The email id of the Supplier, which is the recipient’s email address.
  • id: This is a unique value that identifies each group. In our case it is the Supplier Number.

xapi:document: Here we define the output document details

  • output-type: The output type of the report output.
  • output: The folder in which the output file will be saved.

xapi:template: Give details of the RTF Template

  • type: Give the details of the Template Type. In our case it is RTF
  • location: Location of the RTF Template.

Lets take a closer look at the location:

location="xdo://Q4A.XXQ4ASUPINV.en.00/?getSource=true"

For simplicity the above statement can be broken down as

location="xdo://Application Short Name.Template Code.Default Language.Default Territory/?getSource=true"

And you can use the below SQL Statement to get the details of the Template.

select   xtb.application_short_name||'.'||
         xtb.template_code ||'.'||
         xtb.default_language ||'.'||
         xtb.default_territory
  from   apps.xdo_templates_b xtb
 where   xtb.template_code ='<Template Code>';

Uploading the Bursting Control File

Once the bursting control file has been defined, you need to attach the same to the Data Definition. Query for the Data Definition and open the defintion. And then click on “Add File” button and upload the XML file that we have defined. Save the changes and you are all set to test the process.

Check the below image for more details:

Upload Bursting Control File

Submitting the Bursting Process

Attaching the XML Bursting Control file will not burst the report just yet. You need to submit the “XML Publisher Report Bursting Program” Concurrent program after the XML Publisher Report is completed. You can either manually Submit the program or use the below SQL Code Snippet in the After Report Trigger to submit the bursting program once the XML Publisher Report is completed.

DECLARE
   l_conc_id     NUMBER;
   g_request_id  NUMBER;
BEGIN
   l_conc_id := 
   fnd_request.submit_request
           (
             application   => 'XDO'
            ,program       => 'XDOBURSTREP'
            ,description   => NULL
            ,start_time    => SYSDATE
            ,sub_request   => FALSE
            ,argument1     => NULL          
            ,argument2     => g_request_id  -– Request ID of XML Publisher Report
            ,argument3     => 'Y'           -– debug Flag
           );

   COMMIT;
END;

In this post, I have tried to explain the XML Bursting process in detail. I hope this helps you. If you would like to know more about defining Triggers in XML Data Template, click here.

Thank You for reading!! Please let me know your suggestions and feedback. If you have any questions, please do let me know in the comments section or email me @ oracle@quest4apps.com


Comments

128 responses to “XML Bursting in Oracle Apps”

  1. Thanks Arun.It was a very good Article.I didnt have any XML background.However I was able to work on XML because of this article

    Thanks,
    Sujith

    1. ArunRaj Avatar

      Glad that it helped. Let me know if you need more help or if you have more questions.

      1. Ashwini Bhandakkar Avatar
        Ashwini Bhandakkar

        Hi Sir ,I am new in this field i want to learn this from scratch ,i m confused because we have to attach XML file in data template and rtf in template and xml schema is waht and email id where we write and that xml where we attach .plaese give me step by step tutorial from xml creation and xml bursting

  2. Umasankar Avatar
    Umasankar

    Hi ,

    How to write if conditions in data template

    Regards,
    Umasankar

    1. ArunRaj Avatar
      ArunRaj

      Thank you for question. Can you let me know your requirement and I will surely try to help you with your query.

      Thanks,
      Arun

  3. umasankar Avatar
    umasankar

    Hi Arun,

    Sorry for the late reply.. i am not able to know whether i get update on this or not hence late reply…

    I have to display PO number based on 2 conditions.At first i need to check on some temporary table ,if PO is not there on temporary table i need to get it from the Sales order where we are storing in some attribute columns.

    If you have some sample code how to write the if conditons in datatemplate please share.

    As of now i know only to write queries only in datatemplate.

    i have one more doubt like we have some triggers like afterReoprt,beforeReport etc.. in datatemplate is those triggers always written boolean values only?

    Regards,
    Umasankar

    1. ArunRaj Avatar
      ArunRaj

      Hi Umasankar,

      The easiest way is to:
      1. Use a before report trigger to call a function
      2. Based on the conditions, write select queries in the before report trigger and populate a temporary table (lets call it XX_PO_INFO_TEMP_TB) with the necessary values needed for the report
      3. In the data template, write the SQL Select to extract the values from XX_PO_INFO_TEMP_TB instead of the actual tables
      This way you are checking the conditions in the Before Report Trigger function and not in the data template.

      The after report and before report triggers returns BOOLEAN values. If you return any other value, the report will end in ERROR.
      Let me know if the approach is clear or if you have more questions. Have a good weekend.

      Thanks,
      Arun

  4. Umasankar Avatar
    Umasankar

    Hi Arun,

    Thanks for your reply.The approach is fine ,
    i just wanted to know is there a way to write if conditions in datatemplate.

    Regards,
    Umasankar

  5. hi Arun,
    I’ve a requirement on XML Bursting program should be submitted if any data available only for that report or the bursting program is completed in Error if there is no data retrieved by query. I want to complete bursting program as warning if there is no data available to burst.

    could you please help how can we achieve this requirement.

    Regards,
    Rama.

    1. Hi Rama,

      You can have an after report trigger that invokes the XML Bursting program. Before the bursting program is invoked, check if there are valid records. If there are valid records then invoke the bursting program else don’t invoke the bursting program.

      Let me know if that helps.

      Thanks,
      Arun

  6. Hi Arun,

    If we need to invoke XML Bursting Program through report and the report is pl/sql based then,how to do same?

    Thanks,
    Pallavi

    1. Hi Pallavi,

      I am assuming that the PL/SQL Report output is XML.

      Create a PL/SQL Package
      Submit the pl/sql report. You can follow steps in this post
      Once the report is completed, you can invoke the xml bursting program. Follow the steps at the end of this post

      I hope this gives you an idea. Let me know if you have questions. Let me know if it works.

      Thanks,
      Arun

      1. I have mailed you the issue.Please check.

  7. Hi Arun,

    Can we attach more than one attachment to the mail ?

    Thanks,

    1. Hi,

      I don’t think XML Bursting can be used to attach multiple files in one email.
      You can however burst the multiple file(s) to a directory in unix and then send the multiple files from the directory using mailx or some other mailing utility.

      I will take a more closer look and see if there is any way of doing this using XML Bursting.

      Thanks,
      Arun

  8. Hi Arun,

    I have created a lookup for bursting emails.The lookup captures all the emails which needs to be sent emails.How can I call same in bursting file?
    Appreciate your response.

    Thanks,
    Pal

    1. Hi Pallavi,

      As far as I know you cannot call the List of values from the XML Bursting Control File.
      What you can do is to include the List of emails as part of the actual data (xml data) that is used by XML Bursting control file to split and delivery the data.

      May be include a XML Tag “ email1, email2, email3 . Use this XML Tag in the XML Bursting Control File.
      I will check if there is a way to call the List of values from Bursting Control file, however it seems highly unlikely.

      Thanks,
      Arun

      1. how to capture the request ID for After Report Trigger in xml bursting:

        c_cp_request_id CONSTANT NUMBER := :P_CONC_REQUEST_ID;

        or

        should use the API: fnd_global.conc_request_id ??

        1. ArunRaj Avatar

          Hi Arun,

          If you are using the below code snippet, “l_conc_id” will have the concurrent request id (if the request id submitted successfully).
          If you are using some other means to invoke the XML bursting let me know.

          l_conc_id :=
          fnd_request.submit_request
          (
          application => ‘XDO’
          ,program => ‘XDOBURSTREP’
          ,description => NULL
          ,start_time => SYSDATE
          ,sub_request => FALSE
          ,argument1 => NULL
          ,argument2 => g_request_id -– Request ID of XML Publisher Report
          ,argument3 => ‘Y’ -– debug Flag
          );

          Thanks,
          Arun

          1. I am talking about how get the :
            this request ID

            I want to call the XML bursting in after-report Trigger in XML Publisher Report. So to get the Request ID of XML Publisher Report to it to the bursting program.

            Thank you,
            Arun

          2. ArunRaj Avatar

            Hi Arun,

            Let me know if this is what you are trying:

            1. submit the XML Bursting Program from the After Report Trigger?
            2. And are you trying to pass the request id of the XML Publisher Report request id to the FND_REQUEST.SUBMIT_REQUEST API?

            If that is the case then you can get the request id using fnd_global.conc_request_id.

            Thanks,
            Arun

          3. Yes, This is what I expected. Thank You, So much!

            Arun

          4. ArunRaj Avatar

            Happy to Help. Good luck.

  9. nice work….great

    1. Thanks 🙂

  10. can u please share your gmail address .

    Regards,
    Riya.

    1. ArunRaj Avatar

      You can reach me @ arunraj@quest4apps.com

      Thanks,
      Arun

  11. Ramesh K Avatar

    Hi ArunRaj,

    How to find the path for xapi:document.output.
    I just want find the files location,which are sending through an emails.

    Thanks,
    Ramesh K.

    1. ArunRaj Avatar

      Hi Ramesh,

      Are you using only email option or are you storing the output in the file system as well?
      If you are using xapi:document (like shown below) option then you should be able to see the path as well:

      output=”/data/test1/interfaces/out/${SUPPLIER_NUMBER}.pdf”>.

      Let me know.

      Thanks,
      Arun

      1. Vinod Avatar

        Hi Arun,
        I have used the below bursting control file but it has not generated any PDF file and bursting program failed. The bursting program log file provide not much information. Do you have information about this? I have run the bursting program manually after BI report.

        1. ArunRaj Avatar
          ArunRaj

          Hi,

          Can you send me the Bursting control file to arunraj@quest4apps.com?

          Thanks,
          Arun

          1. Vinod Avatar

            Hi,
            I have sent the bursting file to your id. Please check the bursting concurrent program log file as it is failed but no error message in the log file.

            +++++++++++++++++++++++++++++++++++++
            – Local, Single and Multiple, user-variable:cp:Dummy for Data Security=}
            Start bursting process..

            +—————————————————————————+
            Executing request completion options…

            Output file size:
            0

            +++++++++++++++++++++++++++++++++++

          2. ArunRaj Avatar
            ArunRaj

            Hi Vinod,

            Is the BI report completing successfully? Can you send me a sample XML file of the BI report?
            Is the directory path correct?

            Thanks,
            Arun

          3. Vinod Avatar

            Hi Arun,
            The program completes normal now after I have given full path name with RTF file name in location field. The PDF files are generated now in server. I am working on email issue as email is not generated through bursting XML option.

            Thanks,
            Vinod

          4. Vinod Avatar

            Hi Arun,
            Do I need to setup any configuration for email as PDF file is generated in /tmp folder but bursting program still throws error without any information in the log file. If it is problem with XML or bursting file, the PDF would not be generated but it is generated.

            Please check the log file below and help:

            Check Request – Local, Single and Multiple, user-variable:cp:Dummy for Data Security=}
            Start bursting process..
            Bursting process complete..
            Generating Bursting Status Report..

            +—————————————————————————+
            Executing request completion options…

            Output file size:
            1395

          5. ArunRaj Avatar
            ArunRaj

            Vinod,

            Ok. So that is some good news. Can you send me the updated Bursting Control file to my email id?
            It could be something wrong with email server configuration. Are you able to receive any other emails from the server?

            Thanks,
            Arun

          6. ArunRaj Avatar
            ArunRaj

            Hi Vinod,

            You may have to create the Run Time / Server Configuration File. Please take a look the below link:

            https://docs.oracle.com/cd/E10091_01/doc/bip.1013/b40017/T421739T479696.htm

            Most probably your DBA / System administrator should be able to help you on this.

            Thanks,
            Arun

  12. Yarram Srikanth Avatar
    Yarram Srikanth

    Hi Arun

    Can you help me on Split issue . My XML out have two different deliver id for one sales order . The PDF file have total out put . sales order have 23 lines in that 22 lines had one delivery and another one is one delivery . Can you tell me how can split those out put into PDF becuase I need to put into server with delivery id name .. My control file have

    it genarating only one out put file in server with first delivery name ..

    Regards
    Srikanth

    1. ArunRaj Avatar
      ArunRaj

      Hi Srikanth,

      Can you send me a sample XML file to arunraj@quest4apps.com? I will take a look.

      Thanks,
      Arun

      1. Yarram Srikanth Avatar
        Yarram Srikanth

        Hi Arun

        I have sent the XML file and Brusting file and Output file

        Thanks & Regards
        Srikanth

        1. ArunRaj Avatar
          ArunRaj

          Hi Srikanth,

          I have replied to your email. Try that and let me know if that works.

          Thanks,
          Arun

          1. Pradeep Avatar
            Pradeep

            Hi Arun, Can you please give me your email id. I have an issue with bursting. I will send the issue details.

          2. ArunRaj Avatar
            ArunRaj

            Hi Pradeep,

            You can reach me @ arunraj@quest4apps.com

            Thanks,
            Arun

          3. Yarram Srikanth Avatar
            Yarram Srikanth

            Hi Arun

            Thanks for your help!

            It’s working perfect ……….. The website is very useful to developers 🙂

            Thanks & Regards
            Srikanht

      2. Hi Arun, I am facing the same split issue for the Invoice Printing. couldn’t generate multiple PDF’s, it is generating only one file for all the invoices. Do we need to take care of page break in the RTF template? The report concurrent program is completing successfully and Bursting program is also getting completed successfully.
        can you suggest me how to proceed on this.

        Thanks,
        Vamshi.

  13. Rahul Parit Avatar
    Rahul Parit

    Hi,

    You have written such nice article. Thank you for the same.
    I followed process from above mentioned post. But I am getting error while running my XML Publisher Report Bursting Program. Please help me. I really need your help.

    Regards,
    Rahul
    rahulparit8992@gmail.com

    1. ArunRaj Avatar
      ArunRaj

      Hi Rahul,

      Thank you for the kind words. Please email me the error details / log message to arunraj@quest4apps.com

      Cheers,
      Arun

  14. Anil Kumar Dahiya Avatar
    Anil Kumar Dahiya

    Hi Arun ,

    Can you Please tell me how we can send the out put of xml report in different languages in different countries? for example suppose we have to send the output of any report in America in English, China in chines and in japan in Japanese.

    Regard
    Anil

    1. ArunRaj Avatar

      Hi Anil,

      Here is an example of the same.

      https://blogs.oracle.com/BIDeveloper/entry/bursting_translation

      Also check the sample files provided in the blog. You will get a better understanding of the process.
      Let me know if you need more details.

      Cheers,
      Arun

  15. Rahul Parit Avatar
    Rahul Parit

    Hi Arun,

    Thank you for your very detailed and positive information as well as for the help you provided to me through emails. I would like to mention that your site is very useful for the beginners to oracle apps. Your articles are easy to understand.

    Keep up the good work.

    Regards,
    Rahul

    1. ArunRaj Avatar
      ArunRaj

      Hi Rahul,

      I am really glad it helped. Follow our website for more content. We will be starting video tutorials as well.

      Thanks,
      Arun

  16. Hi Arun,
    Nice article… I havent worked on xml bursting so far and when I saw this site, its clear with the process in detail.

    Before starting to work on this, i have 2 simple questions to get it cleared from you.

    1. Can we send complete file to single/multiple emails without data split ?
    2. Can we send an excel output as my report gives output in Excel format.

    Regards,
    Sri

    1. ArunRaj Avatar

      Hi Sri,
      Glad it helped.

      1. Can we send complete file to single/multiple emails without data split ? –> Bursting is used to split the data and send to recipients.
      If you want to send the complete file as an email, you can use mailx, uuencode utilities in Unix.

      2. Can we send an excel output as my report gives output in Excel format? –> yes you can.

      Let me know if you have more questions.

      Thanks,
      Arun

  17. Hi Arun,

    Amazing article. I was thinking it would be very complex to send separate emails for each invoice. But, this solved my problem in couple of hours. I have an additional requirement to thi though.

    Can I call a PLSQL API from bursting file?

    My requirement is that I need to call an existing PLSQL API which attaches these newly created invoice pdfs to transaction screen, and also mark these invoices as emailed. So, I was thinking it would be great if I can call that API right after a PDF is created and sent out to the customer.

    Really appriciate your response.

    Thanks,
    VJ

    1. hi VJ,

      The easiest way that I can think of is this. I am assuming you used the below code in the After Report Trigger.
      I will have to do some thorough digging to see if we can call an API from the bursting XML control file. But the below code should work in most scenarios.
      Let me know.

      DECLARE
      l_conc_id NUMBER;
      g_request_id NUMBER;
      BEGIN
      l_conc_id :=
      fnd_request.submit_request
      (
      XML Bursting Program
      );

      COMMIT;

      —write the code snippet to call the API to mark the invoice as emailed and add the invoice pdfs to transaction screen

      END;

      Thanks,
      Arun

      1. Thanks Arun for the reply. I am doing what you suggested.

        I have another question though, I should be able to attach the individual PDFs to transactions even when the users do not want to send the email out. I have a parameter to send the emails. If that parameter is passed as “No”, it should not send the emails, but still print separate pdf for each transaction so that I can attach them to transactions. Is there a way, we can do it.

        Thanks in advance.
        VJ

        1. Hi VJ,

          You have an option to store the file in the server and email it to a person using XML Bursting. You can do both or one of them.
          In your case if the email parameter is set to No, save the file on the server and don’t email. If the email parameter is set to Yes, email it out and also save it (just for back up purposes).

          You can use the file saved on the server to attach to the transactions.

          Let me know if that explains.

          Thanks,
          Arun

  18. Hi Arun,

    Thanks for the reply. Can you please let me know how can I do that using your example?

    Thanks,
    VJ

    1. Hi VJ,

      Please refer to the below section of code in the Bursting Control File:

      document delivery=”${SUPPLIER_NUMBER}” output-type=”pdf” output=”/data/test1/interfaces/out/${SUPPLIER_NUMBER}.pdf”
      template type=”rtf” location=”xdo://Q4A.XXQ4ASUPINV.en.00/?getSource=true”

      The output is generated as PDF and stored at “/data/test1/interfaces/out/” directory in my example. You can give the path where you want to store the files.
      I have given details of how to find the “location” value in my post. Hope this helps.

      Thanks,
      Arun

  19. Hi Arun,

    Thanks a lot for the replies.

    I have another requirement which is very critical for the business.

    Question:
    Suppose I am running my XML report and bursting for 20 Invoices, and out of those 20 invoices, 10 belong to one customer A, 5 belong to customer B, and the remaining 5 belong to different customers. The requirement is that the program needs to send one email per customer with one pdf for each invoice. i.e, customer A should receive one email with 10 attachments for 10 invoices (I cannot combine these 10 into one pdf due to different ShipTo etc). Customer B should receive one email with 5 attachments, and remaining customer should receive one email each with one attachment.

    Can you please let me know how achieve this using the XML bursting? This is a very critical requirement that needs to be completed ASAP.

    Thanks a lot,
    VJ

    1. I need to spend some time on this. Let me ask you this?

      If there are 10 invoices for a customer, instead of having 10 different files, can we have one pdf file with separate pages for each invoice? Or page break at each invoice number level?
      This will be much easier to implement.

      One other option is to save the pdfs in the server. So Customer123’s invoice can be saved as Customer123_Invoice1.pdf, Customer123_Invoice2.pdf etc. And you can use a unix shell script to group all the invoices based on the customer number and send an email. The bursting will create the pdfs, and once bursting is complete you can use unix script to email the files. You need to be a little creative to get the email id for each customer in this case.

      Think about the above two and let me know..

      ~Arun

      1. Hi Arun,

        I cannot combine invoices into single pdf. I am trying to avoid another script of program to send the emails out and was wondering if there is any way to do it as part of the bursting itself.

        Thanks,
        VJ

  20. Mukesh Gaur Avatar
    Mukesh Gaur

    Hi Arun,

    I have droped a email about my Problems.

    This is a good article for Beginers like me. But I am still have some questions, like
    How we are creating a Concurrent Program for Bursting Control File ? Is this program is different from XML File Creation (XDODTEXE Executable Concurrent Program) ? Do we have to attach RTF file to Same Short Code of Bursting Program will automatically take it from Control File Definition ?

    Regards,
    MG

    1. ArunRaj Avatar

      Thanks. I will check my email and reply.

      Regards,
      Arun

    2. ArunRaj Avatar

      Hi Mukesh,

      I have not received your email. Please send it to arunraj@quest4apps.com

      Thanks,
      Arun

  21. Hi Arun,

    My problem with XML Bursting is that i have 1 salesorder with 2 pickslip numbers. When i do a pick slip only one of the pick slips sends an email and the other errors out. can you give me advice on what could be the issue.

    Thanks,
    Ken

    1. ArunRaj Avatar

      Hi Ken,

      Two different email ids? Is one of them missing email id?
      I will need more details to help you. Can you send me the sample xml file and the xml bursting control file to email id (arunraj@quest4apps.com)?

      Thanks,
      Arun

      1. hi Arun,
        you email id is not going through.

        Delivery to the following recipient failed permanently:

        arunraj@quest4apps.com

        Technical details of permanent failure:
        Google tried to deliver your message, but it was rejected by the server for the recipient domain quest4apps.com by mx10.mailspamprotection.com. [96.127.190.2].

        The error that the other server returned was:
        550 relay not permitted!

        1. Hi Ken,

          Seems like there is some issue with the mail server. I am working with support to resolve.
          Feel free to send me an email – arun.rajs@outlook.com

          Thanks,
          Arun

  22. Hi Arun,

    Thanks for your excellent blog. It gives me a quick knowledge about the XML bursting process. I’m working on generating the bursting file to email the SO acknowledgment to the customer. I’m getting the below error message in the log, but the directory is available in the server with full file permission. Can you please assist me on this?

    Also let me know, if you want to me to send you the bursting control file.

    /u01/oracle/TEST/outbound/1003401.pdf (No such file or directory)
    java.io.FileNotFoundException: /u01/oracle/TEST/outbound/1003401.pdf (No such file or directory)

    Thanks for your help on this!

    Regards,
    Raj

    1. Hi,

      I am very glad the blog helped you.
      It can be caused by not having the correct the path in the XML Bursting Control file.

      Try to give the complete path (absolute path) to the directory in the bursting control file. You can send me the bursting control file as well.

      Thanks,
      Arun

  23. Hi Arun,

    Is it possible to add the logo to the email which is generated via XML bursting?

    Regards,
    Raj

    1. Hi,

      Logo in the attachment? Or within the body of the email?

      Thanks,
      Arun

      1. Hi Arun,

        In the body of the email.

        Regards,
        Raj

  24. Tatiana Avatar

    Hi Arun,

    I hope you can help me in solving my problem.
    I create the XML file that contains multiple header and multiple related rows (for example Sales headers and Sales lines for each header). I need to split the file and send mail with attached file which contains 1 header and all lines.
    I created bursing control file for your example. But the output is only one letter wich the file which contains all the rows for first header. Other files are created empty and the letters are not sent. The output file has excel format.

    Regards,
    Tatiana

    1. ArunRaj Avatar

      Hi Tatiana,

      Sorry for the late reply. I was away and was not accessing the webmails / comments. I hope you got it working.
      If you still need help let me know.

      ~Arun

  25. Hi Arun,

    XML bursting concept was very clear . Really appreciate on your help.

    Regards

    Satish

    1. ArunRaj Avatar

      Glad it helped.

  26. Gaurav Kothari Avatar
    Gaurav Kothari

    Hi Arun,

    Thanks for the wonderful article on
    Xml bursting…

    Can you please tell me how to add an image in message body of the email.
    For example

    ‘Please find attached invoice.

    Thank you for shopping with us’

    It would be really helpful if you can reply as soon as possible….

    1. Hi Gaurav,

      Did you get this working?

  27. Manikanth Avatar
    Manikanth

    Hi arun,

    I have a small doubt if we have 10 employees and for the 10 employees email should send individual with their respective attachment. How is that possible with the xml brusting.

    Thank You.

    1. Arun Raj Avatar
      Arun Raj

      In bursting control file you can set this.

      1. Split the files based on the email id
      –> in this section you will include Employee Id. So that a separate output is generated for each employee id
      2. in xpi:message section, include the email id for the employee


      Please find your electronically formatted reprot Details.

      Thanks,
      Arun

  28. Hi Arun,

    Your Articles are very good 🙂 Thanks for providing such kind of clear info. If you provide some tutorials on OAF and ADF it will be very helpfull.

    I have one question on Bursting process

    If we select the delivery type as EMAIL in bursting control file, Does the PDF output files will be stored in server path and then email will be sent to the respective persons ( or ) The Bursting Engine simply generate the PDF file and send it to respective persons email at run time without storing the output file anywhere in the server?

    Thanks,
    Suneel.

    1. Arun Raj Avatar
      Arun Raj

      Hi,

      You do have the option to store the file in the server and email.

      Thanks,
      Arun

  29. Hi Arun,

    there are multiple customer and user wants to use layout specific to that customer at the time of bursting. Is there any way to get multiple layouts with same data definition for bursting?

    Thanks,
    Vinni

    1. Arun Raj Avatar
      Arun Raj

      Hi,

      If you look at the below example and focus on “xapi:template“, we are defining the template to be used.
      I am assuming we can define multiple templates like below. I will have to test it out.



      Thanks,
      Arun

  30. Eric Vloeijberghs Avatar
    Eric Vloeijberghs

    Hello Arun,

    Great article!
    Do you know if it is possible to email the output in multiple output types, for example an email with both PDF and excel attachment?

    Thanks Eric

    1. Arun Raj Avatar
      Arun Raj

      Hi Eric,

      If you have already got the solution let me know.

      I will have to analyze this one to see if we can do that using the same XML Bursting definition.

      However there is a alternate way to do this. Use XML Bursting to generate the files in the File Server (Unix / Windows) – PDF and XLS.
      Use unix shell script (if you are in unix) to attach the files and send the email.

      Thanks,
      Arun

      1. Hi,

        I would like to schedule the request. I don’t think your alternate solution can be automated?

        Eric

        1. Arun Raj Avatar
          Arun Raj

          Hi Eric,

          1. Create a unix script to attach the files and sent the email
          2. Create a concurrent program (the executable will the script created on step 1)
          3. Once the XML Bursting is completed, you can invoke this concurrent program

          Or you can create a request set:
          1. XML Bursting program
          2. Host concurrent program to sent emails.

          Thanks,
          Arun

  31. Hi Arun,

    my bursting program errors without any completion message.

    Below is the XML:


    33594776
    33594775
    XXVS Order Fullfillment Alert Program
    /d01/applmgr/common_top/admin/out/IRPROD/o33594776.zip

    1010000536
    pdf
    email
    /usr/tmp/071218_032150662/1010000536.pdf
    fail
    Error!! Could not deliver the output for Delivery channel:null . Please check the Log for error details..

    And log:

    +—————————————————————————+
    XML Publisher: Version : 11.5.0

    Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.

    XDOBURSTREP module: XML Publisher Report Bursting Program
    +—————————————————————————+

    Current system time is 12-JUL-2018 15:21:47

    +—————————————————————————+

    XML/BI Publisher Version : 5.6.3
    Request ID: 33594776
    All Parameters: ReportRequestID=33594775:DebugFlag=Y
    Report Req ID: 33594775
    Debug Flag: Y
    Updating request description
    Updated description
    Retrieving XML request information
    Node Name:ILG1LXE11IAP02
    Preparing parameters
    null output =/d01/applmgr/common_top/admin/out/IRPROD/o33594776.out
    inputfilename =/d01/applmgr/common_top/admin/out/IRPROD/o33594775.out
    Data XML File:/d01/applmgr/common_top/admin/out/IRPROD/o33594775.out
    Set Bursting parameters..
    Temp. Directory:/usr/tmp
    [071218_032150600][][STATEMENT] Oracle XML Parser version ::: Oracle XDK Java 9.0.4.0.0 Production
    [071218_032150605][][STATEMENT] setOAProperties called..
    Bursting propertes…..
    {user-variable:cp:territory=US, user-variable:cp:ReportRequestID=33594775, user-variable:cp:language=en, user-variable:cp:responsibility=52845, user-variable.OA_MEDIA=https://oracle-erp.ges.symantec.com:8000/OA_MEDIA, burstng-source=EBS, user-variable:cp:DebugFlag=Y, user-variable:cp:parent_request_id=33594775, user-variable:cp:locale=en-US, user-variable:cp:user=SYSADMIN, user-variable:cp:application_short_name=XDO, user-variable:cp:request_id=33594776, user-variable:cp:org_id=44, user-variable:cp:reportdescription=XXVS Order Fullfillment Alert Program}
    Start bursting process..
    Bursting process complete..
    Generating Bursting Status Report..
    +—————————————————————————+
    Start of log messages from FND_FILE
    +—————————————————————————+
    +—————————————————————————+
    End of log messages from FND_FILE
    +—————————————————————————+

    +—————————————————————————+
    Executing request completion options…

    Finished executing request completion options.

    +—————————————————————————+
    Concurrent request completed
    Current system time is 12-JUL-2018 15:21:52

    +—————————————————————————+

    I could find any clues on the error cause.

    Can you please help me with this?

    Thanks,
    Ram

    1. Arun Raj Avatar
      Arun Raj

      Can you send me the xml file and the bursting control file to arun.rajs@outlook.com
      Also attach the expected output format.

      Thanks,
      Arun

  32. Very well explained! Thanks.

    1. Thanks for the kind words!!

  33. Hi Arun,

    The whole worked fine.. My XML Publisher concurrent program is generating the required output but the bursting program is failing with error “No such file or directory”. When i looked into the location of the output file it was something else than \temp.

    Now when i know the location.. the other program arise is.. The output file generated by BI publisher named as “Concurrent_Program_Short_name”_”RequestID”.pdf

    Now how do i get the concurrent request id as input in control file?

    Regards
    Sahil Kathuria

    1. Arun Raj Avatar

      I am assuming you are trying to append the Request Id to the end of the file name.
      The easiest way I can think of is to have the “Request Id” in the XML file. In my case, I will have something like below. I hope this makes sense.

      
          <G_SUPPLIER>
            <REQUEST_ID>123456</REQUEST_ID>
            <SUPPLIER_NUMBER>1001</SUPPLIER_NUMBER>
            <SUPPLIER_NAME>VENDOR001</SUPPLIER_NAME>
            <SUPPLIER_EMAIL>contact@vendor1.com </SUPPLIER_EMAIL>
            <LIST_G_INV>
              <G_INV>
               <INV_NUMBER>INVOICE_01_001</INV_NUMBER>
               <CURRENCY_CODE>USD</CURRENCY_CODE>
               <AMOUNT>100.27</AMOUNT>
              <G/G_INV>
            </LIST_G_INV>
          </G_SUPPLIER>
          <G_SUPPLIER>
            <REQUEST_ID>123456</REQUEST_ID>
            <SUPPLIER_NUMBER>1002</SUPPLIER_NUMBER>
            <SUPPLIER_NAME>VENDOR002</SUPPLIER_NAME>
            <SUPPLIER_EMAIL>contact@vendor2.com</SUPPLIER_EMAIL>
            <LIST_G_INV>
              <G_INV>
                <INV_NUMBER>INVOICE_02_001</INV_NUMBER>
                <CURRENCY_CODE>USD</CURRENCY_CODE>
                <AMOUNT>612.99</AMOUNT>
              </G_INV>
            </LIST_G_INV>
          </G_SUPPLIER>
      
      

      Cheers,
      Arun

  34. Hi Arun,
    We have a custom program that generates XML output via RDF Report and call Bursting process to send email to the appropriate customer.
    The XML data is generated fine, calls Bursting process which completes normal with Bursting output file showing as Success but no email has gone out to customer. Our internal email address is also in BCC but the mail hasnt been received on internal email as well.

    Is there something being missed ?

    Thanks in advance

    1. I will start by check these:
      Is the mail server setup correctly? Can you send an email from your server to your email id?

      Thanks,
      Arun

      1. I am able to send email via server to internal email address but not external like gmail etc.

        1. Arun Raj Avatar

          Check with your admin to see if specific domains are being blocked!!

          Regards,
          Arun

  35. Hi Arun,

    I’m new to BI Publisher and this post has helped me a lot ….. Thank you. I now have a problem that I would appreciate some help with, if you don;t mind.

    I have a table of 5 records, 4 with one email address and the 5th with a different one. I am trying to email each of the records individually, so the bursting program should send 5 seperate emails. What I am getting is 1 email containing all the .pdf files sent to the first email address. I am running both the the main program and the bursting program via ‘fnd_request.submit_request’ in a PL/SQL package.

    Would you mind having a look at my code and pointing me in the right direction.

    ANY help would be appreciated.

    Thanks in advanve

    Have Fun

    Mick

    1. Hi,

      I found the problem just after posting this. I had a spelling mistake for the ‘Root’ in the bursting control file.

      Have Fun

      Mick

      1. Arun Raj Avatar
        Arun Raj

        Awesome. Glad you were able to figure it out.

        1. Hi Arun,

          I have another queston ……. Back in 2016 a guy asked if you could add a logo to the email body when bursting, it appears that the question was never answered.

          I have the same question …. I’ve searched both Metalink and google but can not find an answer.

          So …… In the bursting control file is it possible to add a static logo within the /xapi:message> block. ????

          TIA

          Have Fun

          Mick

          1. Arun Raj Avatar
            Arun Raj

            Hi Mick,

            Check this post
            And read the reply from JohanndT. That should do the trick.

            Let me know how it goes!

            Regards,
            Arun

          2. Hi Arun,

            I’ve checked out all the posts but nothing is quite what I’m looking for. I dont need the logo in the template but in the body of the email itself.

            Dear ${FIRST_NAME}

            Please find attached your Service Order for this week.

            Kind regards,

            Anaïs

            LOGO NEEDS TO GO HERE

            Thanks

            Mick

          3. Hi Arun,

            Pleae ignore my last post ……. I was searching for ‘JohanndT’ here rather than in the ‘Post’ … 🙁

            Mick

  36. Hello,

    Is it possible to dynamically change body message based on some parameter? Can body message be passed as variable in the bursting file?

    Regards,
    Hemant

  37. MUBARAK ALI Avatar
    MUBARAK ALI

    Hi Arun,

    Great article !

    In my scenario, I have an XML template in the below format which is not similar to the one you shared on top. Can you please help me in setting up the ‘Select’ path in the Bursting Control File, I want to splIt the files base on the CUSTOMER_NAME.

    +

    +

  38. MUBARAK ALI Avatar
    MUBARAK ALI

    Hi Arun,

    Awesome work !

    I need a little help. Can you please help me in decoding the Bursting Control path for the below XML template. I want the sheet to be split on CUSTOMER_NAME. Since the format in different to your shared one on top, it is confusing. Thanks

    +

    +

  39. Hi Arun,

    Hope you are doing good.

    I need your help with respect to XML Busting in Oracle Apps.

    I have a AR report which generate n number of invoices the requirement is to place PDFs in server for each Customer via Bursting.i.e CustomerA.pdf , CustomerB.pdf.

    How can I split report data in different PDFs for each customer.

    1. Arun Raj Avatar
      Arun Raj

      Were you able to figure this out? If not then please email me at arun.rajs@outlook.com. Stay safe.
      Can you also include a sample XML File and the XML Bursting Definition file.

  40. silukaan Avatar
    silukaan

    This xml bursting concept is pretty simple and understandable … even a beginner to professional can easily understand. Please put all technical details like this. Thanks for help to the Oracle apps enthusiast.

    1. Arun Raj Avatar
      Arun Raj

      Thank you. Appreciate the feedback.

  41. abishek Avatar
    abishek

    can we zip a csv file in xml publisher

    1. Arun Raj Avatar
      Arun Raj

      I dont think you can. The only option I am aware of is to create zipped PDF Files. Yon can check that out here.

  42. MUBARAK ALI Avatar
    MUBARAK ALI

    Hi Arun,

    Is there a solution to place files in a folder on the client’s local system instead of mailing them.

    Thanks in anticipation.

    1. Arun Raj Avatar
      Arun Raj

      The bursting program can place the file on a server. And if you are able to mount the shared drive to the server may be you will be able to achieve what you are looking for.

  43. Sheetal Talele Avatar
    Sheetal Talele

    Hii Sir, Can I send Excel output to some mail IDs?
    Output is generated on executing a concurrent program.

    1. Arun Raj Avatar
      Arun Raj

      if you use bursting you can email the output.

  44. annie r Avatar
    annie r

    Hi Arun,

    In service contracts module, I am using burst control file to send a notification email to that respective contract owner, if the meter readings for the counter are not entered for particular billing period.

    One owner can have more than one contract. So I wanted to send all the contract details in one email which belongs to him.

    Can you please help. Now, for each contract one email is being sent.

    Thanks,
    Anitha.

    1. Arun Raj Avatar
      Arun Raj

      Hi Anita,

      Assuming this is a XML Publisher report, you will have to group all the records by owner rather than by each meter.
      “xapi:request select=” this is where you specify how to group. If you have questions, send me the sample xml file and the bursting control file and I can check it out.
      Email me @ arun.rajs@outlook.com

      Thanks,
      Arun

  45. Hi Arun,

    For Example: If we are using XML bursting for CA,US, UK, IND,AUS…etc. to send emails. And requirement is for one of the country, grouping should happen @ invoice level and for other countries should be @ customer level. How does this acheive. Could you please help me here

  46. Marco Pagani Avatar
    Marco Pagani

    Hy Arun,

    If the extractor processing extracts 2 records one on a given nail and one on another.
    The bursting process correctly sends the two emails with one record each.
    But if I check the output produced by the concurrent extractor in EBS I see both records is it possible not to output anything in the EBS output?
    thank you
    Marco

  47. Hi Arun,
    if customer email id is null, we dont need to trigger the bursting program. How can we do this in after report trigger as we are getting the email id in formula column.

    Regards,
    Ayaan

  48. Hi Arun,

    Thanks for your nice article. Please let me know how can i FTP blocks of XML to another location from xml file which is getting generated by our concurrent program via xml bursting.
    Currently the xml file is getting generated by the concurrent program and we need to take the xml file from there and do our operation.

    Regards
    Rajat

  49. Ritika Aswani Avatar
    Ritika Aswani

    Hi Arun,
    I ceated a bursting control file with correct details asper me, but my bursting program is going into error with error message “Zip file must contain atleast one entry” , please help .

  50. Anjali Yadav Avatar
    Anjali Yadav

    Hi Arun,

    XML bursting is creating multiple file at the same time whereas one file is created with 0kb at the SFTP location. Can you please help me to get the solution for this ?

    Regards,
    Anjali

Questions? Comments? Suggestions? Let us know!! Like / Subscribe / Follow for more updates.