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:
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]
<?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>
[/xml]
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.
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]
<?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>
[/xml]
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.
[sql]
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>’;
[/sql]
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:
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.
[sql]
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;
[/sql]
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
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
Glad that it helped. Let me know if you need more help or if you have more questions.
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
Hi ,
How to write if conditions in data template
Regards,
Umasankar
Thank you for question. Can you let me know your requirement and I will surely try to help you with your query.
Thanks,
Arun
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
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
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
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.
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
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
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
I have mailed you the issue.Please check.
Hi Arun,
Can we attach more than one attachment to the mail ?
Thanks,
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
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
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
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 ??
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
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
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
Yes, This is what I expected. Thank You, So much!
Arun
Happy to Help. Good luck.
nice work….great
Thanks 🙂
can u please share your gmail address .
Regards,
Riya.
You can reach me @ arunraj@quest4apps.com
Thanks,
Arun
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.
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:
Let me know.
Thanks,
Arun
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.
Hi,
Can you send me the Bursting control file to arunraj@quest4apps.com?
Thanks,
Arun
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
+++++++++++++++++++++++++++++++++++
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
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
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
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
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
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
Hi Srikanth,
Can you send me a sample XML file to arunraj@quest4apps.com? I will take a look.
Thanks,
Arun
Hi Arun
I have sent the XML file and Brusting file and Output file
Thanks & Regards
Srikanth
Hi Srikanth,
I have replied to your email. Try that and let me know if that works.
Thanks,
Arun
Hi Arun, Can you please give me your email id. I have an issue with bursting. I will send the issue details.
Hi Pradeep,
You can reach me @ arunraj@quest4apps.com
Thanks,
Arun
Hi Arun
Thanks for your help!
It’s working perfect ……….. The website is very useful to developers 🙂
Thanks & Regards
Srikanht
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.
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
Hi Rahul,
Thank you for the kind words. Please email me the error details / log message to arunraj@quest4apps.com
Cheers,
Arun
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
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
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
Hi Rahul,
I am really glad it helped. Follow our website for more content. We will be starting video tutorials as well.
Thanks,
Arun
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
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
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
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
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
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
Hi Arun,
Thanks for the reply. Can you please let me know how can I do that using your example?
Thanks,
VJ
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
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
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
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
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
Thanks. I will check my email and reply.
Regards,
Arun
Hi Mukesh,
I have not received your email. Please send it to arunraj@quest4apps.com
Thanks,
Arun
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
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
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!
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
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
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
Hi Arun,
Is it possible to add the logo to the email which is generated via XML bursting?
Regards,
Raj
Hi,
Logo in the attachment? Or within the body of the email?
Thanks,
Arun
Hi Arun,
In the body of the email.
Regards,
Raj
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
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
Hi Arun,
XML bursting concept was very clear . Really appreciate on your help.
Regards
Satish
Glad it helped.
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….
Hi Gaurav,
Did you get this working?
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.
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
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.
Hi,
You do have the option to store the file in the server and email.
Thanks,
Arun
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
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
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
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
Hi,
I would like to schedule the request. I don’t think your alternate solution can be automated?
Eric
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
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
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
Very well explained! Thanks.
Thanks for the kind words!!
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
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.
[code language=”xml”]
<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>
[/code]
Cheers,
Arun
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
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
I am able to send email via server to internal email address but not external like gmail etc.
Check with your admin to see if specific domains are being blocked!!
Regards,
Arun
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
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
Awesome. Glad you were able to figure it out.
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
Hi Mick,
Check this post
And read the reply from JohanndT. That should do the trick.
Let me know how it goes!
Regards,
Arun
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
Hi Arun,
Pleae ignore my last post ……. I was searching for ‘JohanndT’ here rather than in the ‘Post’ … 🙁
Mick
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
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.
–
+
+
–
–
–
–
–
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
–
+
+
–
–
–
–
–
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.
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.
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.
Thank you. Appreciate the feedback.
can we zip a csv file in xml publisher
I dont think you can. The only option I am aware of is to create zipped PDF Files. Yon can check that out here.
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.
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.
Hii Sir, Can I send Excel output to some mail IDs?
Output is generated on executing a concurrent program.
if you use bursting you can email the output.
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.
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
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
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
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
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 .
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