<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.mavencloud.tech/blogs/tag/workflow/feed" rel="self" type="application/rss+xml"/><title>MavenCloud - Blog #workflow</title><description>MavenCloud - Blog #workflow</description><link>https://www.mavencloud.tech/blogs/tag/workflow</link><lastBuildDate>Fri, 23 Jan 2026 01:34:51 -0800</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Approve and Ship Orders using Workflows]]></title><link>https://www.mavencloud.tech/blogs/post/approve-and-ship-orders-using-workflows</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/Untitled design.jpg"/>Workflows can be a powerful tool for any developer 0r administrator and can help quickly solve problems and automate tasks within your business proces ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_oBa1bt3RRAaslw0inQKKNw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Ulwy43CBRXa-KbvUuSMkSA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_lMrpgPXdRzeE3E10VmZ1Jw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_lQIESx7BQDmX9cWxOZr6RQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_lQIESx7BQDmX9cWxOZr6RQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Workflows can be a powerful tool for any developer 0r administrator and can help quickly solve problems and automate tasks within your business processes.&nbsp; One way that NetSuite has enhanced workflows and their application within your ecosystem is the ability to update native status fields on orders and transactions.&nbsp; This can be extremely helpful especially when automating your order to cash workflow.&nbsp; NetSuite has made the following fields available to workflow actions:</p><ul><li style="text-align:left;">Order Status - this is the native status of a Sales Order</li><li style="text-align:left;">Shipping Status - this is the native status of an Item Fulfillment</li></ul></div>
</div></div></div></div></div><div data-element-id="elm_ZHr2A0VT9cQlS44ExhCWog" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_ZHr2A0VT9cQlS44ExhCWog"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_YXVIPDJxl2WlEVRFrHod4w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_YXVIPDJxl2WlEVRFrHod4w"].zprow{ border-radius:1px; } </style><div data-element-id="elm_UzoePL74MET1ho1vvbcNvA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_UzoePL74MET1ho1vvbcNvA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width: 200px ; height: 150.16px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width:200px ; height:150.16px ; } } @media (max-width: 767px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width:200px ; height:150.16px ; } } [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/g66f39f1d9b68f78ca0457b20cb85a0b92157f4d11095211b818347999d5873ae63f920daf45c13c991323edc97f3ca14fdd4ce206c8ac6adc40eb4917bd69c08_1280.png" width="200" height="150.16" loading="lazy" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">If you have enabled&nbsp;</span><a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1230197.html" title="advanced shipping " target="_blank" rel="">advanced shipping</a>&nbsp;<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1224089.html#procedure_N1224129" title="advanced shipping " target="_blank" rel=""></a><span style="color:rgb(255, 255, 255);">in your NetSuite environment you can define Item Fulfillments with statuses of Picked, Packed and Shipped.&nbsp; Each status has different implications when it comes to the Inventory impact, financial impact and carrier/tracking information available to the record.</span></p><p><span style="color:rgb(255, 255, 255);">When it comes to Order Status the most common application is to update a sales order from Pending Approval to Pending Fulfillment (ie Approving an Order).&nbsp; While other statuses are available in the action configuration it is recommended to allow native NetSuite processes to move the order through the fulfillment steps.</span></p></div>
</div></div></div></div></div></div><div data-element-id="elm_YtkE94baDy9sFlRq8Uuykg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_YtkE94baDy9sFlRq8Uuykg"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_OKr2kNK1mDVfIADgjUno1w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_OKr2kNK1mDVfIADgjUno1w"].zprow{ border-radius:1px; } </style><div data-element-id="elm_NdIIEypzl2wzAoQrPLrReQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_NdIIEypzl2wzAoQrPLrReQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_oDdb2VuaU5avN0VwVdyBHw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_oDdb2VuaU5avN0VwVdyBHw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Order Status</h2></div>
</div></div></div></div><div data-element-id="elm_je9k6CosjqMpD8oSKKMYiA" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_je9k6CosjqMpD8oSKKMYiA"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_yMjjW1NCKTQ9ypQGrCN0Yg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_yMjjW1NCKTQ9ypQGrCN0Yg"].zprow{ border-radius:1px; } </style><div data-element-id="elm_hysukGZoT61xIf3BtXpzSQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_hysukGZoT61xIf3BtXpzSQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_e1wPyJQIlRVdYlJeaj-r6g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_e1wPyJQIlRVdYlJeaj-r6g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>NetSuite provides great native functionality for approving Sales Orders.&nbsp; This helps your organization manage orders effectively as you can selectively choose which orders should be held for approval and which orders should be able to freely enter your fulfillment process.&nbsp; The flip side of this coin is that, now you have a manual process for someone to review and approve these orders, which can be time consuming and also costly if not managed effectively.</p><p>With workflows you can provide any number of criteria to the system to review orders and &quot;approve&quot; them automatically.&nbsp; You can use a few different methods to achieve this depending on your needs.</p><ul><li>Scheduled Workflow - this would probably be the most common application as you are able to create a saved search and link it with a scheduled workflow.&nbsp; Then add a Set Field Value action to your workflow to set the Order Status field to Pending Fulfillment.&nbsp; If the order meets the criteria of the saved search, your order will be approved automatically.&nbsp; If it does not, then it will stay in the queue for manual approval or until something changes on the order so it matches the correct criteria.<br><img src="/Thu%20Jun%2013%202024.png" alt=""><br><br><br></li><li>Event Based Workflow - this would most likely not be as common of an application, but could work if your order is being edited by an integration or another user, but then after the edits now meets the correct criteria you can automatically update the order to Pending Fulfillment using the same Set Field value configuration as above.<br><br></li><li>Transform Record - lastly if you are using a workflow to transform an Estimate into a Sales Order, you can use the Order Status field in the Transform Record action to define whether the newly created order should be Pending Approval or Pending Fulfillment.<br><img src="/Thu%20Jun%2013%202024-1.png" alt=""><br></li></ul></div>
</div><div data-element-id="elm_GLwSwKqhEVNrG2R4kKUTrA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_GLwSwKqhEVNrG2R4kKUTrA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Shipping Status</h2></div>
<div data-element-id="elm_9Mpz0VQIrxA5BNHoJaAZug" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9Mpz0VQIrxA5BNHoJaAZug"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>We have come across many use cases in the past to automatically post Item Fulfillments from Sales Orders, however, occasionally it is difficult to manage this automation due to the Pick, Pack and Ship workflow of your order fulfillment process.&nbsp; Now with the Shipping Status field available to workflows you can define what fulfillment status should be set on your automated fulfillments.&nbsp; Similar to the Order Status above you can use many different methods to post Item Fulfillments in different statuses using SuiteFlow</p><ul><li>Scheduled Workflow - define the criteria in a saved search for when an Item Fulfillment should transition from picked to packed or packed to shipped.</li></ul><div><span style="color:inherit;"><img src="/Thu%20Jun%2013%202024-3.png" alt=""></span><br></div><ul><li>Event Based Workflow - if fulfillments are being edited you can update the status with an event based trigger to automatically set the status into the next stage.</li><li>Transform Record - if automatically posted an item fulfillment from a sales order using the transform record action, set the Shipping Status field in your workflow action configuration to match your business use case.</li></ul><div><span style="color:inherit;"><img src="/Thu%20Jun%2013%202024-2.png" alt=""></span><br></div></div>
</div><div data-element-id="elm_Mu5fsVpGPak2glopOaRPtw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Mu5fsVpGPak2glopOaRPtw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>With the continued enhancements to SuiteFlow and the automation available to you, NetSuite can become a powerful ally to grow and support your business.&nbsp; Leveraging just these small functions can make HUGE improvements in your order to cash efficiency and overall cash flow management.&nbsp; Let us know if you have questions or use cases where you have used these custom status functions in your organization.</p></div>
</div><div data-element-id="elm_7JsrGexVEShvFqYHHn8zlg" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_7JsrGexVEShvFqYHHn8zlg"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 13 Jun 2024 10:50:50 -0600</pubDate></item><item><title><![CDATA[Subscribe to Record Action]]></title><link>https://www.mavencloud.tech/blogs/post/subscribe-to-record-action</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/Untitled design -1-.png"/>The subscribe to record action is probably one of the most un-used actions in workflows.&nbsp; Mostly because we find it is the least understood.&nbsp ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Wit0sbH6REKe6SDBp-AnQQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_CgHG0yDvRF2wlpl2yHH0bA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_Kua6x1pPSPCA620p-zcj2A" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_buigHtv5RqCVh8rYFqqxRw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_buigHtv5RqCVh8rYFqqxRw"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_buigHtv5RqCVh8rYFqqxRw"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_buigHtv5RqCVh8rYFqqxRw"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">The subscribe to record action is probably one of the most un-used actions in workflows.&nbsp; Mostly because we find it is the least understood.&nbsp; However, once you have mastered how it can be used, it can be an incredibly useful tool, especially for approval workflows.&nbsp; The Subscribe to Record action is one of the few actions for workflows that can update joined records of different types.&nbsp; In this article we will build a quick approval workflow that will capture a rejection reason but properly account for users who may opt to skip this step by closing the window or using the browser navigation to go back to previous windows.&nbsp; The most common application of capturing rejection reasons is to use the <a href="https://www.mavencloud.tech/blogs/post/go-to-record-action" title="Go To Record action" target="_blank" rel="">Go To Record action</a> to redirect the user to a custom record type, with a mandatory field for &quot;Rejection Reason&quot;, as described here in our post on <a href="https://www.mavencloud.tech/blogs/post/approval_workflow_popup_window" title="Capturing Rejection Reasons" target="_blank" rel="">Capturing Rejection Reasons</a>.&nbsp; This can be sufficient, but can also open up the door to potential problems if the user does not have the patience to wait for a new window to load and then save their response.&nbsp; This is where you can use the Subscribe to Record action to &quot;monitor&quot; the created custom record for changes, and when the proper change occurs you can then move the transaction through the proper steps of the approval workflow.</p></div>
</div></div></div></div></div><div data-element-id="elm_6S3CBiavijcGEkxT8j82ZQ" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_6S3CBiavijcGEkxT8j82ZQ"].zpsection{ border-radius:1px; } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_6S3CBiavijcGEkxT8j82ZQ"].zpsection{ border-radius:1px; } } @media (max-width: 767px) { [data-element-id="elm_6S3CBiavijcGEkxT8j82ZQ"].zpsection{ border-radius:1px; } } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_CHuQKy-oP6go3JDnO-A2eA" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_CHuQKy-oP6go3JDnO-A2eA"].zprow{ border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_CHuQKy-oP6go3JDnO-A2eA"].zprow{ border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_CHuQKy-oP6go3JDnO-A2eA"].zprow{ border-radius:1px; } } </style><div data-element-id="elm_B2sCzH3nHk8O2pVmBh-v1w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_B2sCzH3nHk8O2pVmBh-v1w"].zpelem-col{ border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_B2sCzH3nHk8O2pVmBh-v1w"].zpelem-col{ border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_B2sCzH3nHk8O2pVmBh-v1w"].zpelem-col{ border-radius:1px; } } </style><div data-element-id="elm_cgPBbTxhOiUNvWe-XAvTqA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_cgPBbTxhOiUNvWe-XAvTqA"] .zpimagetext-container figure img { width: 200px ; height: 124.95px ; } } [data-element-id="elm_cgPBbTxhOiUNvWe-XAvTqA"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_cgPBbTxhOiUNvWe-XAvTqA"].zpelem-imagetext{ border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_cgPBbTxhOiUNvWe-XAvTqA"].zpelem-imagetext{ border-radius:1px; } } </style><div data-size-tablet="" data-size-mobile="" data-align="right" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-small zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/businessman-using-a-computer-analysis-for-process-and-workflow-automation-with-flowchart-a.webp" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">The Subscribe to Record action is very powerful, but can be tricky to setup correctly and this process does take a lot more configuration than most workflow actions.&nbsp; One thing to note, is that per</span><a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2751816.html" title="NetSuite's documentation" target="_blank" rel="">NetSuite's documentation</a>, <span style="color:rgb(255, 255, 255);">this action is meant to be used in conjunction with the </span><a href="https://www.mavencloud.tech/blogs/post/create-record-action-part-1" title="Create Record Action" target="_blank" rel="">Create Record Action</a>.&nbsp; <span style="color:rgb(255, 255, 255);">This means you must first create a record, store a reference to that record in a workflow field, THEN subscribe to it, using subsequent steps in your workflow state.&nbsp; We have successfully used the Subscribe to Record action in conjunction with the Go To Record action in the past, but it has proven to give inconsistent results.</span></p></div>
</div></div><div data-element-id="elm_fK-SxBtNlq95dfhIKf1FnQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_fK-SxBtNlq95dfhIKf1FnQ"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_fK-SxBtNlq95dfhIKf1FnQ"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_fK-SxBtNlq95dfhIKf1FnQ"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>To begin this process first make a custom record in your environment called &quot;Rejection Reason&quot;, or whatever best fits with your use case.&nbsp; Be sure to include a field for the user to type in their response AND a List/Record field that you can use to reference the transaction it is related to.<br><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The resulting record would look like this.&nbsp; (You can add more fields to gather more information if necessary but you would at least need these 2 fields for this workflow to be successful)</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-1.png" alt=""></span></p></div>
</div><div data-element-id="elm_wue1cOGIx9K_I4X922kt1A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_wue1cOGIx9K_I4X922kt1A"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_wue1cOGIx9K_I4X922kt1A"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_wue1cOGIx9K_I4X922kt1A"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>Next you would need to update your approval workflow to add a workflow field AND a new state for capturing the rejection reason.</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-3.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In the workflow settings first create a workflow field called &quot;Rejection Reason Record&quot; and be sure to set it as a List/Record type referencing your new custom record you built in the step above.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-4.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The next step is to add a new state in your workflow called &quot;Capture Rejection Reason&quot;.&nbsp; It will eventually be inserted in between the Pending Approval State and the Rejected state.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-5.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In the Capture Rejection Reason state, add the Create Record action (using the Entry trigger).&nbsp; Make sure you set the Store Result In field in the workflow parameters AND also set your Related Transaction field on your Rejection Reason to the Current Record.&nbsp; This will join the Rejection Reason record that is created back to your Journal Entry.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-6.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Next add the Subscribe to Record action, using the Entry trigger and you use the new workflow field you created as the reference for what record you should subscribe to.</span><span style="color:inherit;">&nbsp;(Make sure it is the step DIRECTLY AFTER your Create Record action).</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-7.png" alt="" style="width:1049.3199px !important;height:559px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Next, add a Go to Record action that would redirect the user to the newly created Rejection Reason record.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-8.png" alt="" style="width:1060.5px !important;height:559px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p>Next add a Lock Record action so that the transaction is Locked to any changes while the user is recording their Rejection Reason.</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-9.png" alt="" style="width:1058.48px !important;height:550px !important;max-width:100% !important;"></span></p><p><span style="color:inherit;">The resulting workflow state should look like this</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-10.png" alt=""></span><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_kBHxT3gmUWOVTRw5T7ocqQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_kBHxT3gmUWOVTRw5T7ocqQ"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_kBHxT3gmUWOVTRw5T7ocqQ"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_kBHxT3gmUWOVTRw5T7ocqQ"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>The next step is to setup your transitions to the rejected state when the Rejection Reason is entered.&nbsp; To do so, add a transition and set the condition to when the Rejection Reason is NOT EMPTY</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-12.png" alt="" style="width:805.08px !important;height:261px !important;max-width:100% !important;"></span><br></p><p><br></p><p>Then set the state to REJECTED and leave the Transition On trigger empty.</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-11.png" alt="" style="width:1032px !important;height:517px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Setup a second transition that is Scheduled, to send the record back to the Pending Approval state.&nbsp; This means that after 1 hour the record will go pack to Pending Approval so the user can try again to reject it.&nbsp; (NOTE - A scheduled transition will only work if there is a delay value set and the smallest delay value available is 1 hour)</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-13.png" alt="" style="width:1060.2px !important;height:540px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The resulting transitions in the workflow state should look like this</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-14.png" alt=""></span><span style="color:inherit;"><br></span></p><p>To support the process if someone were to reject the same transaction multiple times it would be a good idea to clear your Rejection Reason Record (Workflow) field before it gets to the Pending Approval state again.&nbsp; Depending on how the rest of your workflow is configured you may have a different application of this, but here we are going to add a Set Field Value action upon Exit of the REJECTED state, so when the record exits the REJECTED state to be resubmitted for approval the Workflow field will be set to NULL.<br><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-17.png" alt=""></span><br></p></div>
</div><div data-element-id="elm_IxTZ-dO4xHvhG5eavw70fQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_IxTZ-dO4xHvhG5eavw70fQ"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_IxTZ-dO4xHvhG5eavw70fQ"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_IxTZ-dO4xHvhG5eavw70fQ"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>The last step to take is to update the transition from your Pending Approval state so the record transitions to you new Capture Rejection Reason state instead of going right to REJECTED.</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-15.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The resulting workflow should look like this.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-16.png" alt=""></span><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_pu1lobCcQZJno_W4y1QQog" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pu1lobCcQZJno_W4y1QQog"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_pu1lobCcQZJno_W4y1QQog"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_pu1lobCcQZJno_W4y1QQog"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>To further help the user experience you can create a separate Workflow for the Rejection Reason record that would enhance how the user interacts with that record.&nbsp; Here we have setup a single state workflow that would set the Rejection Reason field to Mandatory AND would redirect the user back to the original transaction when saved.</p><p>Here is the Set Field Mandatory action configuration.&nbsp; Make sure that you update the Context of this action so it is <span style="color:rgb(234, 119, 4);">only triggered in User Interface</span>, as we don't want this to conflict with the Create Record action of your other workflow</p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-18.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Then here is the Go to Record action that will redirect the user back to the Transaction when it is saved.</span></p><p><span style="color:inherit;"><img src="/Wed%20Jun%2026%202024-19.png" alt="" style="width:1061.96px !important;height:529px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_l1nRtQf69v4RoSHrZPg98w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_l1nRtQf69v4RoSHrZPg98w"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_l1nRtQf69v4RoSHrZPg98w"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_l1nRtQf69v4RoSHrZPg98w"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>With these two workflows you can see how the user experience is fairly seamless when it comes to requiring a rejection reason for records and transactions.&nbsp; One nice thing about this setup is you can utilize this Rejection Reason record across any approval workflow, transaction type and record type.&nbsp; You would simply need to up date your Rejection Reason workflow to redirect to the correct record by creating multiple Go To Record actions; one for each record type using these rejection reasons.</p></div>
</div><div data-element-id="elm_GdDblcp2N_e_ytSadOEMtA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GdDblcp2N_e_ytSadOEMtA"].zpelem-text { border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_GdDblcp2N_e_ytSadOEMtA"].zpelem-text { border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_GdDblcp2N_e_ytSadOEMtA"].zpelem-text { border-radius:1px; } } </style><div class="zptext zptext-align-left " data-editor="true"><p>There are many more use cases for this Subscribe to Record action as you can use it to perform transitions, other actions and as part of criteria and conditions.&nbsp; While the setup and configuration is a bit advanced, the uses and solutions it can help with are quite extensive.&nbsp; If you would like help setting up workflows or enhancing your current workflows, please reach out to us and let us know.&nbsp; We also have expertise in almost every area of NetSuite from configuring new modules, to developing custom integrations or processes.&nbsp; Let us know if you have any questions or how you have used this subscribe to record action in your operations.</p></div>
</div><div data-element-id="elm_DLYBQOolwXzxJXmt7QYV-A" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_DLYBQOolwXzxJXmt7QYV-A"].zpelem-button{ border-radius:1px; } @media (max-width: 767px) { [data-element-id="elm_DLYBQOolwXzxJXmt7QYV-A"].zpelem-button{ border-radius:1px; } } @media all and (min-width: 768px) and (max-width:991px){ [data-element-id="elm_DLYBQOolwXzxJXmt7QYV-A"].zpelem-button{ border-radius:1px; } } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 04 Mar 2024 14:48:00 -0600</pubDate></item><item><title><![CDATA[Create Record Action - Part 2]]></title><link>https://www.mavencloud.tech/blogs/post/create-record-action-part2</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/premium_photo-1664478157873-50d4963c1d11"/>The second part of our deep dive into the Create Record Action covers how to use it within the Sublist Action group. It is one of the few actions available to the sublist action group on transactions and can provide powerful automation for your custom business processes.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_mbKJf4hlQEaG9CeVHvsYAQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_KwrYnEehRMiRuEulnIEVgg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_q2TlUGiXT0ebBVOED-L5nQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_KsefEyM4T4-RZU1r7TXuXA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_KsefEyM4T4-RZU1r7TXuXA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Previously, in our first post on the <a href="https://www.mavencloud.tech/blogs/post/create-record-action-part-1" title="Create Record Action" target="_blank" rel="">Create Record Action</a>&nbsp;we discussed how to use this powerful action to create costing history for items using a scheduled workflow.&nbsp; In this article, we will discuss how the create record action can be leveraged within the Items sublist of a transaction.&nbsp; It is worthwhile to note that the Sublist Action Group only supports 4 actions</p><ul><li style="text-align:left;">Create Record</li><li style="text-align:left;">Return User Error</li><li style="text-align:left;">Send Email</li><li style="text-align:left;">Set Field Value</li></ul><div style="text-align:left;"><div>This opens up a wide array of possibilities when it comes to working with sublist lines, furthermore if you consider that most actions available to the Client Triggers are also able to work on sublist lines, then you can see that the limitations of functionality become somewhat small with all the options available.&nbsp; If you would like to learn more about what triggers are used in certain contexts read through our post on workflow <a href="https://www.mavencloud.tech/blogs/post/workflow_triggers_eventtypes_context" title="Triggers, Contexts and Event Types" target="_blank" rel="">Triggers, Contexts and Event Types</a>.</div></div></div>
</div><div data-element-id="elm_--Ww49i4dwnN2P7fSP3pnQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_--Ww49i4dwnN2P7fSP3pnQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this example, we will build a quick workflow that create an approval task for a single line item.&nbsp; One client I worked with recently requested that certain items need to be reviewed by their design team to ensure the configuration of the item was correct, so they wanted a way to notify the design team when one of these items was ordered AND also not let the item be shipped until the review was complete.&nbsp; To do this we leveraged the Create Record action using the sublist action group for the items sublist on Sales Orders.</p><p><br></p><p>First we created a custom checkbox on the item record called &quot;Needs Review&quot;</p><p><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023.png" alt="" style="width:1051.17px !important;height:391px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">One other helpful customization is to create a custom Transaction Line field that we can use to store the Task record we will create in future steps.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-3.png" alt="" style="width:798.68px !important;height:169px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Then in our workflow we created a sublist action group using the Before Record Submit trigger</span></p><p><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-1.png" alt="" style="width:1055.4px !important;height:361px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Next we added the Create Record action to our sublist action group, ensuring to set the condition to check for the &quot;Needs Review&quot; checkbox on the item record</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-2.png" alt="" style="width:798.66px !important;height:283px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">For the remaining parameters we leveraged the native Task record in NetSuite to generate the review task for the design team.&nbsp; This was especially nice because the native functionality surrounding Tasks allows for easy reminders, notifications and even allows the user to perform the review using their mobile device if they have the NetSuite App on their phone or tablet.&nbsp; The nice thing about the Create Record Action is you can set field values on the newly created record right from the configuration window.&nbsp; As you can see we've set many fields on the Task record like the Title, Message, Due Date, Assigned To, etc.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-4.png" alt="" style="width:1048.6px !important;height:490px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">One other step is to stop the order from being processed.&nbsp; You can do this by either marking the line as Closed or setting the entire order to Closed until the review is complete.&nbsp; Another option is to leverage the Pending Approval status of the Sales Order to leave it and Pending Approval until the review can be completed.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-5.png" alt="" style="width:1047.5px !important;height:279px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Once last step we can take is to use a Scheduled transition to move this order into a &quot;Review Completed&quot; state.&nbsp; The saved search used as the condition of the transition simply looks for Review Tasks that are marked completed and then if true, triggers the transition.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-6.png" alt="" style="width:1058.15px !important;height:447px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">Then in the new REVIEW COMPLETED state you can remove the &quot;Closed&quot; checkbox from any line to let the order be processed by your operations team.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Oct%2019%202023-7.png" alt="" style="width:1050.16px !important;height:423px !important;max-width:100% !important;"></span></p></div>
</div><div data-element-id="elm_8oFDAbHBDDk3L6t6OT7jWQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_8oFDAbHBDDk3L6t6OT7jWQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>This solution can be adapted to many different use cases and customized to fit many different applications and requirements.&nbsp; We are always eager to hear how you've used workflows and different actions within your organization.&nbsp; Please take a moment to comment or write us with your ideas.&nbsp; Also we are always available to help with any questions or needs you may have.&nbsp; Please let us know how we can help but clicking the button below.</p></div>
</div><div data-element-id="elm_WBATqKCtQfu1Gno_QmxWcw" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_WBATqKCtQfu1Gno_QmxWcw"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact" target="_blank"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 19 Oct 2023 17:54:39 -0600</pubDate></item><item><title><![CDATA[Create Record Action - Part 1]]></title><link>https://www.mavencloud.tech/blogs/post/create-record-action-part-1</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/technology-7111760_1280.jpg"/>The Create Record action can be used to store data, create actionable reminders and many more meaningful process improvements for your organization.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_hczzP3MfSZKsAksh0b2W5Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm__hd5f4egTRmW6Jl3i9NrvQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_4Cri1K5pSkeLlAH_c7aSiw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_P9rg-pjgQdeAlJO0qxKyXA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_P9rg-pjgQdeAlJO0qxKyXA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">We are continuing through our deep dive into each workflow action Netsuite in this Workflows for Beginners Series.&nbsp; The next action to cover is the Create Record action.&nbsp; In previous posts we covered the Go to Record action which can be used in a similar fashion, but allows the user to interact with the record while also creating a new one at the same time.&nbsp; With the Create Record action you can simply create a new instance of a record type using both the normal triggers and also from the Item sublist on transactions.&nbsp; In this post we will cover the Create Record action when used within the normal context of a workflow and not the sublist action group.</p></div>
</div><div data-element-id="elm_qL0I8_dakfOR2k2Rd7wWLg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_qL0I8_dakfOR2k2Rd7wWLg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The Create Record action can only be used with server based triggers to ensure that there is no data lost during the client interaction with the form.&nbsp; For more information on workflow triggers read our blog post on <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="Triggers, Contexts and Event Types" target="_blank" rel="">Triggers, Contexts and Event Types</a>.&nbsp; The Create Record action is also limited to only some of the Record Types, but not all.&nbsp; Most of the limitations revolve around transactions as those are more complicated to create so automating those is a little more difficult.&nbsp; However, almost any Custom Record, Entity Record or Activity record is available to be created which opens up a world of possibilities for customization and improved efficiency.</p><p>In this example we will pair a custom record with a scheduled workflow to store and manage Average Cost for items and how it changes over time.&nbsp; Average Costing in Netsuite is very helpful and easy to understand when it comes to your inventory value, however, it is a &quot;moving target&quot; as purchasing and sourcing changes over time.&nbsp; It is hard to know and understand how your costs have changed over time, so we can make a custom record to store this data and report on it later.</p><ul><li>To start first make a custom record that links to the Item Record and holds the Date and Current Average Cost.</li></ul><p><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023.png" alt="" style="width:1062.95px !important;height:453px !important;max-width:100% !important;"></span><br></p><ul><li><span style="color:inherit;">Next we need to make a Saved Search that will define all the items we want to track the Average Cost History for.&nbsp; You can add whatever criteria or Results columns you need to fit your business use case, but for our example we will only track Active items with the Average Costing method.</span></li></ul><div><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-1.png" alt="" style="width:1040.23px !important;height:455px !important;max-width:100% !important;"></span><br></div><ul><li><span style="color:inherit;">Now we can create a workflow and set it to Scheduled.&nbsp; Also defining our Saved Search as the criteria.&nbsp; We will also create this average cost history every month on the 1st day of the month.</span></li></ul><div style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-2.png" alt="" style="width:787.65px !important;height:506px !important;max-width:100% !important;"></span><br></div><ul><li style="text-align:left;">In our first state we can add the Create Record action</li></ul><div><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-4.png" alt="" style="width:456.68px !important;height:282px !important;max-width:100% !important;">&nbsp; &nbsp;&nbsp;&nbsp;</span><img src="/Fri%20Sep%2029%202023-8.png" alt="" style="color:inherit;width:583.22px !important;height:249px !important;max-width:100% !important;"><br></div><div><br></div><ul><li>Because this is a Scheduled workflow we will use the Entry trigger so the custom record is created as soon as the Item enters the workflow</li></ul><div><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-9.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><ul><li><span style="color:inherit;">In the parameters of the action we will define the following:</span></li><ul><li><span style="color:inherit;">What record type we want to create (ie. our new Item Average Cost History custom record)</span></li><li><span style="color:inherit;">The Item assigned to our new custom record (ie. the Current Item being processed)</span></li><li><span style="color:inherit;">The current date</span></li><li><span style="color:inherit;">The Average Cost of the Item being processed</span></li></ul></ul><div><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-11.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><ul><li><span style="color:inherit;">Now when the workflow runs you can see the custom record is created automatically and attached to each respective Item.</span></li></ul><div><span style="color:inherit;"><img src="/Fri%20Sep%2029%202023-12.png" alt=""></span><br></div><div><span style="color:inherit;">These records will generate automatically for you each month and then you can create a report based on this Item Cost History record that shows how costs change over time.&nbsp; You can even try to add fields to the custom record to automatically calculate % change, last average cost and anything else you would like to store on a monthly basis.</span></div></div>
</div><div data-element-id="elm_vwmpg39ExMNPnnNanioBkg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vwmpg39ExMNPnnNanioBkg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>While this is just a simple example of how to use the Create Record action it can also be used in a more &quot;real-time&quot; sense by using an Event Based workflow instead of a scheduled workflow.&nbsp; You can add this action into approval workflows if you would like to capture approval history as a custom record.&nbsp; You can use the Create Record action to create a new custom record at ever state of the approval so you know who was the current user, the date/time and the status change at that time.&nbsp; This can store much needed information to help you review and track what happened to a record throughout the approval process.</p><p>There are many other uses and processes that can be improved by using this powerful action.&nbsp; What are some ideas or scenarios where you have used the Create Record action?&nbsp; Put your input and ideas into the comments, we love to get feedback and insights for other Netsuite users.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 29 Sep 2023 10:05:03 -0600</pubDate></item><item><title><![CDATA[Go to Page Action]]></title><link>https://www.mavencloud.tech/blogs/post/go-to-page-action1</link><description><![CDATA[The Go to Page action is quite a simple concept in NetSuite and performs almost exactly as you would think.&nbsp; You can insert this action into a wo ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_AwYJvC_RRw6VUdeZElirqQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_c9QiAVfzTfCSG4aXd_WwUw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_k5z1gtx9Qri5NsxdaMTxiA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_V8J4vCAERPams71PsL-NaA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">The Go to Page action is quite a simple concept in NetSuite and performs almost exactly as you would think.&nbsp; You can insert this action into a workflow and redirect the user to a predefined page.&nbsp; A &quot;page&quot; is considered a saved List View, Report or Saved Search result that you have already setup in NetSuite.&nbsp; This can be useful in many cases where you would like the user to be redirected to a report or saved search after a record is created or updated.&nbsp;</p></div>
</div><div data-element-id="elm_qioVoIbA-A05sQb2LKFOCg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_qioVoIbA-A05sQb2LKFOCg"] .zpimagetext-container figure img { width: 280px !important ; height: 280px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_qioVoIbA-A05sQb2LKFOCg"] .zpimagetext-container figure img { width:280px ; height:280px ; } } @media (max-width: 767px) { [data-element-id="elm_qioVoIbA-A05sQb2LKFOCg"] .zpimagetext-container figure img { width:280px ; height:280px ; } } [data-element-id="elm_qioVoIbA-A05sQb2LKFOCg"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-custom zpimage-tablet-fallback-custom zpimage-mobile-fallback-custom hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Go%20to%20URL_TILE.jpg" width="280" height="280" loading="lazy" size="custom" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">Unfortunately, while the navigation to different pages or search results is extremely useful in workflows, there is a limitation in that you cannot dynamically filter or modify the results using data from the current record.&nbsp; To overcome this limitation we've created the Go to URL custom action that you can easily install into your account.&nbsp; With our Go to URL action you can redirect the user to ANY URL either within NetSuite or to an External website.&nbsp; You can also define if the new page should open as a new tab or a pop-up window instead of just replacing the current window.&nbsp; Lastly, we've elevated this functionality by supporting URL parameters which can pre-populate form data, pre-filter search results or dynamically display different list data based on any criteria or data within the workflow.&nbsp; This function can be used to quickly enter new records and link them to your workflow while simultaneously filling in fields on the form so users won't have to copy and paste data.&nbsp; We've even successfully created simple &quot;integrations&quot; between NetSuite and other external systems if you understand URL parameters and how the external system leverages them.&nbsp; You can find out more information on this amazingly powerful action on our</span><a href="https://www.mgbc-store.com/products/474710/3628259000002015154" title="website" target="_blank" rel="">website</a><span style="color:rgb(255, 255, 255);">or</span><a href="mailto:info@mgbcpro.com?subject=Go%20to%20URL%20Action" title="email us" rel="nofollow noreferrer noopener">email us</a><span style="color:rgb(255, 255, 255);">if you have any questions.</span></p></div>
</div></div><div data-element-id="elm_Xy0MnBJGj1WdN7CDa1ygEQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Xy0MnBJGj1WdN7CDa1ygEQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Most of the Go to Page actions we've deployed over the years are just quickly linking reports and saved searches to other records so users don't have to remember the menu path for specific reports.&nbsp; For example, Finance teams have asked to provide a link or button on Customer records that would open up the A/R Aging report as that is a common workflow for their daily processes.&nbsp; To do so we can create a simple 2 state workflow on the Customer record.</p><p>In state 1 of your workflow add the Add Button action.&nbsp; (You can read through our article on the <a href="https://www.mgbcpro.com/blogs/post/add-button-action" title="Add Button" target="_blank" rel="">Add Button</a> action if you have more questions on how that works)</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023.png" alt=""></span><br></p><p><br></p><p>Then add a transition into State 2 that executes on button click.</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-1.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In State 2 we will add the Go to Page action.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-2.png" alt="" style="width:406.5px !important;height:247px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">Next we will use the Entry trigger as we only want the redirect to happen right when the button is clicked and not every time the record is loaded or edited.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-3.png" alt=""></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Then we will select the A/R Aging page in the list</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-4.png" alt="" style="width:1043.4399px !important;height:629px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now the button appears on Customer records</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-5.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">And when clicked the user is taken to the native A/R Aging report.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-6.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now one big issue is that this is just the A/R Aging Summary in whole, where many users would prefer to see the A/R Aging summary filtered to the exact customer that they click the button on.&nbsp; As stated above this is not possible with the native functionality and can be overcome by using our Go to URL action, but in this case the entire aging will have to do.&nbsp; But at least the user doesn't have to remember the menu path to get to this report and if you have customized the report you can link to the custom report instead of the standard one which can make navigation easier as custom reports sometimes get buried in the custom reports menu.</span></p></div>
</div><div data-element-id="elm_0QQpBrhiKOpU898Ut-75Fg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0QQpBrhiKOpU898Ut-75Fg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One trick you can use is you can create a custom center link that navigates you to almost any URL either internally to your NetSuite environment or externally.&nbsp; To do this first go to Customization &gt; Centers and Tabs &gt; Center Links</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-7.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Then in a new line enter a custom label for the link and the actual URL.&nbsp; This URL can be any external webpage, or any internal URL to NetSuite.&nbsp; We've seen accounts link to a new transaction record already in edit mode, or even documents stored in the file cabinet so there a lot of possibilities here with what you can add to these Center Links</span></p><p><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-8.png" alt=""></span><span style="color:inherit;"><br></span></p><p>Now in our workflow we can add our new link as the Page to redirect to instead of the A/R Aging report.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Sep%2015%202023-9.png" alt="" style="width:645.24px !important;height:189px !important;max-width:100% !important;"></span><br></p></div>
</div><div data-element-id="elm_xLHSKnOOtoV6lrqL3hafAA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_xLHSKnOOtoV6lrqL3hafAA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As a side note you can only use the Entry, Exit and After Submit triggers with this action.&nbsp; This is because you need the record to be saved to the database before redirecting away from it.&nbsp; If you were to use a Before Submit, or After Field Edit trigger then any new information you entered onto the record would be lost as you are redirected away by the workflow.&nbsp; Usually, if you are trying to give the user a button to click then the Entry trigger is best, but if you want to be redirected as the record is being saved then After Record Submit is best.&nbsp; If you have any more questions about workflows, how to leverage workflows in your account or any other customizations, please <a href="/contact" title="contact us" rel="">contact us</a> at anytime.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 15 Sep 2023 13:03:23 -0600</pubDate></item><item><title><![CDATA[Dynamically Source Field Values from Saved Search Results]]></title><link>https://www.mavencloud.tech/blogs/post/dynamically-source-field-values-from-saved-search-results</link><description><![CDATA[See how to leverage saved searches and workflows to elevate your automation game.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm__JjJsoIbQdCL6j8XY8625w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_VQfi_uzlR0S-nJwGH4KUGQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_c7XDzwnNRqS44NRFgmLfTA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_Msf2Yvz_SVynzbPhJOWwzw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Msf2Yvz_SVynzbPhJOWwzw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">One of the unsung heroes of Netsuite is part of the core SuiteBuilder module where you can use a saved search to dynamically source the value of a custom field.&nbsp; This means you can use a saved search to calculate a value, then this will be dynamically displayed on the record in your custom field.&nbsp; To do so first we need to build a saved search with the following criteria:</p><ul><li style="text-align:left;">It must be a summary search with only one result column</li><li style="text-align:left;">It must have at least one standard criteria</li><li style="text-align:left;">It must have a filter</li></ul><div style="text-align:left;">Let's build this together to calculate the total sales of each sales rep so users can see their total sales and possibly use this value in a Sales Commissions workflow down the road.&nbsp; First our saved search will be a transaction saved search and the criteria should include only Posting transactions that effect revenue.&nbsp; We have also added criteria to filter out Freight Revenue as that does not count toward our Sales Reps goals.&nbsp; (NOTE - the cool thing here is the field that will display this data will be an Entity field on the Employee record even though this search is a Transaction Search.&nbsp; This is an awesome feature that allows you to link data across record types as long as there is some field on the record type used in your saved search that links to the record type you want to display the data on.)</div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023.png" alt=""></span><br></div><div style="text-align:left;"><br></div><div style="text-align:left;">Next in the results we can add a few columns like Date, Document Number, Type, Sales Rep and Amount</div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-1.png" alt=""></span><br></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Next we need to make this a summary search so we will add the Summary Type of SUM to the Amount column</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-2.png" alt=""></span><br></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Next, we need to add a filter to this search so we will add the Sales Rep field as a filter here.&nbsp; (NOTE - You do not need to check the Show in Filter Region box for this to work, but you can if you want.&nbsp; It does not hurt the functionality to have it checked)</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-3.png" alt=""></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Lastly, be sure to add the correct </span>permissions<span style="color:inherit;">&nbsp;under the Audience subtab or mark the search as Public if you would like.&nbsp; Now when we save the search it should only show one value which would be the total of ALL sales, but the trick is the filter we added will be dynamically sourced the the record that we add the custom field to in the next steps.</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-4.png" alt="" style="width:1054.1px !important;height:199px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div></div>
</div><div data-element-id="elm__W4FIaK0OO8FPQ7UMH1ZSg" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm__W4FIaK0OO8FPQ7UMH1ZSg"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_P35dJM69OoBDu6wRURQp4g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_P35dJM69OoBDu6wRURQp4g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The next step is to build your custom field that will sit on the Employee record.&nbsp; To do so navigate to Customization &gt; Lists, Records and Fields &gt; Entity Fields &gt; New</p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-5.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Enter a name and ID for your field then select the Currency type. (NOTE - you can also use Decimal Number as well)</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-6.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Next we need to select the Employee record under the Applies To and UNCHECK the Store Value box.&nbsp; This is key to getting this to work so make sure you uncheck this box so NetSuite can dynamically source the correct value every time the record is loaded.</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-7.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The last step is we need to add the saved search we made under the Validation &amp; Defaulting subtab</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-8.png" alt="" style="width:672.85px !important;height:221px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Once saved you can view the Employee record to see the value automatically populated.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-9.png" alt="" style="width:1053.6801px !important;height:517px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><br></p></div>
</div><div data-element-id="elm_VJ1jYun13rp7GwS23GcO7Q" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_VJ1jYun13rp7GwS23GcO7Q"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_YXNdlug_vDi53uwYAycgAQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_YXNdlug_vDi53uwYAycgAQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>While this is incredibly helpful when viewing records we run into a problem in that this field is NOT reportable.&nbsp; Meaning it does not display a value when added to a report or saved search.&nbsp; This is because we unchecked the Store Value box on the custom field configuration.&nbsp; This is because the value cannot be dynamically sourced if it is stored, BUT if it is not stored then it cannot be reported on.&nbsp; To overcome this &quot;catch 22&quot; we can leverage workflows.&nbsp; Then nice thing about workflows is any non-stored field is still dynamically sourced during the workflow execution and then can be used as a condition or even used to set the value of another field.</p><p>To do this we need to first create a saved search that will trigger our workflow.&nbsp; The criteria of this workflow would be any Employee that is a Sales Rep. (NOTE - The results and filters to do not matter in this case, but you can customize those as you feel comfortable.)</p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-10.png" alt="" style="width:1050.5601px !important;height:433px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">The make another Custom Entity Field that will be used to store the value being calculated by the saved search.&nbsp; Be sure to keep the store value box checked.&nbsp; (Make sure the field type matches the field type you created in your non-stored field).</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-11.png" alt="" style="width:1049.6px !important;height:412px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Lastly, create a scheduled workflow based on the Employee record and use your saved search as the criteria.&nbsp; Also setup the frequency you would prefer.&nbsp; We will use Daily at 11:00pm, so every night the total sales will be calculated and stored.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-12.png" alt="" style="width:554.32px !important;height:419px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">In the first State add a Set Field Value and use the Entry trigger.&nbsp; (NOTE - We do not need to use any extra Conditions, Contexts or Event Types as this is already controlled by the Saved Search and Schedule we setup in the previous steps)</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-13.png" alt=""></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">In the parameters find your stored field and then use the From Field parameters to set the value from your non-stored field</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-14.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;">Then save your workflow.&nbsp; Now every night at 11:00pm the workflow will run on ALL employee records where Is Sales Rep = T.&nbsp; The Employee Total Sales field will be calculated from the first saved search we built, then the calculated value will be stored in the Employee Total Sales (stored) field.&nbsp; This way you can report on the stored field in other saved searches or reports.&nbsp; You can also set the frequency of your workflow to be more often if you need more &quot;real-time&quot; information.&nbsp; This same concept also works in Event Based workflows but requires a user to create or edit the record to trigger the workflow to store the new value.</p><p style="text-align:left;"><br></p><p style="text-align:left;">One other thing to note is you can set the field display type of the non-stored field to &quot;hidden&quot; in the field configuration and that field will not be shown to users as they view employee records but still can be accessible to workflows as normal.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-15.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">This little trick is an amazing leap forward in automating and optimizing data throughout your system, as you can now automatically calculate and store data between many different record types with your NetSuite environment.&nbsp; Be sure to <a href="https://www.linkedin.com/company/mgbcpro/" title="follow us" target="_blank" rel="">follow us</a> and check back often for more great tips and tricks to help you maximize your NetSuite investment!</span></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 02 Aug 2023 16:03:43 -0600</pubDate></item><item><title><![CDATA[Do Not Exit Workflow]]></title><link>https://www.mavencloud.tech/blogs/post/do-not-exit-workflow</link><description><![CDATA[If you have done much work with workflows in NetSuite you have probably seen the &quot;Do Not Exit Workflow&quot; checkbox on the header level of all ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_7vAjDvekSiCTqJS-7XFSaA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_l-xcX7oaRpOoxa6e8KePIA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_sQdUfkMORL6iVlkcV3LrpA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_m55VPieySMWR2NBEFtPEGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_m55VPieySMWR2NBEFtPEGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">If you have done much work with workflows in NetSuite you have probably seen the &quot;Do Not Exit Workflow&quot; checkbox on the header level of all states in your workflow.&nbsp; We get a lot of questions about this checkbox like; &quot;When should it be used or avoided?&quot; or &quot;How does this checkbox effect performance in my environment?&quot;</p><p style="text-align:left;"><br></p><p style="text-align:left;">If you have had these same questions as well we will cover this one checkbox in depth in this article.</p></div>
</div><div data-element-id="elm_ZrOBMBaYpenC-tg6nMIG3Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZrOBMBaYpenC-tg6nMIG3Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As stated before the Do Not Exit Workflow checkbox is found in the header of each State within your workflow.&nbsp; It can be checked at anytime as long as the State does NOT contain any transitions assigned to it.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023.png" alt="" style="width:1046.62px !important;height:313px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">The field help and documentation on this checkbox are pretty self </span>explanatory<span style="color:inherit;">&nbsp;stating,&nbsp;</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">&quot;States that are designated as non-exiting must have no transitions. When the record in the workflow enters a non-exiting state, the record will remain in the state forever and the workflow will not terminate.&quot;</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Here we can clearly see that when a State is marked with &quot;Do Not Exit Workflow&quot; then the record will remain in this state indefinitely and the workflow will never terminate.&nbsp; Any actions within the state will continue to execute forever, as long as they are not using the Entry or Exit triggers.&nbsp; As such, if an action is trigger On Entry, it will be executed when the record first enters this state, but then NEVER again as the record will never leave the state so re-entry is not possible.&nbsp; Alternatively, because the record will never Exit this state the On Exit trigger will never be executed either.&nbsp; However, all other Server and Client triggers are still effective if any Actions are triggered from these events.</span></p><p><span style="color:inherit;"><br></span></p><p>Lastly, if you were to add a transition to a State that is marked with the &quot;Do Not Exit Workflow&quot; checkbox then it will immediately become unchecked and also disabled so you cannot check it again as this State is no longer available for this setting.</p></div>
</div><div data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width: 500px ; height: 333.33px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width:500px ; height:333.33px ; } } @media (max-width: 767px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width:500px ; height:333.33px ; } } [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/business-process-automation-using-flowchart-swimlane-diagram-concept-with-manager-or.jpg" width="500" height="333.33" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">Many people ask why would someone use this feature in a workflow.&nbsp; The most common use case here is within an approval workflow.&nbsp; If your approval workflow contains a Rejected state, then you may want to lock the record so it cannot be edited or changed again.&nbsp; In this scenario you would apply the Lock Record action in the Rejected state and then mark the Do Not Exit Workflow box so the record ALWAYS remains in the Rejected state and ALWAYS remains locked by the workflow.&nbsp; While this is a great use case for this function it is also useful when you have a single state workflow or a state within a workflow that you want the actions in that state to consistently be triggered every time the record is accessed.&nbsp; If you apply the Do Not Exit Workflow setting then the record will remain in the State indefinitely and all actions will continue to be triggered indefinitely.&nbsp; This helps to maintain consistency of the functions on your records while avoiding the need to re-create actions or copy actions into multiple states or multiple workflows.</span></p></div>
</div></div><div data-element-id="elm_4sVcdNXckOVWz-JtX_RUEw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4sVcdNXckOVWz-JtX_RUEw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The most common misconception about this setting is that it is a huge drain on system resources to somehow &quot;remember&quot; what records held in what states of workflows and constantly be in a &quot;holding&quot; pattern forever.&nbsp; This is just simply not true.&nbsp; In fact, the system functions in almost the opposite way.&nbsp; When you enable the Do Not Exit Workflow setting the Current State is stored with the record when it is saved to the database.&nbsp; This record is not touched or interacted with by the system in anyway until a user tries to &quot;recall&quot; or view the record.&nbsp; In this case the record is loaded from the database and the Current State is still stored with it.&nbsp; At this point the system is able to quickly evaluate the actions within this state and perform them easily, with low impact to the over system performance.</p><p>Conversely, if one were to NOT check this box then in the same scenario the record will be stored to the database with NO reference to a workflow or workflow State.&nbsp; Then when &quot;recalled&quot; to be viewed by a user, the system must find all workflows that the records meets the criteria of and initiate them all.&nbsp; This usually will create an instance and history record for the workflow initiation and then once initiated the actions within the workflow will be evaluated and executed accordingly.</p><p>So as you can see the Do Not Exit Workflow box could avoid all this unnecessary processing of workflow initiation, instance records and extra evaluation of conditions if used in the correct context.&nbsp; In conclusion this may seem like small distinction in functionality, but these small configuration can lead to big payoffs when evaluating the performance of your system.</p><p><br></p><p>If you have questions about workflows or ANY type of customization or automation within your NetSuite ecosystem reach out to us and we would be happy to partner with you to optimize your environment.</p></div>
</div><div data-element-id="elm_fXxUU8eiLdsBAsIhsU8xUQ" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_fXxUU8eiLdsBAsIhsU8xUQ"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="mailto:info@mgbcpro.com" rel="nofollow noreferrer noopener"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 25 Jul 2023 21:32:01 -0600</pubDate></item><item><title><![CDATA[Workflow Instance, History and Logging]]></title><link>https://www.mavencloud.tech/blogs/post/workflow-instance-history-and-logging</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/business-process-concept-flowchart.webp"/>When developing any automated or semi-automated process in any system, one of the hardest most tedious things can be troubleshooting incorrect results ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_DrbZDBCuQDeFdYcWr1vw-A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BRIwv8PZTzm3LmRRRb1F0A" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_xRimkdt4QrOehwVRrmL-sw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_TyQJMHeXTdOAdzE2sZlybw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_TyQJMHeXTdOAdzE2sZlybw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">When developing any automated or semi-automated process in any system, one of the hardest most tedious things can be troubleshooting incorrect results or errors that occur.&nbsp; When writing script or code, debugging can be an arduous task for even the most accomplished developer.&nbsp; When using workflows in NetSuite, there is also a large element of debugging or troubleshooting that occurs throughout the development of the workflow and even after it has been deployed.&nbsp; Luckily, NetSuite has provided a few useful tools to help with this process.</p></div>
</div><div data-element-id="elm_EiDMOCBB5SkJwr_QDYepjg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EiDMOCBB5SkJwr_QDYepjg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In the initial setup and configuration of your workflow there are two settings you can use to enable these helpful tools.&nbsp; They are the &quot;Keep Instance and History&quot; setting and the &quot;Enable Logging&quot; setting.</p><p><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-1.png" alt=""></span><br></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">With these two settings you can implement NetSuite's backend logging capabilities to help you review what happened to the record throughout the workflow and where you may have configured an action or transition incorrectly.</span></p></div>
</div><div data-element-id="elm_BaYKV2ATLbrip3s_uBt6nA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_BaYKV2ATLbrip3s_uBt6nA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Keep Instance and History</h2></div>
<div data-element-id="elm_OAr1zWJqUopp5zm0kWnpOw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OAr1zWJqUopp5zm0kWnpOw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>NetSuite offers a few different configuration settings for this function to give developers more flexibility around when and how Instance records should be kept for records within your workflows.&nbsp; The available options are:</p><ul><li>Always - which means workflow history will always be kept under the System Notes tab of the record being affected by the workflow and saved there indefinitely.</li><li>Never - the system will log the workflow history for a record while it is actively within the workflow, but once it leaves the workflow or the workflow is canceled all instance and history records will be deleted from the database.</li><li>Only when Testing - the system will only maintain workflow history for records while the workflow release status is set to Testing, but not for any other release status.&nbsp; When the workflow is transitioned to the Released status the system will log the workflow history for a record while it is actively within the workflow, but once it leaves the workflow or the workflow is canceled all instance and history records will be deleted from the database.</li></ul><div>To explain when instance and history records we will look at an Expense Report that initiated an approval workflow.&nbsp; You can find the workflow history under the System Information subtab on any record.</div><div><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-2.png" alt="" style="width:1056.28px !important;height:308px !important;max-width:100% !important;"></span><br></div><div><span style="color:inherit;">Here you can see the record began in the INITIATE state and moved through the workflow until it reached the REJECT state, where it still currently sits as there is no DATE EXITED STATE value listed.&nbsp; This is your first step into troubleshooting workflow issues as you can quickly see if the record transitioned to the correct states per your expectations as the developer.&nbsp; You can also see the date and time the record transitioned between states which can be helpful when compared to the System Notes as you can see different field values that changed and what date or time that change </span>occurred<span style="color:inherit;">.</span></div></div>
</div><div data-element-id="elm_ZXQHbvnBDmyp54CA2w9aPA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZXQHbvnBDmyp54CA2w9aPA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Workflow Logging</h2></div>
<div data-element-id="elm_LTmOo1LnqFS3GHRQC6fjcg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_LTmOo1LnqFS3GHRQC6fjcg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>To expand upon the wealth of information that workflow history records can provide you can also dive deeper into each action and transition executed in each state by using the Enable Logging feature.&nbsp; When this checkbox is checked the &quot;Log&quot; link will appear next to each workflow instance under the Workflow History sublist.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-3.png" alt="" style="width:1039.99px !important;height:240px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">When you click on this link a popup will appear that shows every action and transition contained within that state and what condition was met to trigger each action.</span></p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-4.png" alt="" style="width:1049.21px !important;height:454px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p>Here we have an enormous amount of information showing each action performed the trigger used, the condition met and even the values set by each workflow action.&nbsp; We can also see transitions and why they were triggered and in what context.&nbsp; This is incredibly helpful during the troubleshooting phase of your development to see where you might have configured something incorrectly or the logic of a condition might be a little off.</p><p>You can also toggle the &quot;Show Rejected Actions/Transitions&quot; checkbox to see actions that are setup within the workflow state, but maybe did not executed and the reason why the did not execute.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-5.png" alt="" style="width:1057.4px !important;height:336px !important;max-width:100% !important;"></span><br></p><p>This logging is the most helpful tool for troubleshooting workflow issues and errors.&nbsp; We usually recommend that you enable logging for the initial development of workflows and also for the first few weeks after deployment of any workflow to help quickly fix any issues that may arise during the &quot;hyper-care&quot; phase after implementation.&nbsp; However, once a workflow has been running successfully for a few weeks or even a few months it might be a good idea to disable logging as the workflow instance logs and workflow logs do take up database room and require system resources to create, access and maintain.</p></div>
</div><div data-element-id="elm_8NO2MoVMlU6miTWmnu_RoA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_8NO2MoVMlU6miTWmnu_RoA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Deleting Workflow Logs</h2></div>
<div data-element-id="elm_7eVN-Bf2JbXl3AIB2FoBuw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7eVN-Bf2JbXl3AIB2FoBuw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>A very little known feature of workflows is the fact that you can delete or remove these logs and history records for workflows from the system if you feel they are no longer needed.&nbsp; This can be very helpful when performing system clean up efforts or just trying to remove unwanted &quot;junk&quot; from your system.</p><p>In your workflow if you hover over the &quot;more...&quot; link in the upper right hand corner you can select the &quot;Instance and History Records&quot; option from the drop down menu.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-6.png" alt="" style="width:1053.6px !important;height:321px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In the pop up window enter the number of months in the past you would like to keep these instance and history records, or enter zero in this field to delete ALL history records for this workflow.&nbsp; Then click the delete button.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-7.png" alt="" style="width:431.9px !important;height:412px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Upon </span>successful<span style="color:inherit;">&nbsp;completion of the deletion the pop up window will disappear and you can continue to configure your workflow as needed.</span></p></div>
</div><div data-element-id="elm_HTFY49tAmiEUHLGdRBk_Iw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HTFY49tAmiEUHLGdRBk_Iw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As you can see workflow history and workflow logs can be extremely helpful to troubleshoot any issues or errors that may arise from your workflow, but make sure to only use them when absolutely necessary.&nbsp; It does not help to load your system up with years worth of workflow logs when you are only experiencing a few errors or issues throughout the year.&nbsp; It would be better to turn off logging and when issues arise try to quickly enable logging and recreate the record or transaction the same way to catch the error, then disable logging again after a fix is in place.</p><p>If you appreciated this insight into workflows or would like to learn more about workflows and other NetSuite customizations be sure to subscribe to our blog or follow our <a href="https://www.linkedin.com/company/mgbcpro" title="LinkedIn page" target="_blank" rel="">LinkedIn page</a> for more great content.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 21 Jul 2023 22:21:00 -0600</pubDate></item><item><title><![CDATA[Send Email Action]]></title><link>https://www.mavencloud.tech/blogs/post/Send-Email-Action</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/businessman-sending-email-by-laptop-computer-to-customer-business-contact-and-communication.webp"/>Here we've covered the ultra-popular Send Email action. Providing serious details and insight on how to leverage this action in so many ways across your organization.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_HihG6pkHS9CnD3UIFXTz1Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_U6TGMXSTRBq1x8WrQ6JneQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_e-YEDA_CTxSjrAwDuzLAfQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_e-YEDA_CTxSjrAwDuzLAfQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_ZyGRrrPGSp6pWe9dvtSXnA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZyGRrrPGSp6pWe9dvtSXnA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">One of the more common use cases for a workflow is to make a workflow that sends an email.&nbsp; The Send Email action is VERY powerful and incredibly useful within any environment.&nbsp; Many NetSuite Admins and Super Users have gotten used to sending email notifications through Saved Searches, but the Send Email workflow action takes that to the next level.&nbsp; This action gives users more control over the content of the email and even the context of how and when it is sent.</p><p style="text-align:left;">The Send Email action is only available to a few select triggers and ONLY available to be used with server-side triggers.&nbsp; You cannot send an email with a client trigger as the user is interacting with the record.&nbsp; The triggers available are:</p><ul><li style="text-align:left;">On Entry - when the record first enters a state within the workflow</li><li style="text-align:left;">On Exit - when the record is exiting a state within the workflow</li><li style="text-align:left;">After Record Submit - after the record is saved it is loaded from the database again and the email is sent.</li><li style="text-align:left;">Scheduled - NetSuite has a backend schedule that runs every 30 min and will check the condition of all scheduled actions.&nbsp; If the condition is met then the Email will be sent.</li></ul><div style="text-align:left;"><div>If you need more information regarding workflow triggers checkout our blog post on <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="Workflow Triggers, Contexts and Event Types" target="_blank" rel="">Workflow Triggers, Contexts and Event Types</a>.</div></div></div>
</div><div data-element-id="elm_AlvbTUIGEI1SSbgoEMIyoQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_AlvbTUIGEI1SSbgoEMIyoQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The use case for this action is pretty straight forward and concise.&nbsp; When the condition is met -&gt; send an email.&nbsp; And the trigger used is also fairly straight forward as well, either send the email as soon as the record is saved, when the record transitions to a new state OR on a schedule.</p><p>In this example we will look at using the Send Email action within an Event Based workflow and a Scheduled workflow.</p></div>
</div><div data-element-id="elm__RD9t3-ikY_4SrcDWIRwoA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm__RD9t3-ikY_4SrcDWIRwoA"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_58f6CvFzQ5vsueZdoHfM9Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_58f6CvFzQ5vsueZdoHfM9Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Event Based Workflow</h2></div>
<div data-element-id="elm_GMGt8LRgVnENIWtlqycX-g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GMGt8LRgVnENIWtlqycX-g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="text-align:left;">An event based workflow can be initiated by someone either creating a record or viewing/updating an existing record.&nbsp; In this case we want to include both events in our workflow initiation as this example will be sending an email to a Vendor when a Purchase Order is saved.</p><p style="text-align:center;"><img src="/Wed%20Jul%2012%202023-7.png" alt="" style="color:inherit;width:674.24px !important;height:513px !important;max-width:100% !important;"><br></p><p style="text-align:left;">In the first state of the workflow click the New Action button then select Send Email from the list</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-8.png" alt=""></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">We have added a custom field to the Purchase Order called &quot;Email PO&quot;.&nbsp; It is a checkbox that we will use as the condition of our send email action.&nbsp; We will also use the After Record Submit trigger because we want the email to be sent right after someone saves the Purchase Order IF they have checked the &quot;Email PO&quot; box.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-9.png" alt=""></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now in the Parameters we have to first define the Sender and Recipient of the email.&nbsp; This is where the workflow action falls a little short of Saved Searches, because you are forced to select from a list of current users or contacts (or a field on the record that contains a reference to a list of contacts) as the sender.&nbsp; Wherein Saved Searches allow you to type in any email address/author into the Sender field for sending an email.&nbsp; This is not a huge burden to overcome as any email you would like to use as a sender can easily be added as an Employee record OR a Contact record in Netsuite and then selected in the workflow action.</span></p><p style="text-align:center;"><img src="/Wed%20Jul%2012%202023-10.png" alt="" style="color:inherit;text-align:left;width:538.78px !important;height:225px !important;max-width:100% !important;"><br></p><p style="text-align:left;">The recipient section provides more options for configuration, as you can select from a list of entities already in the system (ie. Employees, Customers, Vendors or Contacts), enter a free form address, OR use a field on the record to source the recipient email address.<br>NOTE - the field on the record must be either a Email Address field type OR a List/Record type with reference to an Entity list.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-11.png" alt="" style="width:600.15px !important;height:414px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;"><span style="color:inherit;">You can also type a free form address into the CC or BCC fields and they will be copied on the email.&nbsp; Alternatively, you can source a field value by using the field id in the CC or BCC fields to get an email address that is stored in a field on the record.<br>NOTE - This field does NOT have to be an Email Address type field, but the value of that field must be a valid email address or else the workflow will fail to perform the action</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-12.png" alt="" style="width:517.05px !important;height:356px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_ID9OxvW9dgfW8PeLLEIqLw" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_ID9OxvW9dgfW8PeLLEIqLw"] .zpimagetext-container figure img { width: 200px ; height: 133.33px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_ID9OxvW9dgfW8PeLLEIqLw"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } @media (max-width: 767px) { [data-element-id="elm_ID9OxvW9dgfW8PeLLEIqLw"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } [data-element-id="elm_ID9OxvW9dgfW8PeLLEIqLw"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/email-marketing-concept.jpg" width="200" height="133.33" loading="lazy" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);font-size:11px;">One question that we get asked frequently is; &quot;How can I send an email to multiple addresses?&quot;&nbsp; The best way to do this is to use the CC or BCC parameters within the Send Email action.&nbsp; You can create a custom field that is a Free Text field, then use that field ID as the value for the CC parameter.&nbsp; Since a Free Text field is NOT limited to the formatting constraints of an Email Address field you are able to type multiple email addresses into it separated by a comma.&nbsp; &nbsp;For example an Email Address type field can only accept &quot;purchasing@mycompany.com&quot; as a value.&nbsp; Where a Free Text field can accept &quot;purchasing@mycompany.com, mysalesrep@mycompany.com, accountsreceivable@mycompany.com, receiving@mycompany.com&quot;</span></p><p><span style="color:rgb(255, 255, 255);font-size:11px;">This will then source all comma separated email addresses into the CC of the email that gets sent and all email addresses will be copied on the email.</span></p></div>
</div></div><div data-element-id="elm_j2TN4j0oR_DxGkYym5EOug" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_j2TN4j0oR_DxGkYym5EOug"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Now we can move onto the content of the email.&nbsp; You can either use a template that you have already setup under Documents &gt; Templates &gt; Email Templates, or use a custom template that you build right within the parameter's of the workflow.<br>We will make a custom template and enter a custom Subject line and use the field ID to source the PO# into the Subject of the Email</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-13.png" alt="" style="width:554.17px !important;height:349px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;">Then add text into the body of the email, again sourcing field values from the Purchase Order into the email body by using the field IDs</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-14.png" alt="" style="width:530.36px !important;height:339px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;"><span style="color:inherit;">We will leave the &quot;Include View Record Link&quot; checkbox unchecked as we are sending this email to an external recipient.&nbsp; If you check this box a &quot;View Record&quot; link will be added to the bottom of the email that when clicked will attempt to take the person into your NetSuite environment to view the Purchase Order.&nbsp; We have a safeguard here in that most likely the Vendor will not have a valid login, however, it is best to leave this off the email to avoid confusion.&nbsp; If this email is only going to Internal users like an email requesting approval of a transaction the the View Record link might be helpful for that user to easily find their way to the record and approve it.</span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Lastly, we can add attachments to the email that gets sent.&nbsp; First, we will discuss the Attach File paramter.&nbsp; Here we can attach any file stored in the File Cabinet to this email by selecting it in the File parameter.&nbsp; Alternatively, you can use a Document type field on the record to store a File from the file cabinet and then use that field as the source of the file that should be attached.&nbsp; This is especially helpful if the file being attached is not always static but rather conditional based on certain criteria on the Purchase Order.<br>In this example we will set it to just one file which is our Supplier Terms file so each PO is sent along with our Supplier Terms.&nbsp; (Remember the file will be attached using the format that it is stored in the File Cabinet so if you have a Word Doc stored in the File Cabinet a Word Doc will be attached to the email.)</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-15.png" alt="" style="width:628.28px !important;height:312px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">You can also choose to include a copy of the transaction as an attachment as well.&nbsp; The options are:</span></p><ul><li style="text-align:left;"><span style="color:inherit;">Inline Above - This means a copy of the Purchase Order will be generated using the Advanced PDF Template set on the Transaction Form but it will be displayed within the body of the email ABOVE the written text you defined in the Body parameter.</span></li><li style="text-align:left;">Inline Below - This means a copy of the Purchase Order will be generated using the Advanced PDF Template set on the Transaction Form but it will be displayed within the body of the email BELOW the written text you defined in the Body parameter.</li><li style="text-align:left;">Default - The system will evaluate the Default Email Preferences of the Entity assigned to this transaction and use that preference to determine what type of document should be attached to the email.</li><li style="text-align:left;">PDF - The Purchase Order will be attached as a PDF file to the email</li><li style="text-align:left;">HTML - The Purchase Order will be attached as an HTML file to the email</li></ul><div style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-16.png" alt="" style="width:577.4px !important;height:277px !important;max-width:100% !important;"></span><br></div><div style="text-align:left;"><span style="color:inherit;">Save this action and it will be used next time the workflow is </span>initiated<span style="color:inherit;">.</span></div></div>
</div><div data-element-id="elm_yWUHMbgO9U4LgHwu8dSzFg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_yWUHMbgO9U4LgHwu8dSzFg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Scheduled Workflow</h2></div>
<div data-element-id="elm_SGgKA2bNcfmkaQvK5t751g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_SGgKA2bNcfmkaQvK5t751g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>You can also use a Scheduled Workflow to send an email based on a specific schedule.&nbsp; In this example we will use a Scheduled Workflow to send out Shipping Notifications to our customers at the end of the shipping day.</p><p>To do this first create a Saved Search that will be used as the criteria of our workflow.&nbsp; In this case we are looking for Item Fulfillments in Shipped Status where the date is TODAY.</p><p><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-17.png" alt="" style="width:1034.72px !important;height:527px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">Now in the configuration of our workflow you can set the Saved Search as the criteria and set a schedule of Daily.&nbsp; Now everyday at 4pm the system will run the Saved Search above and if any records meet the criteria of that Saved Search it will trigger the actions within the workflow.</span></p><p style="text-align:center;"><img src="/Wed%20Jul%2012%202023-18.png" alt="" style="color:inherit;width:529.64px !important;height:401px !important;max-width:100% !important;"><br></p><p style="text-align:left;">In the Send Email action we will use the Trigger of &quot;Entry&quot; because this is a Scheduled Workflow and the After Record Submit trigger is not valid for Scheduled Workflows.&nbsp; So we want to trigger the email as soon as the record enters the first state of the workflow.&nbsp; Also we are leaving the condition blank because the Saved Search that is initiating the entire workflow already has the condition that we need.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-19.png" alt="" style="width:1004.83px !important;height:293px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;">Now update the Sender, Receipient, Subject and Body of the Email to contain the proper information for your customers to receive a shipment notification.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Jul%2013%202023.png" alt="" style="width:1048.9px !important;height:496px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">We will also include the transaction as a PDF (which in this case will be a packing slip since this is running on the Item Fulfillment transaction).</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Thu%20Jul%2013%202023-1.png" alt="" style="width:1033.4px !important;height:282px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now our Shipment Notifications are easily sent to our customers at the end of everyday.</span></p></div>
</div><div data-element-id="elm_m84aJRwKbM64gbKPzp_P2A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_m84aJRwKbM64gbKPzp_P2A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As you can see this Send Email action is much more powerful and versatile than the email functionality built into Saved Searches and can provide a TON of communication to both your internal users AND your external Customers and Vendors.&nbsp; One major gap in this action is the ability to choose different PDF templates when generating the attachment for this email.&nbsp; Unfortunately, NetSuite only allows you to use the PDF template attached to the transaction form set on the record.&nbsp; This can cause some headaches in that you either need to be constantly changing the Custom Form field on transactions to meet certain use cases, or struggle with a seriously customized PDF template to cover all use cases.</p><p>At MGBC we've created an easier way to manage this requirement.&nbsp; We have created a custom workflow action the generates a PDF document of the current record using ANY PDF template that you have defined.&nbsp; Then once you have generated that PDF document and stored it in a custom Document Type field on your record you can use it in the Attachment parameters in your Send email action.&nbsp; This way you can create and store PDF files of your transaction in ANY PDF template with completely customized criteria, then send them to your Customers and Vendors using the native Send Email action as described above.</p><p>Checkout our custom <a href="https://www.mgbc-store.com/products/470943/3628259000002015214" title="Create and Attach PDF " target="_blank" rel="">Create and Attach PDF </a>workflow action today.&nbsp; OR email us at info@mgbcpro.com to learn more.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 12 Jul 2023 23:09:27 -0600</pubDate></item><item><title><![CDATA[Set Field Display Type, Label and Mandatory Actions]]></title><link>https://www.mavencloud.tech/blogs/post/set-field-display-type-label-and-mandatory-actions</link><description><![CDATA[As the next installment in our Workflows for Beginners series we will tackle 3 similar functions that help guide the user throughout the data entry process by updating how fields are displayed and labeled.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_SGbKC15gT8qYBw0YUTD4ig" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_yMeKpdoRSlShUwTKxxt-IQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_MOOG8CUjQSSTpG98P3jA_A" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_CWs1rub-Q9mZPZdnC7w4cA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_CWs1rub-Q9mZPZdnC7w4cA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">While interacting with records and transactions in NetSuite it is extremely helpful to users to have data validated and explanations for when data entered may be incorrect.&nbsp; Also simplifying the form to make data entry quicker and easier.&nbsp; We discussed the use of pop-ups in our blog post on the <a href="https://www.mgbcpro.com/blogs/post/confirm-show-message-or-return-user-error" title="Confirm, Show Message and Return User Error actions" target="_blank" rel="">Confirm, Show Message and Return User Error actions</a>, but now we will cover 3 actions that allow you to manipulate individual fields on the record.</p><p style="text-align:left;">The Set Field Display Type, Set Field Display Label and Set Field Mandatory Actions all allow you to control what the user sees and/or what the user is required to input right from your workflow.&nbsp; You can easily guide the user through each record form by showing fields, hiding fields, updating the field labels (names) and even changing what is mandatory or not.</p></div>
</div><div data-element-id="elm_x64-I6J5KU4CIrao0bi6GA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_x64-I6J5KU4CIrao0bi6GA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One of the nice things about these actions is that they are able to be executed from almost any client trigger and even a few server triggers.&nbsp; Below is a list of triggers and how they interact with the record being affected by the workflow.&nbsp; If you would like more information about how triggers work while working with records in NetSuite read our blog post on <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="Workflow Triggers, Contexts and Event Types" target="_blank" rel="">Workflow Triggers, Contexts and Event Types</a>.</p></div>
</div><div data-element-id="elm_rsBhxaYuu3v9EFxJrxdElw" data-element-type="table" class="zpelement zpelem-table "><style type="text/css"> [data-element-id="elm_rsBhxaYuu3v9EFxJrxdElw"].zpelem-table{ border-radius:1px; } [data-element-id="elm_rsBhxaYuu3v9EFxJrxdElw"] .zptable{ width:100% !important; } </style><div class="zptable zptable-align-left zptable-header- zptable-header-none zptable-cell-outline-on zptable-outline-on zptable-style- " data-width="100" data-editor="true"><table style="width:100%;"><tbody><tr><td style="text-align:center;width:51%;">Trigger  (TRIGGER TYPE)</td><td style="text-align:center;width:50%;"> Description</td></tr><tr><td style="width:51%;"> On Entry (SERVER)</td><td style="width:50%;">When the record enters the specific State the action is placed within, it will be triggered as long as the condition is met.</td></tr><tr><td style="width:51%;"> Before Record Load (SERVER)</td><td style="width:50%;">As the record is being loaded from the database the action is triggered as long as the condition is met.&nbsp; The action affects the record BEFORE the user is able to interact with or make any changes to the record.&nbsp; The condition of the action can only use data that has already been saved to the database</td></tr><tr><td style="width:51%;"> Before User Edit (CLIENT)</td><td style="width:50%;">The record is fully loaded and is displayed in Edit mode to the user.&nbsp; However, before any fields can be updated or changed the action is triggered as long as the condition is met.</td></tr><tr><td style="width:51%;"> Before Field Edit (CLIENT)</td><td style="width:50%;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change field values, however, before the user &quot;leaves&quot; or &quot;gets out of&quot; the triggering field the action is triggered.&nbsp; So data is allowed to be entered or changed within the field, but the user cannot save or move to another field until the action is triggered (as long as the condition is met).&nbsp; This action requires you to set a &quot;triggering client field&quot; which denotes the field in which the user must manipulate to trigger the action.</td></tr><tr><td style="width:51%;"> After Field Edit (CLIENT)</td><td style="width:50%;"> The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change field values and &quot;move to&quot; other fields after changing the &quot;triggering client field&quot;.&nbsp; However, the action is triggered as soon as the user &quot;leaves&quot; the triggering client field and the action is performed as long as the condition is met.&nbsp; &nbsp;This action requires you to set a &quot;triggering client field&quot; which denotes the field in which the user must manipulate to trigger the action.</td></tr><tr><td style="width:51%;"> After Field Sourcing (CLIENT)</td><td style="width:50%;"> The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change field values and &quot;move to&quot; other fields.&nbsp; If any of the fields being changed are used to source the value of another field, you can trigger an action to be performed after that sourcing occurs, as long as the condition is met.&nbsp; This action requires you to set a &quot;triggering client field&quot; which would be the field you change that CAUSES the sourcing to occur, NOT the field that gets sourced with a value.</td></tr><tr><td style="width:51%;">Before User Submit (CLIENT)</td><td style="width:50%;"> The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to freely change or add field values and click the &quot;Save&quot; button.&nbsp; Upon clicking the &quot;Save&quot; button the action is triggered as long as the condition is met.&nbsp; The action is performed BEFORE any new data or updated data is saved to the database and BEFORE the record attempts to be saved, so stopping the Save function and allowing more changes to be made to the record if required.</td></tr><tr><td style="width:51%;">Before Record Submit (SERVER)</td><td style="width:50%;"> The record is fully loaded in the browser and is displayed in Edit mode.&nbsp; The user is allowed to freely change or add field values and click the &quot;Save&quot; button.&nbsp; Upon clicking the Save button the action is triggered as long as the condition is met.&nbsp; The action is triggered BEFORE new data or updated data is saved to the database, but AFTER the save function is initiated so no more changes can be made to the record at this time.</td></tr><tr><td style="width:51%;">After Record Submit (SERVER)</td><td style="width:50%;"> The record is updated and changed and the Save button is clicked.&nbsp; The record is fully saved to the database with the new data, then loaded again to trigger the action (if the condition is met).&nbsp; The action triggers and is performed then the record is saved to the database again with the new changes caused by the workflow action.</td></tr><tr><td style="width:51%;">On Exit (SERVER)</td><td style="width:50%;"> When a transition is added to a state the record will transition to another state when the condition of the transition is met.&nbsp; As the record Exits the first state the action will be triggered.</td></tr><tr><td style="width:51%;">Scheduled (SERVER)</td><td style="width:50%;" class="zp-selected-cell"> NetSuite has a scheduler that runs every 30 minutes checking for scheduled actions and transitions.&nbsp; If the condition of the action is met it will be triggered.&nbsp; If it is not met it will be ignored and checked again the next time the scheduler runs.</td></tr></tbody></table></div>
</div><div data-element-id="elm_R8IpVPAOs2XOyzWKuzIroQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_R8IpVPAOs2XOyzWKuzIroQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Now that we've gone through each trigger in detail we will go over which triggers are appliable to these three workflow actions<br>NOTE - These actions are not available for Scheduled triggers.</p></div>
</div><div data-element-id="elm_1OmJoZhud36CS8utzK8nDA" data-element-type="table" class="zpelement zpelem-table "><style type="text/css"> [data-element-id="elm_1OmJoZhud36CS8utzK8nDA"].zpelem-table{ border-radius:1px; } [data-element-id="elm_1OmJoZhud36CS8utzK8nDA"] .zptable{ width:100% !important; } </style><div class="zptable zptable-align-left zptable-header- zptable-header-none zptable-cell-outline-on zptable-outline-on zptable-style- " data-width="100" data-editor="true"><table style="width:100%;"><tbody><tr><td style="text-align:center;width:9.0909%;">Action </td><td style="text-align:center;width:9.0909%;">On Entry</td><td style="text-align:center;width:9.0909%;">Before Record Load</td><td style="text-align:center;width:9.0909%;">Before User Edit</td><td style="text-align:center;width:9.0909%;">Before Field Edit</td><td style="text-align:center;width:9.0909%;">After Field Edit</td><td style="text-align:center;width:9.0909%;">After Field Sourcing</td><td style="text-align:center;width:9.0909%;">Before User Submit</td><td style="text-align:center;width:9.0909%;">Before Record Submit</td><td style="text-align:center;width:9.0909%;">After Record Submit</td><td style="text-align:center;width:9.0909%;">On Exit</td></tr><tr><td style="text-align:center;width:9.0909%;"> Set Field Display Type</td><td style="text-align:center;width:9.0909%;"> X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td></tr><tr><td style="text-align:center;width:9.0909%;"> Set Field Display Label</td><td style="text-align:center;width:9.0909%;">X </td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td></tr><tr><td style="text-align:center;width:9.0909%;"> Set Field Mandatory</td><td style="text-align:center;width:9.0909%;">X </td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;">X</td><td style="text-align:center;width:9.0909%;" class="zp-selected-cell">X</td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td><td style="text-align:center;width:9.0909%;"> </td></tr></tbody></table></div>
</div><div data-element-id="elm_l0cBPa2od1blemamGn_z7Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_l0cBPa2od1blemamGn_z7Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Now let's discuss what each action actually does.</p><ul><li>Set Field Display Type - this will change the way the field is displayed to the user while interacting with the record.&nbsp; There are 4 options for this action:</li><ul><li>Normal - the field will be displayed normally in both View and Edit mode and there are no restrictions on Editing it</li><li>Disabled - the field will be displayed normally in View mode, but in Edit mode the field will be &quot;grayed&quot; out and will not be able to be edited.&nbsp; (NOTE - Disabled fields can still be updated by workflow actions)</li><li>Inline - the field will be display as Inline HTML text in both View and Edit mode.&nbsp; The user will not be able to edit or change the field value when the display type is Inline</li><li>Hidden - the field will be hidden from the user in both View and Edit mode.<br><br><br></li></ul><li>​Set Field Display Label - this will change the field name or label that is shown to the user in both View and Edit mode (depending on the trigger used).<br><br></li><li>Set Field Mandatory - the field will be mandatory and cannot be left empty.&nbsp; You can also toggle a field to be NOT mandatory as well.</li></ul></div>
</div><div data-element-id="elm_Zq7UTTttUcdRy7vCFvQPPg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Zq7UTTttUcdRy7vCFvQPPg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The parameters of these actions are all very similar and managed pretty much the same.&nbsp; The first step is to define the trigger to be used, or WHEN the action should be performed.&nbsp; Then define any specific contexts or events that should trigger this action.&nbsp; Lastly, define a condition that tells the workflow what criteria should be used to trigger the action.</p><p><br></p><p><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In this example we want to make the the Class field mandatory when the Department is set to &quot;200 Operations&quot;.&nbsp; In this case we will use the After Field Edit trigger with the correct condition.&nbsp; This way when someone edits the Department field the workflow will evaluate if the Department is &quot;200 Operations&quot; and if it is, trigger the action to make the Class field mandatory.<br>(Be sure to set the Triggering Client Field to Department as we want this action only to be triggered when someone updates the Department field)</span></p><p><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-3.png" alt=""></span></p><p><span style="color:inherit;">Next we need to define the parameters of the action.&nbsp; Here we will tell the workflow WHAT field needs to have the mandatory flag toggled and whether to turn ON the mandatory setting or turn OFF the mandatory setting.</span><br></p><p><span style="color:inherit;">(Leaving Mandatory checkbox unchecked will make the field NOT mandatory.&nbsp; Leaving the Mandatory checkbox checked will make the field mandatory.)</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-2.png" alt="" style="width:640px !important;height:194px !important;max-width:100% !important;"></span></p></div>
</div><div data-element-id="elm_QuPZ_Bs7grvbKSJ5G2emng" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_QuPZ_Bs7grvbKSJ5G2emng"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_0_dZEXUrigl2HnkaUde99w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0_dZEXUrigl2HnkaUde99w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">As an added bonus you can toggle between Sublist and Body fields within these actions to change the field Display Type, Label and Mandatory setting for fields within the Items sublist on transactions, just like you can affect body fields.&nbsp;&nbsp;</span><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-4.png" style="width:721.64px !important;height:171px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">With this setup we can make the Job (or Project) field on each line when the Department of &quot;200 Operations is selected</span></p></div>
</div><div data-element-id="elm_usPuJV6SGNT2B1Ias1hv0Q" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_usPuJV6SGNT2B1Ias1hv0Q"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_5pzCqAVj4SRD1TD-NHhktg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_5pzCqAVj4SRD1TD-NHhktg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The Set Field Display Type has a few different parameters (described above) but functions similarly to the Set Field Mandatory Action.&nbsp; Using the same After Field Edit trigger and Triggering Client Field of Department, but changing the condition to Department is NOT &quot;200 Operations&quot;, the Class field will now be Hidden when the Department is changed and does not equal &quot;200 Operations&quot;</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-5.png" alt="" style="width:691.92px !important;height:170px !important;max-width:100% !important;"></span><br></p></div>
</div><div data-element-id="elm_EAoTiouH_gZcd3FO5oGeLA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EAoTiouH_gZcd3FO5oGeLA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Lastly, we will change the Display Label of the Class field to &quot;Financial Segment&quot; when the Department is set to &quot;900 Finance&quot;.&nbsp; This way when someone selects the Finance department on a Transaction the Class field will be displayed as &quot;Financial Segment&quot; for more clarity to the financial user, but without having to add new custom fields to the record.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Jul%2012%202023-6.png" alt="" style="width:660.36px !important;height:124px !important;max-width:100% !important;"></span><br></p></div>
</div><div data-element-id="elm_eme4iYhQv8NX_YL17s6Dwg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_eme4iYhQv8NX_YL17s6Dwg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>All these actions may seem small or &quot;ticky-tacky&quot; improvements to your system, but they can make a BIG difference when it comes to data consistency and accuracy.&nbsp; Ensuring that users are always entering the correct information into the correct fields and NOT missing anything when required is a huge benefit to your NetSuite eco-system.&nbsp; As the saying goes, &quot;Garbage in, garbage out.&quot;&nbsp; This will stop the garbage from even entering you system to keep it clean and maintained on an ongoing basis.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 21 Jun 2023 21:48:00 -0600</pubDate></item></channel></rss>