Thursday, November 14, 2013

Writing execution results to File using Jython in ODI


Writing execution results to File using Jython in ODI


In this post, I am going to show how to write files in customized format by leveraging Jython technology in ODI. Out of the box, ODI provides support for delimted, fixed length, xml and complex files. But if there is a need to produce pdf or custom formated output, we can use Jython to achieve.

To demonstrate this capability, I am taking the example of write execution details of ODI to a custom formated file. The file format will look like this following.
/*------------------------------------------------------------------------------------------------------------------------------------------------*/



                    EXECUTION REPORT FOR SCENARIO : WRITE_EXECUTION_REPORT  ( THU NOV 14 10:34:33 2013 )                    



/*------------------------------------------------------------------------------------------------------------------------------------------------*/



StepNo StepName                                   StepType               BeginningTime     EndTime           Duration      Status     Error_Msg



------ --------------------------------------- ------------------- --------------------- --------------------- ---------- -------------- ----------



0      int_file_table                          Interface           14-NOV-2013 10:34:11  14-NOV-2013 10:34:12  1          Success        None



1      write_execution_report                  Procedure           14-NOV-2013 10:34:12  None                  0          UNKNOWN        None



/*------------------------------------------------------------------------------------------------------------------------------------------------*/

Following are the steps I am going to follow to demonstrate this use case.
1. I will create a procedure which will connect to ODI internal tables and get the execution details for the current session_id
2. I am going to create a file_to_table interface just to have a success scenario and a procedure which raises PL/SQL exception to demonstrate the error scenario.
3. We will create a package and place the interfaces and procedure for success/error scenario and also have the execution report procedure we developed in first step as a last steps for success as well as error scenario to extract the execution details to file with formatting.

Before we write the procedure, Lets understand the ODI internal tables a bit on how they store the execution details.
1. SNP_SESSION - stores the session_id and detailed related to session
2. SNP_SESS_STEP - All interface, package, scenario  and procedure details.
3. SNP_STEP_LOG - This has the steps within each odi object.

Just to put the table relation ships into perspective, showing the sample data for a sample session here. This data is for the below specified package in ODI.

SNP_SESSION  - Has one row per execution at the package level here.
SNP_SESS_STEP - represents objects inside a package with design time details.
SNP_STEP_LOG - represents objects inside a package with run time details (including error_message).
SNP_SESS_TASK - represents the KM, details related to interface,procedure, tools in a package with design time details .
SNP_SESS_TASK_LOG - represents the KM, details related to interface,procedure, tools in a package with run time details (including error message)

In the execution report, I developed I am not showing task level details, instead it stops at the step level. But I wanted to show here that task level details can also be captured in the log.

Execution Report Procedure

Create a procedure and add one command in the details with the following Jython code. Make sure that Jython technology is selected in the target tab. This procedure should be added as a last step in the package so that it takes all the execution details and puts it into formatted file.

This can be used for successful as well as for error conditions for producing the log.


Please find below the complete code for using it in your implementation.

1. It take the connection for current work repository
2. Using the current session_no to retrieve execution details using the query
3. Spools the query data with formatting to a file.
import string
import java.sql as sql
import java.lang as lang
import re
import time
sourceConnection = odiRef.getJDBCConnection("WORKREP")
output_write=open('c:/temp/Execution_Report_<%=odiRef.getSession("SESS_NO")%>.out','w')
sqlstring = sourceConnection.createStatement()
localtime = time.asctime( time.localtime(time.time()) )
print >> output_write, "/*------------------------------------------------------------------------------------------------------------------------------------------------*/\n"
print >> output_write,'%s\n' % (str('  Execution Report for scenario : '+'<%=odiRef.getSession("SESS_NAME")%>'+'  ( '+localtime+' ) ').upper().center(124))
print >> output_write, "/*------------------------------------------------------------------------------------------------------------------------------------------------*/\n"

sqlstmt="select rownum, \
       sess.sess_no, \
       sess.sess_name, \
       step_log.nno, \
       step.step_name, \
       case when step.step_type='F' THEN 'Interface' \
            when step.step_type='VD' THEN 'Variable declaration' \
            when step.step_type='VS' THEN 'Set//Increment variable' \
            when step.step_type='VE' THEN 'Evaluate variable' \
            when step.step_type='V' THEN 'Refresh variable '\
            when step.step_type='T' THEN 'Procedure' \
            when step.step_type='OE' THEN 'OS command' \
            when step.step_type='SE' THEN 'ODI Tool' \
            when step.step_type='RM' THEN 'Reverse-engineer model' \
            when step.step_type='CM' THEN 'Check model' \
            when step.step_type='CS' THEN 'Check sub-model' \
            when step.step_type='CD' THEN 'Check datastore' \
            when step.step_type='JM' THEN 'Journalize model' \
            when step.step_type='JD' THEN 'Journalize datastore' \
            ELSE 'UNKNOWN' END as step_type, \
      to_char(step_log.step_beg,'DD-MON-YYYY HH24:MI:SS') as step_beg, \
      to_char(step_log.step_end,'DD-MON-YYYY HH24:MI:SS') as step_end, \
      step_log.step_dur, \
      case when step_log.step_status='D' THEN 'Success' \
            when step_log.step_status='E' THEN 'Error' \
            when step_log.step_status='Q' THEN 'Queued' \
            when step_log.step_status='W' THEN 'Waiting' \
            when step_log.step_status='M' THEN 'Warning' \
            ELSE 'UNKNOWN' END as step_status, \
      step_log.nb_row, \
      step_log.nb_ins, \
      step_log.nb_upd, \
      step_log.nb_del, \
      step_log.nb_err, \
     dbms_lob.substr( TRANSLATE ( step_log.error_message, 'x'||CHR(10)||CHR(13), 'x'), 600, 1 )  as error_message \
from snp_session sess right outer join snp_sess_step step on sess.sess_no = step.sess_no \
                      inner join snp_step_log step_log on step.sess_no = step_log.sess_no and step.nno = step_log.nno \
where step_log.sess_no  = <%=odiRef.getSession("SESS_NO")%> \
      order by step_log.nno"
print >> output_write, "StepNo StepName                                StepType            BeginningTime  EndTime        Duration   Status  Error_Msg\n"
print >> output_write, "------ --------------------------------------- ------------------- --------------------- --------------------- ---------- -------------- ----------\n"
result=sqlstring.executeQuery(sqlstmt)
while (result.next()):
    rownum=result.getInt("rownum")
    nno=result.getInt("nno")
    step_name=result.getString("step_name")
    step_type=result.getString("step_type")
    step_beg=result.getString("step_beg")
    step_end=result.getString("step_end")
    step_dur=result.getInt("step_dur")
    step_status=result.getString("step_status")
    error_message=result.getString("error_message")
    print >> output_write,'%7s%40s%20s%22s%22s%11s%15s%s\n' % (str(nno).ljust(7),step_name.ljust(40),step_type.ljust(20),str(step_beg).ljust(22),str(step_end).ljust(22),str(step_dur).ljust(11),step_status.ljust(15),str(error_message))
print >> output_write, "/*------------------------------------------------------------------------------------------------------------------------------------------------*/\n"
sourceConnection.close()
output_write.close() 

The only restriction in this method is that we will not able to get the status of the execution report into the file since query is executed while it is run.

If we don't need this procedure details, we can restrict it in the where clause so that you wont see it in the report.

Sample Examples.

I will try to show a successful run as well as error run samples files here.

1. In this package, I am running an interface and on successful run, it produces the log.

/*------------------------------------------------------------------------------------------------------------------------------------------------*/

                    EXECUTION REPORT FOR SCENARIO : WRITE_EXECUTION_REPORT  ( THU NOV 14 10:34:33 2013 )                    

/*------------------------------------------------------------------------------------------------------------------------------------------------*/

StepNo StepName                                StepType            BeginningTime  EndTime        Duration   Status  Error_Msg

------ --------------------------------------- ------------------- --------------------- --------------------- ---------- -------------- ----------

0      int_file_table                          Interface           14-NOV-2013 10:34:11  14-NOV-2013 10:34:12  1          Success        None

1      write_execution_report                  Procedure           14-NOV-2013 10:34:12  None                  0          UNKNOWN        None

/*------------------------------------------------------------------------------------------------------------------------------------------------*/


2. For a error run a sample report is shown here. In this case, I run the interface, run a PL/SQL block which raises exception to produce error and on error run the execution report.


Lets look at the log for the error.


/*------------------------------------------------------------------------------------------------------------------------------------------------*/

                    EXECUTION REPORT FOR SCENARIO : WRITE_EXECUTION_REPORT  ( THU NOV 14 14:50:17 2013 )                    

/*------------------------------------------------------------------------------------------------------------------------------------------------*/

StepNo StepName                                StepType            BeginningTime  EndTime        Duration   Status  Error_Msg

------ --------------------------------------- ------------------- --------------------- --------------------- ---------- -------------- ----------

0      int_file_table                          Interface           14-NOV-2013 14:50:08  14-NOV-2013 14:50:15  7          Success        None

1      proc_call_stored_procedure              Procedure           14-NOV-2013 14:50:15  14-NOV-2013 14:50:16  1          Error          ODI-1226: Step proc_call_stored_procedure fails after 1 attempt(s).ODI-1232: Procedure proc_call_stored_procedure execution fails.ODI-1228: Task proc_call_stored_procedure (Procedure) fails on the target ORACLE connection oracle_xe_hr.Caused By: java.sql.SQLException: ORA-20001: This is a custom errorORA-06512: at "HR.RAISE_EXCEPTION", line 15ORA-06512: at line 2 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:889) at oracle.jdbc.driver.T4CTTIfun.receive(T

2      write_execution_report                  Procedure           14-NOV-2013 14:50:16  None                  0          UNKNOWN        None

/*------------------------------------------------------------------------------------------------------------------------------------------------*/ 

92 comments:

  1. It doesn't work in ODI 12 c as SNP_SESS_STEP table not storing required data..

    ReplyDelete
  2. Hi Murugananth, Very good article, thanks for providing in-depth information on Oracle Data Integrator Technology. Please continue sharing.

    ReplyDelete
  3. If I link several interfaces in a package, How can I write this report for the entire execution ?

    Thanks

    ReplyDelete
  4. What if I want to attach this output file in a e-mail using ODISendMail object ? If the output always change its name, how can I could attach it ?

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. Hi Author,

    I'm not able to fetch data from ms sql server and put o/p data in csv file by following tjis approach.Please tell me data can be pulled or not using this approach.

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. Thank you for your guide to with upgrade information.

    Oracle SOA Online Training

    ReplyDelete
  9. I recently came across your blog and have been reading along. I thought I would leave my first comment.
    apple iphone service center in chennai | apple ipad service center in chennai | apple iphone service center in chennai

    ReplyDelete
  10. There's no doubt i would fully rate it after i read what is the idea about this article. You did a nice job..
    data analytics course malaysia

    ReplyDelete
  11. Hi, I really loved reading this article. By this article i have learnt many things about ODI topic, please keep me updating if there is any update.

    ODI Online Training
    ODI Classroom Training
    ODI Training
    ODI Training in Hyderabad
    Oracle Data Integrator Training

    ReplyDelete
  12. I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
    AI learning course malaysia

    ReplyDelete
  13. Nice Blog We are providing technical support in Quickbooks Payroll Support Phone Number 1-800-986-4607.If you are facing any issue in Quickbooks dial our toll free number 1-800-986-4607.

    ReplyDelete
  14. Thanks for providing this blog for us. Actually We are an Accounting solution company. Now a days maximum user working on the Accounting software and the availability of Quickbooks Support Phone Number can be easily solved. You have to dial 800-901-6679 for the urgent solution.

    https://tinyurl.com/y5e6s475

    ReplyDelete
  15. Facing any trouble while using Quickbooks? Contact Quickbooks Support Phone Number. As they provide immediate & effective solutions of the issues, you preoccupied with. Feel free to contact them, as they are available for you, round the clock. It doesn’t matter at what time, you come across the issue. Get in touch with them, by just dialing Quickbooks Support Phone Number 800-901-6679. Just Ask your queries & gain solutions.

    ReplyDelete
  16. Nice Blog. Get instant & easy solutions for your queries by contacting us, on Quickbooks Support Phone Number 1-800-986-4607. We provide the best support service to the user because Our Team constitutes of Highly skilled & Experienced staffs.

    ReplyDelete
  17. Got stuck in QuickBooks errors ? Not to worry now as we are here to solve all your queries. We at our Quickbooks Support Phone Number 1-800-986-4607 will assist you to get out of trouble. Avail the benefits of our services and run your business smoothly. Stay connected with us for more information.

    ReplyDelete
  18. Connect to us at Quickbooks for Mac Support Phone Number 1-800-986-4607 for any QuickBook assistance. We deliver support services to a wide range of clients. We're accessible to you 24*7. Feel Free to reach us whenever you need it.

    ReplyDelete
  19. Connect to us at Quickbooks for Mac Support Phone Number 1-800-986-4607 for any QuickBook assistance. We deliver support services to a wide range of clients. We're accessible to you 24*7. Feel Free to reach us whenever you need it.

    ReplyDelete
  20. Nice Blog ! Do you Want help to solve your problems with QuickBooks? If so, please contact us at our QuickBooks Customer Helpline Number 855-9O7-O4O6.The team will help you by delivering the best solutions possible.

    ReplyDelete
  21. Dial Quickbooks Support Phone Number 855-907-0406 that is available as toll-free. We will help to enjoy happy accounting.
    View on Map: QuickBooks Customer Service

    ReplyDelete
  22. Do you want help to get your QuickBooks issues resolved in seconds? If yes, Dial our Accounting & Bookkeeping Services 855-907-0406 now! We will let you do your accounting duties without any interruptions.

    View on Map: QuickBooks Support Phone Number

    ReplyDelete
  23. Nice Blog ! Whenever you have stuck in any problem, you can take our support. We're there 24 hours a day. Dial our QuickBooks Pro Support Phone Number +1(855)-9O7-O4O6 now!

    ReplyDelete
  24. Nice Blog! Acquire instant solution to all your queries, if get preoccupied with technical snags in the software. Our Quickbooks Support Phone Number 855-907-0406.
    Read More:
    Quickbooks Support Phone Number
    Quickbooks Support Phone Number
    Quickbooks Support Phone Number

    ReplyDelete
  25. Do you Need instant help fixing problems with your QuickBooks? Now dial our QuickBooks Support Phone Number Illinois 855-9O7-O4O6! We have technical experts who can instantly fix your problems.

    ReplyDelete
  26. Nice Blog ! Connect to us at QuickBooks For Mac Support Phone Number
    855-9O7-O4O6 for any QuickBook assistance. We deliver support services to a wide range of clients.
    View On Map: QuickBooks Support Phone Number

    ReplyDelete
  27. Are you Facing issues in the QuickBooks? Call QuickBooks Support Phone Number Illinois 855-9O7-O4O6 to get instant & effective solution from our QuickBooks experts. Our QuickBooks support team available 24*7 to offer assistance.

    ReplyDelete
  28. Facing any sort of difficulty in QuickBooks ? Dial QuickBooks Pro Support Phone Number 855-9o7-0406 to gain valuable assistance from our QuickBooks Proficients.
    View on Map: QuickBooks Support Phone Number

    ReplyDelete
  29. Nice Blog ! Call QuickBooks Support Phone Number 855-907-0406 for any kind of technical issues in the software. Acquire eminent support by giving a call on the support. As your queries get heard by our QuickBooks experts who are well versed & experienced in resolving error issues of the software. Don’t hesitate to call our QuickBooks experts anytime.

    ReplyDelete
  30. If you are facing any error in QuickBooks software? Dial Quickbooks Customer Service Phone Number 855-907-0406.

    ReplyDelete
  31. Nice Blog! Acquire instant solution to all your queries, if get preoccupied with technical snags in the software. Our Quickbooks Support Phone Number USA 844-908-0801.

    ReplyDelete
  32. The software gets equipped with extensive features mainly tailored to accomplish accounting & financial tasks of a business firm. Apart from these, Intuit also looks after the requirement of software users via QuickBooks Customer Service Phone Number 1-833-780-0086. For More Visit: https://g.page/quickbooks-support-pennsylvania

    ReplyDelete
  33. Nice Blog ! If you have some trouble with QuickBooks as to how to download or use or correct errors, or any other question, dial QuickBooks Toll Free Phone Number 855-9O7-O4O6. There's a group of experts to solve your problems.

    ReplyDelete
  34. Are you getting any kind of trouble in QuickBooks Accounting software? Don't worry about it Resolve your issue by calling QuickBooks Customer Service Number 1-855-907-0406.

    ReplyDelete
  35. Nice Blog !
    When Found QuickBooks Banking Error 103, don’t get worried about it. Immediately ring a call to us at 1-855-9O7-O4O6.Arrival of QuickBooks Banking error indicates that your sign-in credentials don't match with your Bank’s website.

    ReplyDelete
  36. Nice & Informative Blog ! Facing QuickBooks Error 3371? Don’t worry, dial us at 1-855-9O7-O4O6 for instant resolution of issues. QuickBooks Error 3371 or Could not initialize license Properties arrives while any of the company files is either missing or damaged.

    ReplyDelete
  37. Being a user to these products, if facing trouble, call Phone Number For QuickBooks 1-833-325-0220.

    ReplyDelete
  38. Avail uninterrupted service benefits of QuickBooks due to the presence of QuickBooks Support Phone Number 1-833-325-0220. Our experienced QuickBooks experts deployed 24/7 to give reliable aid. No matter how complex the issues you are facing.

    ReplyDelete
  39. This is actually nice post ...It gives extremely valuable information...Thanx for sharing...If you looking best Quickbooks Errors number We give Quickbooks Errors number and Quickbooks Errors client service to finish help for explaining all quarries identified with QuickBooks Software.

    Read Here:- quickbooks customer care

    ReplyDelete
  40. Nice Blog !
    If you have any sort of problem in QuickBooks. Give a call on QuickBooks Customer Service 1-855-6OO-4O6O. Our technical experts are available 24/7 to give assistance.

    ReplyDelete
  41. We are here for www.mywifiext.net local with the help of extender device. In case of any extender device information you can get connect with us.

    ReplyDelete
  42. Hey! I have been using QuickBooks for three years. It is the best accounting software. You can even get superior technical services for QuickBooks at QuickBooks Customer Service Number Pennsylvania +1-844-442-1522.

    ReplyDelete
  43. Hey! Nice blog. I recommend you to use QuickBooks software for your small-sized business. To know how to get started with this software, dial QuickBooks Customer Support Phone Number Hawaii +1-844-442-1522 to get in touch with the customers.

    ReplyDelete
  44. Hi! Great blog. QuickBooks is a popular accounting software; however, it is not immune to technical bugs. To fix such problems, call us at QuickBooks Phone Number Montana +1-844-442-1522 and acquire the best solutions for QuickBooks problems.

    ReplyDelete
  45. Hey! Nice work. Call us at QuickBooks Customer Service Phone Number New York +1-833-933-3468 to get instant solutions for QuickBooks problems.

    ReplyDelete
  46. Hi! Amazing write-up. If you are facing any trouble in managing business accounts, try using QuickBooks. To know how to download and install this software, dial QuickBooks Customer Support Phone Number Arizona +1-844-442-1522 for quick help.

    ReplyDelete
  47. Hey! Wonderful blog. For quick resolution of QuickBook problems, dial QuickBooks Customer Service Phone Number Wyoming +1-844-442-1522 for immediate help.

    ReplyDelete
  48. Hey! Amazing blog. I hope you must have heard of QuickBooks accounting software. To know more about the best features of QuickBooks, dial QuickBooks Customer Service Phone Number New Jersey +1-844-442-1522 and get in touch with our experts.

    ReplyDelete
  49. Hey! I hope you are doing well and using QuickBooks accounting software for your business. If yes, then immediately dial QuickBooks Phone Number Canada +1-844-442-1522 and get instant assistance from the experts.

    ReplyDelete
  50. Hi! Fantastic blog. As a small business owner, you must have heard of QuickBooks accounting software. It is the best accounting software. You can even get prompt help at QuickBooks Customer Service Phone Number Washington +1-844-442-1522.

    ReplyDelete
  51. Hi! Fabulous blog. QuickBooks is a superior accounting software for small and medium-sized businesses. For any help regarding QuickBooks software, dial QuickBooks Customer Service Phone Number Texas +1-833-933-3468 for timely assistance and support from experts.

    ReplyDelete
  52. wonderful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. This article resolved my all queries.
    ODI Online Training

    ReplyDelete
  53. Good work. Keep it up.
    I hope your working with QuickBooks is going well.
    In case you face any technical bugs in QuickBooks, dial QuickBooks Customer Service Phone Number in Canada +1-855-662-2O4O and get your problem resolved quickly.

    ReplyDelete
  54. I really enjoyed reading this article. It's really a nice experience to read your post. Thanks for sharing your innovative ideas. Excellent work! I will get back here.
    Visit ODI Online Training

    ReplyDelete
  55. This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points.

    AWS Training in Hyderabad

    ReplyDelete
  56. Are you looking for instant support while accessing QuickBooks? Don’t worry!! Simply call on our QuickBooks POS Support Phone Number +1(844)233-3033, and get abstained from all your worries.
    https://tinyurl.com/yy33sxqb

    ReplyDelete
  57. Directly place a call to our QuickBooks Enterprise Support Phone Number +1(844)233-3033, and gain the most feasible solutions for all your queries. Our team is committed to assist our users for 24 hours and 365 days.

    ReplyDelete
  58. Nice & Informative Blog !
    you may encounter various issues in QuickBooks that can create an unwanted interruption in your work. To alter such problems, call us at QuickBooks Phone Number 1-855-405-6677and get immediate technical services for QuickBooks in less time.

    ReplyDelete
  59. Nice Blog !
    Any issue pops up in this acclaimed accounting software can be fixed in the least possible time by our talented professionals at Quickbooks Customer Service Number 1-855-652-7978. Our experts are highly skilled and have years of experience in resolving all the issues of QuickBooks. Our number is open 24/7.

    ReplyDelete
  60. Selenium automation testing has made the process simpler and faster than manual testing. The latest version of selenium is the selenium webdriver which improves functional test coverage. Learn selenium automation testing to drive into the IT field.

    Selenium Webdriver

    ReplyDelete

  61. Thanks for the nice blog here.I was searching this one for a long time.This blog is very helpful for my studies..I got another one site also,which is same as yours Oracle ODI .Check this one also Oracle Fusion Manufacturing .Sure it will be helpful for you too..Once more iam thanking you for your creative blog.

    ReplyDelete
  62. Nice & Informative Blog !
    Directly place a call at our QuickBooks Customer Service, for instant help.Our experts are well-trained & highly-qualified technicians having years of experience in handling user’s complexities.

    ReplyDelete
  63. The introduction must include a short definition of the concept you chose, any additions you have made to the definition, a thesis statement and thorough description of what else will be presented in the essay. https://adamhuler.medium.com/what-is-the-best-essay-writing-service-on-reddit-f0f7832c99eb

    ReplyDelete

  64. Hey! Lovely blog. Your blog contains all the details and information related to the topic. In case you are a QuickBooks user, here is good news for you. You may encounter any error like QuickBooks Error, visit at QuickBooks Customer Service for quick help.

    ReplyDelete
  65. Hey! What a wonderful blog. I loved your blog. QuickBooks is the best accounting software, however, it has lots of bugs like QuickBooks Error. To fix such issues, you can contact experts via QuickBooks Customer Support Phone Number

    ReplyDelete
  66. Hey! Fabulous post. It is the best thing that I have read on the internet today. Moreover, if you need instant support for QuickBooks Error, visit at QuickBooks Customer Service Phone Number Our team is always ready to help and support their clients.

    ReplyDelete
  67. Well-written Blog.
    Dial QuickBooks Support Phone Number (888)-903-0715 to know more about the features and tools of QuickBooks software.

    ReplyDelete
  68. Hey! Amazing write-up. Keep it up. It is one of the best posts that I have read on the internet today.
    In case you have encountered QuickBooks Error in your software, call us at QuickBooks Support Phone Number (888)-208-5521

    ReplyDelete
  69. Nice Blog!
    QuickBooks Support provide you 24*7 live support for any issues realted with QuickBooks.
    Dial QuickBooks Support Phone Number 888^497^2598.

    ReplyDelete
  70. Very excellent and informative blog. Click to get solution of
    Quickbooks Support Phone Number(833) 899-6140

    ReplyDelete
  71. Do you need instant support for QuickBooks errors? If yes, then we are here to help you.
    We at QuickBooks Customer Service Phone Number Texas 888^789^6945 is placed to take care of the minor complexity that exists in your software.

    ReplyDelete
  72. Hi....Nice Blog. If you are facing any issue in QuickBooks, dial QuickBooks Support Number in Arizona and get your problem instantly.

    ReplyDelete
  73. Useful article. Bank error 103 happens when might have entered incorrect login credentials while connecting to your financial institution.so it has 2 methods in blog to get rid of it and connect with 855-738-0359.https://asquarecloudhosting.com/quickbooks-error-103/

    ReplyDelete
  74. Oracle Data Integrator Tutorials: Writing Execution Results To File Using Jython In Odi >>>>> Download Now

    >>>>> Download Full

    Oracle Data Integrator Tutorials: Writing Execution Results To File Using Jython In Odi >>>>> Download LINK

    >>>>> Download Now

    Oracle Data Integrator Tutorials: Writing Execution Results To File Using Jython In Odi >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete
  75. Issue address commercial PM rock budget open. Political billion oil when best.information

    ReplyDelete