Showing posts with label Workflow. Show all posts
Showing posts with label Workflow. Show all posts

Wednesday, March 26, 2014

Script to create Missing Workflow Activities for SO Lines


DECLARE
   l_result              VARCHAR2 (30);
   p_line_rec            OE_Order_PUB.Line_Rec_Type;
   l_line_process_name   VARCHAR2 (30);
   l_item_type           VARCHAR2 (30);
   l_aname               wf_engine.nametabtyp;
   l_aname2              wf_engine.nametabtyp;
   l_avalue              wf_engine.numtabtyp;
   l_avaluetext          wf_engine.texttabtyp;
   l_process_activity    NUMBER;
   line                  VARCHAR2 (240);
   l_org_id              NUMBER := -99;

   CURSOR items
   IS
        SELECT l.org_id,
               h.order_number,
               TO_CHAR (l.line_id) item_key,
               l.line_id,
               l.flow_status_code,
               l.open_flag,
               l.booked_flag,
               l.creation_date,
               l.line_type_id,
               h.order_type_id,
               l.item_type_code,
               l.shipped_quantity shq,
               l.line_category_code cat,
               l.fulfilled_flag,
               l.invoice_interface_status_code,
               l.cancelled_flag,
               l.ato_line_id
          FROM oe_order_lines_all l, oe_order_headers_all h, wf_items hdr_wf
         WHERE     l.header_id = h.header_id
               AND TO_CHAR (l.header_id) = hdr_wf.item_key
               AND hdr_wf.item_type = OE_GLOBALS.G_WFI_HDR
               AND l.line_id IN (7446995, 7447003, 7447004) -- Input sales order line_id
               AND (l.open_flag = 'Y' AND NVL (l.cancelled_flag, 'N') = 'N')
               AND NOT EXISTS
                          (SELECT 1
                             FROM wf_items itm
                            WHERE     itm.item_type = OE_GLOBALS.G_WFI_LIN
                                  AND itm.item_key = TO_CHAR (l.line_id))
      ORDER BY l.org_id, h.order_number, l.line_id;

   FUNCTION Get_ProcessName (
      p_itemtype           IN VARCHAR2,
      p_itemkey            IN VARCHAR2,
      p_wfasgn_item_type   IN VARCHAR2 := FND_API.G_MISS_CHAR)
      RETURN VARCHAR2
   IS
      l_process_name           VARCHAR2 (30);

      CURSOR find_HdrProcessname (
         itemkey VARCHAR2)
      IS
         SELECT wf_assign.process_name
           FROM oe_workflow_assignments wf_assign, oe_order_headers header
          WHERE     header.header_id = TO_NUMBER (itemkey)
                AND header.order_type_id = wf_assign.order_type_id
                AND SYSDATE >= wf_assign.start_date_active
                AND SYSDATE <= NVL (wf_assign.end_date_active, SYSDATE)
                AND wf_assign.line_type_id IS NULL;


      CURSOR find_LineProcessname (
         itemkey VARCHAR2)
      IS
           SELECT wf_assign.process_name
             FROM oe_workflow_assignments wf_assign,
                  oe_order_headers header,
                  oe_order_lines line
            WHERE     line.line_id = TO_NUMBER (itemkey)
                  AND NVL (p_wfasgn_item_type, '-99') =
                         NVL (wf_assign.item_type_code,
                              NVL (p_wfasgn_item_type, '-99'))
                  AND header.header_id = line.header_id
                  AND header.order_type_id = wf_assign.order_type_id
                  AND line.line_type_id = wf_assign.line_type_id
                  AND wf_assign.line_type_id IS NOT NULL
                  AND SYSDATE >= wf_assign.start_date_active
                  AND SYSDATE <= NVL (wf_assign.end_date_active, SYSDATE)
         ORDER BY wf_assign.item_type_code;

      --
      l_debug_level   CONSTANT NUMBER := 5;      --oe_debug_pub.g_debug_level;
   --
   BEGIN
      IF (p_itemtype = OE_GLOBALS.G_WFI_HDR)
      THEN
         OPEN find_HdrProcessname (p_itemkey);

         FETCH find_HdrProcessname INTO l_process_name;

         CLOSE find_HdrProcessname;
      ELSE
         OPEN find_LineProcessname (p_itemkey);

         FETCH find_LineProcessname INTO l_process_name;

         CLOSE find_LineProcessname;
      END IF;

      /*
         IF l_process_name IS NULL THEN
            RAISE NO_DATA_FOUND;
         END IF;
      */

      IF l_debug_level > 0
      THEN
         oe_debug_pub.add ('PROCESS NAME IS ' || L_PROCESS_NAME);
      END IF;

      IF l_debug_level > 0
      THEN
         oe_debug_pub.add ('EXITING GET_PROCESSNAME');
      END IF;

      RETURN l_process_name;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         oe_debug_pub.add ('Could not find root flow');
         RAISE;
      WHEN OTHERS
      THEN
         RAISE;
   END Get_ProcessName;
BEGIN
   DBMS_OUTPUT.put_line (
      'Org id: order number: line id: status: booked flag: open flag: created: WF process');
   DBMS_OUTPUT.put_line ('----------------------------------');


   DELETE FROM wf_items
         WHERE     item_key IN
                      (7446995, 7447003, 7447004) -- Input sales order line_id
               AND item_type = 'OEOL';

   COMMIT;

   DELETE FROM WF_ITEM_ATTRIBUTE_VALUES ATV
         WHERE     ATV.ITEM_TYPE = 'OEOL'
               AND ATV.ITEM_KEY IN
                      (7446995, 7447003, 7447004); -- Input sales order line_id

   COMMIT;

   FOR c IN items
   LOOP
      BEGIN
         SAVEPOINT loop_start;

         IF NVL (l_org_id, -99) <> NVL (c.org_id, -99)
         THEN
            l_org_id := c.org_id;
            fnd_client_info.set_org_context (c.org_id);
         END IF;

         --FND_PROFILE.PUT( 'OE_DEBUG_LOG_DIRECTORY', '/sqlcom/out/omptmast' );

         oe_debug_pub.setdebuglevel (5);

         p_line_rec := OE_LINE_UTIL.query_row (c.line_id);

         l_item_type := OE_Order_Wf_Util.get_wf_item_type (p_line_rec);

         l_line_process_name := NULL;
         l_line_process_name :=
            Get_ProcessName (OE_GLOBALS.G_WFI_LIN,
                             p_Line_rec.line_id,
                             l_item_type);

         DBMS_OUTPUT.put_line (
               TO_CHAR (c.org_id)
            || ': '
            || TO_CHAR (c.order_number)
            || ': '
            || c.item_key
            || ': '
            || c.flow_status_code
            || ': '
            || c.booked_flag
            || ': '
            || c.open_flag
            || ': '
            || TO_CHAR (c.creation_date)
            || ': '
            || l_line_process_name
            || ':');

         IF     l_line_process_name IS NOT NULL
            AND l_line_process_name NOT LIKE 'UPG%'
         THEN
            OE_Order_Wf_Util.Set_Line_User_Key (p_line_rec);
            line := SUBSTRB (fnd_message.get, 1, 240);

            -- Create Line Work item
            WF_ENGINE.CreateProcess (OE_Globals.G_WFI_LIN,
                                     TO_CHAR (p_Line_rec.line_id),
                                     l_line_process_name,
                                     line);
            oe_debug_pub.add ('After WF_ENGINE.CreateProcess');
            oe_debug_pub.add ('G_ORG_ID : ' || OE_GLOBALS.G_ORG_ID);
            oe_debug_pub.add ('l_org_id : ' || c.org_id);


            -- Set various Line Attributes

            l_aname (1) := 'USER_ID';
            l_avalue (1) :=
               wf_engine.GetItemAttrNumber (OE_GLOBALS.G_WFI_HDR,
                                            TO_CHAR (p_line_rec.header_id),
                                            'USER_ID');
            l_aname (2) := 'APPLICATION_ID';
            l_avalue (2) :=
               wf_engine.GetItemAttrNumber (OE_GLOBALS.G_WFI_HDR,
                                            TO_CHAR (p_line_rec.header_id),
                                            'APPLICATION_ID');
            l_aname (3) := 'RESPONSIBILITY_ID';
            l_avalue (3) :=
               wf_engine.GetItemAttrNumber (OE_GLOBALS.G_WFI_HDR,
                                            TO_CHAR (p_line_rec.header_id),
                                            'RESPONSIBILITY_ID');
            fnd_global.apps_initialize (l_avalue (1),
                                        l_avalue (3),
                                        l_avalue (2));

            l_aname (4) := 'ORG_ID';
            l_avalue (4) := c.org_id;

            oe_debug_pub.add ('Setting Item Attr Number');
            wf_engine.SetItemAttrNumberArray (OE_GLOBALS.G_WFI_LIN,
                                              p_line_rec.line_id,
                                              l_aname,
                                              l_avalue);

            l_aname2 (1) := 'LINE_CATEGORY';
            l_avaluetext (1) := p_line_rec.line_category_code;
            l_aname2 (2) := 'NOTIFICATION_APPROVER';
            l_avaluetext (2) :=
               FND_PROFILE.VALUE_SPECIFIC ('OE_NOTIFICATION_APPROVER',
                                           l_avalue (1),
                                           l_avalue (3),
                                           l_avalue (2));

            oe_debug_pub.add ('user id : ' || l_avalue (1));
            oe_debug_pub.add ('appl id : ' || l_avalue (2));
            oe_debug_pub.add ('resp id : ' || l_avalue (3));
            oe_debug_pub.add ('catgr code : ' || l_avaluetext (1));
            oe_debug_pub.add ('notif approver : ' || l_avaluetext (2));

            oe_debug_pub.add ('Setting Item Attr Text');
            wf_engine.SetItemAttrTextArray (OE_GLOBALS.G_WFI_LIN,
                                            p_line_rec.line_id,
                                            l_aname2,
                                            l_avaluetext);

            oe_debug_pub.add ('Setting Parrent');
            WF_ITEM.Set_Item_Parent (OE_Globals.G_WFI_LIN,
                                     TO_CHAR (p_Line_rec.line_id),
                                     OE_GLOBALS.G_WFI_HDR,
                                     TO_CHAR (p_Line_rec.header_id),
                                     '');

            oe_debug_pub.add ('Starting a process');

            IF c.flow_status_code = 'AWAITING_SHIPPING'
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'SHIP_LINE',
                                      'RETRY',
                                      NULL);

               BEGIN
                  SELECT st.process_activity
                    INTO l_process_activity
                    FROM wf_item_activity_statuses st,
                         wf_process_activities wpa
                   WHERE     wpa.instance_id = st.process_activity
                         AND st.item_type = 'OEOL'
                         AND wpa.activity_name = 'SHIP_LINE'
                         AND st.activity_status = 'ERROR'
                         AND st.item_key = c.item_key
                         AND EXISTS
                                (SELECT 1
                                   FROM wsh_delivery_details
                                  WHERE     source_line_id =
                                               TO_NUMBER (item_key)
                                        AND source_code = 'OE'
                                        --  and    released_status = 'C'
                                        AND oe_interfaced_flag = 'N');

                  WF_ITEM_ACTIVITY_STATUS.Create_Status (
                     itemtype    => 'OEOL',
                     itemkey     => c.item_key,
                     actid       => l_process_activity,
                     status      => wf_engine.eng_notified,
                     result      => wf_engine.eng_null,
                     beginning   => SYSDATE,
                     ending      => NULL);
               EXCEPTION
                  WHEN NO_DATA_FOUND
                  THEN
                     NULL;
               END;
            ELSIF c.flow_status_code = 'SHIPPED' AND NVL (c.shq, 0) > 0
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'SHIP_LINE',
                                      'SKIP',
                                      'SHIP_CONFIRM');
            ELSIF     c.flow_status_code IN
                         ('AWAITING_FULFILLMENT', 'SHIPPED')
                  AND c.cat = 'ORDER'
                  AND NVL (c.shq, 0) > 0
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'SHIP_LINE',
                                      'SKIP',
                                      'SHIP_CONFIRM');
            ELSIF     c.flow_status_code = 'AWAITING_FULFILLMENT'
                  AND c.cat = 'ORDER'
                  AND NVL (c.shq, 0) = 0
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'SHIP_LINE',
                                      'SKIP',
                                      'NON_SHIPPABLE');
            ELSIF     c.flow_status_code = 'AWAITING_FULFILLMENT'
                  AND c.cat = 'RETURN'
                  AND c.shq IS NOT NULL
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'RMA_WAIT_FOR_RECEIVING',
                                      'SKIP',
                                      'COMPLETE');
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'RMA_WAIT_FOR_INSPECTION',
                                      'SKIP',
                                      'COMPLETE');
            ELSIF     c.flow_status_code = 'AWAITING_FULFILLMENT'
                  AND c.cat = 'RETURN'
                  AND c.shq IS NULL
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'RMA_WAIT_FOR_RECEIVING',
                                      'SKIP',
                                      'NOT_ELIGIBLE');
            ELSIF c.flow_status_code = 'FULFILLED' AND c.fulfilled_flag = 'Y'
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'FULFILL_LINE',
                                      'SKIP',
                                      NULL);
            ELSIF     c.flow_status_code = 'INVOICED'
                  AND c.invoice_interface_status_code = 'YES'
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'INVOICE_INTERFACE',
                                      'SKIP',
                                      'COMPLETE');
            ELSIF c.flow_status_code = 'CLOSED' AND c.open_flag = 'N'
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'CLOSE_CONT_H',
                                      'RETRY',
                                      NULL);
            ELSIF     c.flow_status_code = 'CANCELLED'
                  AND c.open_flag = 'N'
                  AND c.cancelled_flag = 'Y'
            THEN
               wf_engine.handleerror ('OEOL',
                                      c.item_key,
                                      'CLOSE_CONT_H',
                                      'RETRY',
                                      NULL);
            ELSIF     c.open_flag = 'Y'
                  AND NVL (c.cancelled_flag, 'N') = 'N'
                  AND (   c.flow_status_code = 'ENTERED'
                       OR (    c.flow_status_code = 'BOOKED'
                           AND c.booked_flag = 'Y'
                           AND (   c.ato_line_id IS NULL
                                OR c.ato_line_id <> c.line_id)))
            THEN
               wf_engine.startprocess ('OEOL', c.item_key);
            END IF;
         ELSE
            DBMS_OUTPUT.put_line ('No eligible workflow assignment found.');
         END IF;                                     -- WF process is not null
      EXCEPTION
         WHEN OTHERS
         THEN
            DBMS_OUTPUT.put_line (SQLERRM);
            ROLLBACK TO loop_start;
      END;
   END LOOP;

   DBMS_OUTPUT.put_line (
      'File name ' || OE_DEBUG_PUB.G_DIR || '/' || OE_DEBUG_PUB.G_FILE);

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oe_debug_pub.add ('Exception raised');
      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
END;

Script to create Missing Workflow Activities for SO Header


DECLARE
   l_header_id    NUMBER := 1860455;  --Input sales order header_id
   l_count        NUMBER := 0;
   l_user         NUMBER := 110816;
   l_resp         NUMBER := 64421;
   l_appl         NUMBER := 660;
   wf_process     VARCHAR2 (100);
   l_org_id       NUMBER := -99;
   l_item_type    VARCHAR2 (30);
   p_line_rec     OE_Order_PUB.Line_Rec_Type;
   l_aname        wf_engine.nametabtyp;
   l_aname2       wf_engine.nametabtyp;
   l_avalue       wf_engine.numtabtyp;
   l_avaluetext   wf_engine.texttabtyp;
   l_user_name    VARCHAR2 (100);

   CURSOR items
   IS
        SELECT h.org_id,
               h.order_number,
               h.header_id,
               h.flow_status_code,
               h.open_flag,
               h.booked_flag,
               h.creation_date,
               h.order_type_id,
               h.order_category_code,
               TO_CHAR (h.header_id) item_key
          FROM oe_order_headers_all h
         WHERE     h.open_flag = 'Y'
               AND NVL (h.cancelled_flag, 'N') = 'N'
               AND h.header_id = l_header_id
               AND NOT EXISTS
                          (SELECT 1
                             FROM wf_items itm
                            WHERE     itm.item_type = 'OEOH'
                                  AND itm.item_key = TO_CHAR (h.header_id))
      ORDER BY h.org_id, h.order_number;

   FUNCTION Get_ProcessName (
      p_itemtype           IN VARCHAR2,
      p_itemkey            IN VARCHAR2,
      p_wfasgn_item_type   IN VARCHAR2 := FND_API.G_MISS_CHAR)
      RETURN VARCHAR2
   IS
      l_process_name   VARCHAR2 (30) := NULL;

      CURSOR find_HdrProcessname (
         itemkey VARCHAR2)
      IS
         SELECT wf_assign.process_name
           FROM oe_workflow_assignments wf_assign, oe_order_headers header
          WHERE     header.header_id = TO_NUMBER (itemkey)
                AND header.order_type_id = wf_assign.order_type_id
                AND SYSDATE >= wf_assign.start_date_active
                AND SYSDATE <= NVL (wf_assign.end_date_active, SYSDATE)
                AND wf_assign.line_type_id IS NULL;


      CURSOR find_LineProcessname (
         itemkey VARCHAR2)
      IS
           SELECT wf_assign.process_name
             FROM oe_workflow_assignments wf_assign,
                  oe_order_headers header,
                  oe_order_lines line
            WHERE     line.line_id = TO_NUMBER (itemkey)
                  AND NVL (p_wfasgn_item_type, '-99') =
                         NVL (wf_assign.item_type_code,
                              NVL (p_wfasgn_item_type, '-99'))
                  AND header.header_id = line.header_id
                  AND header.order_type_id = wf_assign.order_type_id
                  AND line.line_type_id = wf_assign.line_type_id
                  AND wf_assign.line_type_id IS NOT NULL
                  AND SYSDATE >= wf_assign.start_date_active
                  AND SYSDATE <= NVL (wf_assign.end_date_active, SYSDATE)
         ORDER BY wf_assign.item_type_code;
   --
   --
   BEGIN
      IF (p_itemtype = OE_GLOBALS.G_WFI_HDR)
      THEN
         OPEN find_HdrProcessname (p_itemkey);

         FETCH find_HdrProcessname INTO l_process_name;

         CLOSE find_HdrProcessname;
      ELSE
         OPEN find_LineProcessname (p_itemkey);

         FETCH find_LineProcessname INTO l_process_name;

         CLOSE find_LineProcessname;
      END IF;


      RETURN l_process_name;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         RAISE;
      WHEN OTHERS
      THEN
         RAISE;
   END Get_ProcessName;
BEGIN
   DBMS_OUTPUT.put_line (
      'Org id: order number: header id: status: booked flag: open flag: created: WF process');
   DBMS_OUTPUT.put_line ('----------------------------------');

   DELETE wf_items
    WHERE item_key = '1860455' AND item_type = 'OEOH'; --Input sales order header_id

   COMMIT;

   DELETE WF_ITEM_ATTRIBUTE_VALUES ATV
    WHERE ATV.ITEM_TYPE = 'OEOH' AND ATV.ITEM_KEY = '1860455'; --Input sales order header_id

   COMMIT;

   FOR c IN items
   LOOP
      BEGIN
         SAVEPOINT loop_start;

         IF l_org_id <> c.org_id
         THEN
            l_org_id := c.org_id;
            fnd_client_info.set_org_context (l_org_id);
         END IF;

         wf_process := NULL;
         wf_process := Get_ProcessName (OE_GLOBALS.G_WFI_HDR, c.item_key);
         DBMS_OUTPUT.put_line (
               TO_CHAR (c.org_id)
            || ': '
            || TO_CHAR (c.order_number)
            || ': '
            || c.item_key
            || ': '
            || c.flow_status_code
            || ': '
            || c.booked_flag
            || ': '
            || c.open_flag
            || ': '
            || TO_CHAR (c.creation_date)
            || ': '
            || wf_process);

         SELECT COUNT (*)
           INTO l_count
           FROM DUAL
          WHERE     EXISTS
                       (SELECT 1
                          FROM fnd_responsibility
                         WHERE     application_id = l_appl
                               AND responsibility_id = l_resp)
                AND EXISTS
                       (SELECT 1
                          FROM fnd_user
                         WHERE user_id = l_user);

         IF wf_process IS NULL OR wf_process LIKE 'UPG%'
         THEN
            DBMS_OUTPUT.put_line ('No eligible workflow assignment found.');
         ELSIF     l_user IS NOT NULL
               AND l_resp IS NOT NULL
               AND l_appl IS NOT NULL
               AND l_count > 0
               AND l_org_id = fnd_profile.value_specific ('ORG_ID',
                                                          l_user,
                                                          l_resp,
                                                          l_appl)
         THEN
            fnd_global.apps_initialize (l_user, l_resp, l_appl);

            WF_ENGINE.CreateProcess (OE_Globals.G_WFI_HDR,
                                     c.item_key,
                                     wf_process);

            -- Set various Header Attributes
            l_aname (1) := 'USER_ID';
            l_avalue (1) := l_user;
            l_aname (2) := 'APPLICATION_ID';
            l_avalue (2) := l_appl;
            l_aname (3) := 'RESPONSIBILITY_ID';
            l_avalue (3) := l_resp;
            l_aname (4) := 'ORG_ID';
            l_avalue (4) := l_org_id;
            l_aname (5) := 'ORDER_NUMBER';
            l_avalue (5) := c.order_number;

            wf_engine.SetItemAttrNumberArray (OE_GLOBALS.G_WFI_HDR,
                                              c.item_key,
                                              l_aname,
                                              l_avalue);

            /* new logic to get FROM_ROLE */
            BEGIN
               SELECT user_name
                 INTO l_user_name
                 FROM fnd_user
                WHERE user_id = l_user;
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_user_name := NULL;            -- do not set FROM_ROLE then
            END;


            l_aname2 (1) := 'ORDER_CATEGORY';
            l_avaluetext (1) := c.order_category_code;
            l_aname2 (2) := 'NOTIFICATION_APPROVER';
            l_avaluetext (2) :=
               FND_PROFILE.VALUE_specific ('OE_NOTIFICATION_APPROVER',
                                           l_user,
                                           l_resp,
                                           l_appl);
            l_aname2 (3) := 'NOTIFICATION_FROM_ROLE';
            l_avaluetext (3) := l_user_name;

            wf_engine.SetItemAttrTextArray (OE_GLOBALS.G_WFI_HDR,
                                            c.item_key,
                                            l_aname2,
                                            l_avaluetext);

            IF c.booked_flag = 'Y' AND c.flow_status_code = 'BOOKED'
            THEN
               wf_engine.handleerror (OE_GLOBALS.G_WFI_HDR,
                                      c.item_key,
                                      'BOOK_ORDER',
                                      'SKIP',
                                      'COMPLETE');
            ELSIF c.flow_status_code = 'ENTERED'
            THEN
               wf_engine.startprocess (OE_GLOBALS.G_WFI_HDR, c.item_key);
            END IF;
         ELSE
            DBMS_OUTPUT.put_line (
               'User, responsibility and appl id do not match org.');
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            DBMS_OUTPUT.put_line (SQLERRM);
            ROLLBACK TO loop_start;
      END;
   END LOOP;
   COMMIT;
END;

Wednesday, March 27, 2013

Submit Workflow from Database



Submit OEOH or OEOL (OM Header or line workflow) from database


BEGIN
wf_engine.Background (itemtype=>'OEOH', -- ‘OEOL’
                      minthreshold => NULL,
                      maxthreshold => NULL,
                      process_deferred => TRUE,
                      process_timeout=> FALSE,
                      process_stuck => NULL);
END;

Sunday, December 5, 2010

Notification Email in HTML Format



OPTION-1
========
Using sqlplus as the apps user:

1) Execute the below update statements:

update wf_local_roles
set notification_preference = 'MAILHTML'
where user_flag='Y'

2)
update fnd_user_preferences
set preference_value = 'MAILHTML'
where module_name = 'WF'
and preference_name = 'MAILTYPE'

3) Commit

OPTION-2
========

1) Login to application with "Workflow Administrator Web Applications" responsibility.

2) Navigate as per below:
---> Administrator Workflow
------------>Administration
---------------> Workflow Configuration

3) Scroll to section "Global Preferences"

4) Change "Notification Style" to your desired value to have the preferences set as default values for all new users