Oracle applications - Surendranath Subramani: 2017

Thursday, December 21, 2017

Embedded Files in pdf using pdf box library

Date: 21-Dec-2017

JDK used for this demo: 1.7.079


Purpose:


Today we are going to see how to embed files in pdf using library called PDF BOX

pdfbox 1.8.9 library used in this article


The download link for the library is given belowl


Let us take an example.

I picked 3 files as shown below.

TEST-document.docx
TEST-Image.JPG
TEST-PDF.pdf

I am going to create new file and embed all 3 files in it.



Below code does the magic

Execute below code using any editor, i have used eclipse.

Step: 1


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.util.GregorianCalendar;
import java.util.HashMap;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;

public class pdfBox
{
  /**
   * Constructor.
   */
  public pdfBox()
  {
      super();
  }
  /**
   * create the second sample document from the PDF file format specification.
   *
   * @param file The file to write the PDF to.
   *
   * @throws IOException If there is an error writing the data.
   */

  public void doIt( String path, String fileName) throws IOException
  {
      // the document
      PDDocument doc = null;
      try
      {

          
       // get primary file name
          doc = PDDocument.load(new File(path+"TEST-PDF.pdf"));
          HashMap efMap = new HashMap();
          
    File file2 = new File(path);
  File[] listOfFiles = file2.listFiles();
  
  
  for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
          System.out.println("File " + listOfFiles[i].getName());
          
           //first create the file specification, which holds the embedded file
            PDComplexFileSpecification fs = new PDComplexFileSpecification();

                 File file1 = new File(path+listOfFiles[i].getName());
        FileInputStream fis = new FileInputStream(file1);
      
        fs.setFile( file1.getName() ); 
        
        
     byte fileContent[] = new byte[(int)file1.length()];
     fis.read(fileContent);
      fis.close();
     ByteArrayOutputStream bao = new ByteArrayOutputStream();
     bao.write(fileContent);
     
             byte[] data1 = bao.toByteArray();

             ByteArrayInputStream bin = new ByteArrayInputStream(data1);
             System.out.println(bin.available());

             System.out.println("Start custom - 2");

     
        
            PDEmbeddedFile ef = new PDEmbeddedFile(doc, bin );
            //now lets some of the optional parameters
//            ef.setSubtype( fileType );
            ef.setSize( data1.length );
            ef.setCreationDate( new GregorianCalendar() );
            ef.setModDate(new GregorianCalendar() );
            fs.setEmbeddedFile( ef );
            fs.setFileDescription("testing2");
            
            efMap.put("Attachments"+i, fs);
            
          
        } else if (listOfFiles[i].isDirectory()) {
          System.out.println("Directory " + listOfFiles[i].getName());
        }
      }              
          
          
  
          //embedded files are stored in a named tree
          PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();
          efTree.setNames(efMap);

           
            // add the tree to the document catalog
          PDDocumentNameDictionary names = new PDDocumentNameDictionary( doc.getDocumentCatalog() );
          names.setEmbeddedFiles( efTree );
          doc.getDocumentCatalog().setNames( names );


          doc.save( path+fileName );
          doc.close();
         
      }
      
      catch (Exception  e){
   e.printStackTrace();
   System.out.println("Error");
   }
      
      finally
      {
          if( doc != null )
          {
              doc.close();
          }
      }


  }

  /**
       * This will create a hello world PDF document with an embedded file.
       * <br>
       * see usage() for commandline
       *
       * @param args Command line arguments.
       */
      public static void main(String[] args) throws IOException
      {
       pdfBox app = new pdfBox();
          
          if( args.length != 1 )
          {
//              app.usage();
 app.doIt( "c:\\temp\\article\\","Embedded-file.pdf" );
          }
          else
          {
              app.doIt( "c:\\temp\\article\\",args[0] );
          }
      }
  /**
   * This will print out a message telling how to use this example.
   */
//  private void usage()
//  {
//    System.out.println( ": " + this.getClass().getName() + " <output-file>" );
//      System.err.println( "usage: " + this.getClass().getName() + " <output-file>" );
//  }

}


If you have trouble in copying the code, i have given download link to download the code.

Step: 2

After you import the code, you will notice the error. This is because the library has not been imported. You are all set after library import.





Step: 3

After executing this is now the log looks like:

File TEST-document.docx
12394
Start custom - 2
File TEST-Image.JPG
12144
Start custom - 2
File TEST-PDF.pdf
1516
Start custom - 2




Step: 4

After i execute now i see new pdf file Embedded-file.pdf.



I have shared the download link below if you like to view how embedded-file.pdf file look like.


Step: 5

If i open the file i see other files are attached.






Use full links:

pdf box 1.8.9

https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox/1.8.9
or
https://drive.google.com/open?id=1xSpGSgyX850y381Lcdnpbe8-op0YqIzn

Commons Logging

http://www.java2s.com/Code/Jar/c/Downloadcommonslogging11forpdfboxjar.htm
or
https://drive.google.com/open?id=1tn8rv2C6_Tsrfo5OcAPCBW9w6PngQpJy


pdfBox.java 

https://drive.google.com/open?id=162au37eQiAELeT6XEyyLV_KqZKeYFXKE

Embedded-file.pdf

https://drive.google.com/open?id=1do0povZOKWxF8KAIih1WAIIk8vwf12wZ

Monday, October 23, 2017

Oracle concurrent request set shared parameter - Explained

Purpose:


Today we will talk about how to share parameter values defined in a request set.


Example:


In below example request set has 3 stages and all stage has same parameter defined.
So when user runs the request set, they have to select parameter values for 3 stages individually (even though the parameter values are same for all 3 stages).

How to avoid from user selecting parameter 3 times Vs doing it once.
(User select value ONLY in stage 01 and stage 02 and stage 03 will automatically get values from stage 01).


Request set: Import Open Payables request set.
Request stage 01: Stage A has parameter: Type
Request stage 02: Stage B has parameter: Type
Request stage 03: Stage C has parameter: Type

Define Shared Parameter called Product in Stage 01


In Stage 02, select Shared Parameter Product from LOV.



Thanks for visiting my blog.


Friday, September 8, 2017

Workflow error: 1302: Loaded definition was incomplete.

Date: 08-Sep-2017

Oracle Version: 12.1.3
Database: 11.2.0.4

Today we will see how to fix below error

1302: Loaded definition was incomplete.  Although this definition may be edited and saved, it cannot be run until references to non-existent objects are corrected or the missing objects are added.

1303: Reference to nonexistent activity 'CVUAWAPR/NOTIFY_APPROVER_PROCESS' in process 'CVUAWAPR/ROOT' step label 'NOTIFY_APPROVER_PROCESS'.

Cause:

When you delete an existing process from item type, it does it delete from workflow table.

Even when you save the modified workflow to database from Workflow builder or when you use WFLOAD FORCE command you still get this error.

Solution:

To fix the issue with no-brainer call $wfrmitt.sql script which will delete, Oracle Workflow design time and runtime tables for a particular item type.

sqlplus apps/<pwd> @wfrmitt.sql


Cheers...

Thanks for visiting my blog.

Monday, August 21, 2017

How to store Oracle application output file in different location on the server

Date: 21-Aug-2017

Use case:

Oracle concurrent program will store output files in $APPLCSF/out location by default. This is done by standard vanilla implementation.


But there can be a scenario where you may want to store output file on different location.


For example in case of xml publisher reports you may want to store output (could be excel / PDF/ etc) on different custom folder.


How do you achieve this?

You could write some post processor after completion of the report/program.
Update FND_CONCURRENT_REQUESTS table outfile_name column with wherever location you want to store the file.


update fnd_concurrent_requests set outFile_name='/xx/out/INV/34505706.pdf' where request_id=34505706;


Important: Make sure that application server can access the location, because if you want to view output and if application server does not have access to the folder then you will not be able to view the output.


Thanks for visiting my blog.







Thursday, July 27, 2017

Standard hooks in Oracle Purchasing and Oracle payable module

Date: 27-Jul-2017
Instance Version: 12.1.3
Database: 11.2.0.4

Purpose:

Today we will see what is the purpose of standard hooks and how to use it and available hooks in purchasing and payable module.

What is hook: it use to enable the custom functionality or custom validation in the standard process without modifying the seeded objects.

Advantage: When you apply patch, hooks are not impacted so it is safe to apply patch. When you modify seeded objects, oracle will not support and seeded objects can be easy impacted due to patch.

With no delay we will see what are the hooks available.

PO Module:

Submit Purchase Order: 

PO_CUSTOM_SUBMISSION_CHECK_PVT


AP Module:

Invoice Validation

AP_CUSTOM_INV_VALIDATION_PKG

Internet Expense Report:

AP_WEB_EXPENSE_CUST_WF

This package is called in workflow (APEXP).


Example:

I will show you how to add custom logic while submitting purchase Order.




 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

PACKAGE PO_CUSTOM_SUBMISSION_CHECK_PVT ......

PROCEDURE do_pre_submission_check(
    p_api_version                    IN             NUMBER,
    p_document_id                    IN             NUMBER,
    p_action_requested               IN             VARCHAR2,
    p_document_type                  IN             VARCHAR2,
    p_document_subtype               IN             VARCHAR2,
    p_document_level                 IN             VARCHAR2,
    p_document_level_id              IN             NUMBER,
    p_requested_changes              IN             PO_CHANGES_REC_TYPE,
    p_check_asl                      IN             BOOLEAN,
    p_req_chg_initiator              IN             VARCHAR2,
    p_origin_doc_id                  IN             NUMBER,
    p_online_report_id               IN             NUMBER,
    p_user_id                        IN             NUMBER,
    p_login_id                       IN             NUMBER,
    p_sequence                       IN OUT NOCOPY  NUMBER,
    x_return_status                  OUT NOCOPY     VARCHAR2
  )
  IS
    l_api_name    CONSTANT varchar2(50)  := 'do_pre_submission_check';
    l_api_version CONSTANT NUMBER        := 1.0;
    d_mod         CONSTANT VARCHAR2(100) := d_do_pre_submission_check;
    d_position    NUMBER := 0;
    lv_return_status VARCHAR2(4000);

  BEGIN

    x_return_status := FND_API.G_RET_STS_SUCCESS;
    d_position := 100;
    
    -- Call custom validation
    
    BEGIN
    xx_po_process.validate_po(p_document_id,p_user_id,lv_return_status);
    IF (lv_return_status = 'S' OR lv_return_status IS NULL) THEN
        x_return_status := FND_API.G_RET_STS_SUCCESS;
    ELSE
        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
        FND_MESSAGE.Set_Name('PO', lv_return_status);
        FND_MSG_PUB.Add;    
    END IF;   
    EXCEPTION WHEN OTHERS THEN
      NULL;
    END;    

  EXCEPTION
    WHEN OTHERS
    THEN
      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
      IF po_log.d_exc
      THEN
        PO_LOG.exc(d_mod, d_position, SQLCODE || ': ' || SQLERRM);
        PO_LOG.proc_end(d_mod, 'd_position', d_position);
        PO_LOG.proc_end(d_mod, 'x_return_status', x_return_status);
        PO_LOG.proc_end(d_mod);
      END IF;

  END do_pre_submission_check;


Thanks for visiting my blog! Your comments are much appreciated!


Friday, July 14, 2017

How to enable Approval Management Engine (AME) - For Your Information Notification (FYI)

Date: 14-July-2017

Instance version: 12.1.3

Database: 11.2.0.4

In this article we will see how to setup FYI notification using AME.

For this purpose we will take Purchase Requisition approval process.

Step: 1

Configuration Variable:

Change configurable variable to allow FYI
Go to 'Approval management administrator' responsibility, click on configuration variable
Enter Purchase requisition in transaction type and hit GO
Change YES to ‘Allow For Your Information Notification’ variable




Step: 2

Create Rule

Go to 'Approval Management Business Analyst' responsibility, query the transaction type (ie.: Purchase Requisition). 

Define Rule

You will notice the Category now had new value "For Your Information" (earlier it use to be only "Approval").



Step 3:

Add Approval group (which was defined already).

Done will all the setup. Let us know run through a test.

Validation:

Submit requisition and now you will notice FYI group displayed in the approval page.

When the FYI group is invoked the approves in that group will get FYI notification and they do not have to take action.

After FYI group is invoked, the AME will immediately go to next approval group as it is defined in AME.



***** 
Thanks for visiting my blog. 
Please do let me know if you see any issues or i need to make any corrections. 
*******

Friday, July 7, 2017

Oracle EBS: iprocurement - Attribute set for SelectFlag in view object ReceiveReqItemsVO failed

Oracle Version: 12.1.3
Database Version: 11.2.0.4
Date: 07-JUL-2017

Purpose:

Today we will see how to resolve the error message "Attribute set for SelectFlag in view object ReceiveReqItemsVO failed"


After you substitute standard iProcurement VO in the receiving tab you may get the error.

Reason:
SelectFlag translation attribute used in the VO is set to Updatable in the standard VO but when you extended all the attributes will be defaulted to non-updatable.

Edit your extended VO and modify attributes to updatable. That should resolve the problem.







Thanks

Friday, June 30, 2017

PCard in Oracle application with example



Date: 30-Jun-2017

Oracle application instance: 12.1.3

Oracle Data base: 11.2.0.4

Purpose:
In my previous article we saw how pcard works at a high level. In this article we are going to see how it works with an example.

To process a sample pcard we need to enable following setups in payables manager responsibility.

Step 1: Card code:


Bank maintains card code to identify suppliers and supplier types. In this example I am setting for code = M12 the account would be 705001.

You could leave account blank if you don’t want to use this feature. But card code is mandatory to process the pcard transaction.




Step 2: Card program:


Use this function to defined card issuer. Make sure card type is chosen has Procurement.

Card program name:  Give a meaningful name. It can be anything.

Card brank: check with bank what type of card they are issuing.

Card type: Procurement

Card Issuer and Card issuer site: You must define vendor record and vendor site for card issuer. The reason is because when processing pcard transaction invoice would be created and AP would create invoice based on the card issue and card issue site.

You would see that in further in this blog.

Card code set: enter the name you defined in step 1.

Rest all the fields in the form are default.






Step 3: Card profile


Use this function to define approval process.

Profile Name: enter a meaningful name.

Card program name: enter the name defined in step 2.

Manager Notification: if you want approval from manager then choose approval required else you could chose other options. In this example we are going to show you with approval process.

Employee Notification: If you want employee to validate the transaction then choose verification required else choose other options. In this example we are going to see with verification required.




Step 4: Credit Card


Use this function to define credit card to employee

Card program: choose the name defined in Step 2

Card Profile: Choose the name defined in step 3.

Card member name: your employee name (it is a free text field you could enter any name or keep employee name as defined in your HR).

Card Number: enter 15 or 16 digit credit card number which you got from bank.

Employee Name: pick the employee from LOV. The lov is coming from your HR system.

Employee Number: is populated once you pick employee name.

Rest of the form is default.




Step 5: Create vendor with site


You need to identify which vendors you are planning to use PCARD.
In this example I create vendor (PCARD Supplier) and site (PCARD SITE). I will use this vendor in my requisition process and pay through PCARD.

In the site make sure to enable Procurement Card flag.




Step 6: Create requisition


Login to iproc and create requisition.

Pick supplier whose site have pcard flag enabled and select your pcard number in the drop down.
Make sure requisition is approved.






Step 7:  Create Purchase order.


You may use Auto create functionality to do that.



Step 8: PO Receipt:


So far we have paid the bank. Assume that PO Vendor received the payment from bank and they send the goods to receive.

Receive PO.



Step 9: Close PO


Note: Once the PO is received the PO status will be closed. The PO does not wait for invoicing because there is no invoice crated for the PO as we have already created invoice against bank.

For more details refer to oracle support document id: 2091578.1

  

Step 10: Import Pcard transaction sent by bank.


Note: build some custom process to download the transaction sent by bank. Translate the credit card number to card card id (internal id) and populate the data to ap_expense_feed_lines_all table.

Sample insert statement is given below.
 INSERT  
 INTO ap_expense_feed_lines_all  
  (  
   CARD_NUMBER,card_id,  
   FEED_LINE_ID,  
   REFERENCE_NUMBER,  
   CUSTOMER_CODE,  
   AMOUNT,  
   ORIGINAL_CURRENCY_AMOUNT,  
   ORIGINAL_CURRENCY_CODE,  
   POSTED_CURRENCY_CODE,  
   CURRENCY_CONVERSION_RATE,  
   TRANSACTION_DATE,  
   POSTED_DATE,  
   RECORD_TYPE,  
   CREATE_DISTRIBUTION_FLAG,  
   MERCHANT_NAME,  
   MERCHANT_NUMBER,  
   CARD_CODE_VALUE,  
   MERCHANT_CITY,  
   MERCHANT_PROVINCE_STATE,  
   MERCHANT_COUNTRY,  
   SHIP_FROM_POSTAL_CODE,  
   SHIP_TO_POSTAL_CODE,  
   MERCHANT_TAX_ID,  
   TAX_AMOUNT,  
   ALT_MERCHANT_TAX_ID,  
   ORG_ID,  
   LAST_UPDATE_DATE,  
   LAST_UPDATED_BY,  
   LAST_UPDATE_LOGIN,  
   CREATION_DATE,  
   CREATED_BY,  
   CARD_PROGRAM_ID  
  )  
  VALUES  
  (  
   '0123456789' -- &change  
    ,&card_id, --&change  
   AP_EXPENSE_FEED_LINES_S.nextval,  
   'PCARD TEST',  
   '100', -- &optional  
   16,  
   16,  
   'USD',  
   'USD',  
   1,  
   to_date('20-OCT-2014 00:00:00','DD-MON-RRRR HH24:MI:SS'),  
   to_date('20-OCT-2014 00:00:00','DD-MON-RRRR HH24:MI:SS'),  
   NULL,  
   'Y',  
   NULL,  
   NULL,  
   'M12', -- &change  
   NULL,  
   NULL,  
   NULL,  
   NULL,  
   NULL,  
   NULL,  
   NULL,  
   NULL,  
   &org_id,  
   to_date('20-OCT-2014 12:03:11','DD-MON-RRRR HH24:MI:SS'),  
   -1,  
   -1,  
   to_date('20-OCT-2014 12:03:11','DD-MON-RRRR HH24:MI:SS'),  
   -1,  
   &card_program_id -- &change  
  );  


Now you can view the data inserted in below form.



Step 11: Validate transaction


Run 'Procurement Card Transactions Validation Program' program to validate the transaction

You can notice the status changed to VALIDATED



Step 12: Verify transaction


Employee will get notification. Verify the transaction by clicking set and continue button the notification window.













Run 'Procurement Card Transactions Verification Process' program, this will verify transaction and change the status the transaction to VERIFIED.






Step 13: Manager Approval:


Run 'Procurement Card Transactions Approval Process' program, this will send notification to manager for approval







Step 14: Import to AP Open interface


Run 'Create Procurement Card Issuer Invoice' to move APPROVED transaction to ap_invoices_interface table





Step 15: Create invoice


Run 'Payables Open Interface Import' to import AP interface to actual invoice.







Step 16:
Validate the invoice and Pay the invoice. This is a regular payment process you setup in your system.

Thanks for visiting my blog.




Saturday, May 6, 2017

How to create JAR using JDeveloper 10g

Date: 05/07/2017

Purpose:

How to create JAR using JDeveloper 10.1.3 version.

In this article I will use simple java program (HelloWorld) and will package into JAR.


Step: 1

Create java program and compile it. Sample shown below.

 package createjarpj;  
 public class HelloWorld  
 {  
  public HelloWorld()  
  {  
  }  
  public static void main(String[] args)  
  {  
   HelloWorld helloWorld = new HelloWorld();  
   System.out.println(args[0]+" Hello World!!!");  
  }  
 }  


Step: 2
Click new and choose "JAR file" under "General", "Deployment Profile"  


Give a name to JAR. Click OK.


No need to do anything, simply click OK.
Note: Make sure class file is included. 


Step: 3

You may notice jar.deploy file created. Right click the file you will notice 'Deploy to JAR File'




Step: 4

In the log you will see that creating of Jar completed. 


under Deploy folder you will see JAR file created.



Step: 5

Now let us validate to see if the JAR works.
Copy the Jar to any folder. For testing i copied to c:\Temp folder.



Step: 6

Execute Java command and you can find the result.





C:\Users\ssubram3>echo %CLASSPATH%
%CLASSPATH%
C:\Users\ssubram3>java -cp C:\Temp\SurenJar.jar createjarpj.HelloWorld Training
Training Hello World!!!
C:\Users\ssubram3>

Thursday, April 13, 2017

How to enable online validation on Oracle Payable invoice workbench

Date: 13-Apr-17

Purpose: 

How to enable online validation on AP Invoice workbench.

Steps:

When you are enabling AP module, by default online validation on the AP invoice form will be disabled. So to enable online validation you need to enable validation flag in the payables options.

Other option to validate invoice is by running "Invoice Validation" concurrent program.


Thanks for visiting by blog.

Tuesday, February 14, 2017

Approval List could not generated. Please contact your System Administrator to review AME rules setup.

Dated: 02/14/2017

Error:

Approval List could not generated. Please contact your System Administrator to review AME rules setup.

Cause:

There could be various reasons for the error. One of the most common reason is issue in AME setup.

Solution:

To resolve the issue go to AME Business Analyst Dashboard responsibility and test the real transaction.

Screen shot given below for your reference:

identify the transaction type and click TEST.






Click Real transaction Test



Enter requisition header id and run test


AME will prepopulate all the transaction data for you. Click Run test case (2).



You will find the error as shown below. In this case the approver id 61412 is invalid. Once the approver is fixed the issue is resolved.


Thanks for visiting my blog.


Sunday, February 5, 2017

Actionable Email Approvals not Reflected in Fusion Applications

Created: 05-Feb-2017

Purpose:
In this article we will see how to resolve issue with actionable email not reflected.

Steps to indentify the problem:
Email notification is sent to approver.
Approver clicked 'approve or reject' link and responded the notification.
Human task notification is still pending.

Go to EM and look for log message.





Module: Module oracle.sdp.messaging.driver.email

Message: Message An unexpected exception was caught.

Details:

java.lang.IllegalStateException: Not connected
at com.sun.mail.imap.IMAPStore.checkConnected(IMAPStore.java:1493)
at com.sun.mail.imap.IMAPStore.getFolder(IMAPStore.java:1324)
at oracle.sdpinternal.messaging.driver.email.EmailStore.openFolder(EmailStore.java:139)
at oracle.sdpinternal.messaging.driver.email.MailboxPollingWorker.getInitializedEmailStore(MailboxPollingWorker.java:107)
at oracle.sdpinternal.messaging.driver.email.MailboxPollingWorker.run(MailboxPollingWorker.java:47)
at weblogic.connector.security.layer.WorkImpl.runIt(WorkImpl.java:108)
at weblogic.connector.security.layer.WorkImpl.run(WorkImpl.java:44)
at weblogic.connector.work.WorkRequest.run(WorkRequest.java:95)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)




If you notice above mentioned error then please follow steps to possibly solve the problem.

Solution:

The issue is email account was setup with upper and lower case but while entering email properties in UMS it was defined in lower case.

WebCenterWorkflow@Oracle.com
webcenterworkflow@oracle.com


When soa server is restarted the email entered in UMS proprty is set in message client application access point as shown below.



email account is k-sensitive. 

if you go to UMS property and correct the email and access point is not updated. 
so use 'De-register' option to remove existing email from access point.
Make sure valid email account is configured in UMS property 
Restart the soa server.

Retest actionable email and you should not see any error in the log.

For more details refer to:

Actionable Email Approvals not Reflected in Fusion Applications (Doc ID 1960637.1)

Thanks for visiting my blog.