<?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/workflow-beginners-series/feed" rel="self" type="application/rss+xml"/><title>MavenCloud - Blog , Workflow Beginners Series</title><description>MavenCloud - Blog , Workflow Beginners Series</description><link>https://www.mavencloud.tech/blogs/workflow-beginners-series</link><lastBuildDate>Fri, 23 Jan 2026 01:37:12 -0800</lastBuildDate><generator>http://zoho.com/sites/</generator><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[Go to Record Action]]></title><link>https://www.mavencloud.tech/blogs/post/go-to-record-action</link><description><![CDATA[As we continue through our Workflows for Beginners series, we will now take a look at the Go to Record action.&nbsp; This action is quite versatile an ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_oHxTCcM9RQytvDNgfHEq9w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_2xFz4e8GTYyJuYJtSm9DgQ" 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_112PzPWDTSyH61UxOrqHjA" 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__ZBlEmmCQbSJiex-Iozp0w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm__ZBlEmmCQbSJiex-Iozp0w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">As we continue through our Workflows for Beginners series, we will now take a look at the Go to Record action.&nbsp; This action is quite versatile and also VERY powerful, when it comes to directing users through a process.&nbsp; This action is one of the first that can help create or manage other records (besides the base record defined in your workflow configuration).&nbsp; There are limitations here, but overall this can be extremely helpful and provide a more advanced experience for users.</p></div>
</div><div data-element-id="elm_QntjqOaWxHNUFM-B4yt50Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_QntjqOaWxHNUFM-B4yt50Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The Go to Record action essentially redirects a user to a new (or existing) record to continue their process or entry of data.&nbsp; This can be used to create a new instance of a record type and then &quot;join&quot; it to your current record, OR simply to navigate to an already joined record.&nbsp; For example, when entering an Estimate you select the Customer, this creates a &quot;join&quot; between the Customer and Transaction records as you are associating the Customer with that Estimate.&nbsp; Now you can use this &quot;join&quot; to redirect the user to the Customer record from your Estimate either automatically or by the click of a button depending on your use case.</p></div>
</div><div data-element-id="elm_ioCAg83ZJ0LdaBrU_MVyig" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ioCAg83ZJ0LdaBrU_MVyig"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The Go to Record action is limited to only 3 triggers;&nbsp;</p><ul><li>After Record Submit</li><li>Entry</li><li>Exit.&nbsp;&nbsp;</li></ul><p>This is because using another trigger with this action could result in loss of data.&nbsp; For example if you were to redirect to a new record Before Submit, then the data you entered on the current record would NOT be saved and therefore would be lost.&nbsp; In this regard, using After Submit circumvents this problem as the current record is fully submitted (or saved) to the database, then the user is redirected to the new record.&nbsp; Entry or Exit triggers mimic the functionality of Before Load or After Submit (depending on the context) and therefore are also safe to use.</p></div>
</div><div data-element-id="elm_GF1EYOz2vQVgu98SXXJvKA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_GF1EYOz2vQVgu98SXXJvKA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>For this example, we will use the very popular use case of entering a rejection reason within an approval workflow.&nbsp; It is a very common ask among NetSuite Admins and Developers to capture reasons when users are approving or rejecting transactions, however, there is not a lot of great solutions to this problem.&nbsp; One of the most common solutions is to create a custom record that you would use to hold the response from the user and use the Go to Record action to redirect the user to this record within the workflow.</p></div>
</div><div data-element-id="elm_Fhq5dHPzJb5guj-GZn5rcg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_Fhq5dHPzJb5guj-GZn5rcg"] .zpimagetext-container figure img { width: 500px ; height: 319.44px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Fhq5dHPzJb5guj-GZn5rcg"] .zpimagetext-container figure img { width:500px ; height:319.44px ; } } @media (max-width: 767px) { [data-element-id="elm_Fhq5dHPzJb5guj-GZn5rcg"] .zpimagetext-container figure img { width:500px ; height:319.44px ; } } [data-element-id="elm_Fhq5dHPzJb5guj-GZn5rcg"].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/businessman-hand-holding-use-smartphone-with-new-email-alert-sign-icon-pop-up-to-send-or-read.jpg" width="500" height="319.44" 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);">As an alternative to the solution provided in this article, we have developed a versatile and powerful custom action that gives you as a NetSuite Admin the ability to capture responses from your users in the form of pop-up messaging.&nbsp; Our &quot;Pop-up with User Input&quot; action is able to be deployed in any workflow and upon any record type and produces a pop up window (in real-time) to the user requesting and input.&nbsp; Then records what they type into a field of your choice on the current record so their responses can be saved and recalled later when viewing the record of in saved searches and reports.&nbsp; This custom action can be deployed and setup within minutes so you can start using this amazing feature right away.&nbsp; Click <a href="https://www.mgbc-store.com/products/474707/3628259000002015003" title="here" target="_blank" rel="">here</a> to learn more information about this simple and incredibly useful tool, and take your workflows to the next level.</span></p></div>
</div></div><div data-element-id="elm_1sdKJVjGez4AuCyXG-D1_Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_1sdKJVjGez4AuCyXG-D1_Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>First we can start by creating a custom record called &quot;Rejection Reason&quot;.&nbsp; On it we will put a Long Text field for &quot;Response&quot; and also a List/Record field for &quot;Reason Code&quot;.&nbsp; Furthermore, we have a field to join this custom record to the Transaction it relates to so we can see the two linked together for future reference.&nbsp; Remember since this is a custom record you can add as many fields and features as you want to collect the necessary information needed for your business.</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-3.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p>The next step is to add this functionality into your existing approval workflow.&nbsp; (Or if you need help building an approval workflow you can start with our blog on &quot;<a href="https://www.mgbcpro.com/blogs/post/build_your_first_workflow" title="Building your First Workflow" target="_blank" rel="">Building your First Workflow</a>&quot;.)&nbsp; In this example we will open up our Rejected state where we have set the Approval Status to &quot;Rejected&quot; and Locked the record so no one can change it anymore now that it is rejected.</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-1.png" alt="" style="width:1060.5601px !important;height:450px !important;max-width:100% !important;"></span><br></p><p><br></p><p>Then lets add the Go to Record action here so the Approval Status is changed automatically, but the user is redirected to our new custom record.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-2.png" alt="" style="width:459px !important;height:229px !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;">As mentioned before you can only use this action with a few triggers, but since the user is clicking a button which is transitioning them to the Rejected state we will use the Entry trigger.&nbsp; This way when they click the button it will enter the new state and send them to the Rejection Reason record, however, it will NOT happen every time someone views the record, because it only triggers when it first enters the state. (Which is right after the button click.)</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-4.png" alt="" style="width:1057.55px !important;height:425px !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;">In the parameters of the action we will select our Record type.&nbsp; This is the Rejection Reason record we created in the first step.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-5.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;">Now because we want the user to create a NEW instance of this Rejection reason we will mark the Open in Edit Mode box.&nbsp; This will load a brand new instance of the Rejection reason record and it will already be in Edit mode to save the user from having to click edit.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-6.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;">**As a side note here, if you want the user to be directed to an already existing record (like we mentioned in the very beginning of directing a user to the Customer record joined to an Estimate) then you would use the Record ID parameters to do so.&nbsp; To redirect the user to the Customer from an Estimate you would choose Customer as your record type, then Entity in the field.&nbsp; So the workflow would use the Entity field on the Estimate to know what record the user should be redirected to.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-7.png" alt="" style="width:1062.46px !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;">However, since we do not want to go to an existing record, but instead create a NEW record we will leave the Record Type as &quot;Rejection Reason&quot; and the Open in Edit Mode = T.&nbsp;&nbsp;<br>Lastly, using the Field sublist we can pre-define values on the new record being created.&nbsp; For example, if you would like to provide a default value in the Response field on your Rejection Reason record, then you select Response in the Field sublist and then provide a value using either a field on the current record, a formula or a static value</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-8.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;">In this case we want to make sure the Rejection Reason record is associated with the current transaction we are rejecting so we will set the Related Record field to be &quot;Current Record&quot;</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-9.png" alt=""></span><br></p><p style="text-align:left;">Now the Rejection Reason record the user creates will be automatically associated with the Transaction they were viewing when clicking &quot;Reject&quot;.&nbsp; Also note that the Response and Reason Code fields are mandatory so the user cannot navigate away from this Rejection Reason without providing a value.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-10.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;">Also once the response is saved you can see it attached to the Transaction under the subtab you selected with configuring your custom record.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-11.png" alt=""></span><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_ohYJv5FwIgbze3yKSCSqtw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ohYJv5FwIgbze3yKSCSqtw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>You can also pair this with a workflow you've created on the Rejection Reason record with another Go to Record action so the user is redirected back to the Transaction using an After Record Submit trigger.&nbsp; This way after their response is recorded they are sent back to the original transaction they were working on.&nbsp; Here is the setup for that workflow action.</p><p><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-13.png" alt="" style="width:1059.92px !important;height:421px !important;max-width:100% !important;"></span></p><p><span style="color:inherit;"><img src="/Fri%20Sep%2008%202023-12.png" alt=""></span></p></div>
</div><div data-element-id="elm_HWTwsd2rnEKqsoDXVE1OiA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HWTwsd2rnEKqsoDXVE1OiA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>While you can see that this solution is not ideal as there are a few potential places for the user to circumvent the process by closing a window too soon or a timeout from NetSuite.&nbsp; Also, the user experience is a little clunky while still maintaining the overall objective.&nbsp; But most of the time this solution is widely accepted and does provide a great example of how to capture responses in NetSuite without having to write any scripting.&nbsp; As mentioned above our simple utility for capturing user input can be easily deployed to your account and used within any workflow or any record.&nbsp; Check out this quick video on our <a href="https://youtu.be/wtf6qdu5Cjs?si=ij8Xcb-4NmpqaOXn" title="Pop-up with User Input " target="_blank" rel="nofollow noreferrer noopener">Pop-up with User Input </a>action.</p><p>If you would like more tips and tricks on how to optimize your NetSuite environment with workflows, automation and customizations then follow our blog or check back often.&nbsp; We are also available to help design, implement and/or troubleshoot any customization at any level.&nbsp; Just <a href="mailto:info@mgbcpro.com" title="reach out" rel="nofollow noreferrer noopener">reach out</a> to us with questions and insights on how we can help your business grow!</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 08 Sep 2023 11:36:20 -0600</pubDate></item><item><title><![CDATA[Set Field Value Action - Part 3]]></title><link>https://www.mavencloud.tech/blogs/post/Set-Field-Value-Action-Part-3</link><description><![CDATA[Read through part 3 on the Set Field Value Action from our Workflow's for Beginners Series.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_qPPD1muzSha4MSvX_9Ywrg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_oIBeXSmoTPm_Y4O8qVyCSA" 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_aMvoVUHKTw6sxhigP_ofsw" 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_MjUdglgmR52TCCZvY-Iv1w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_MjUdglgmR52TCCZvY-Iv1w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">So far we've discussed the Set Field Value Action in great detail as this is probably the most commonly used action in SuiteFlow.&nbsp; It is possibly the easiest action to understand and configure, while simultaneously being the most applicable when it comes to business use cases.&nbsp; Our last two articles on the Set Field Value Action covered both the <a href="https://www.mgbcpro.com/blogs/post/Set-Field-Value-Action" title="general configuration and usage" target="_blank" rel="">general configuration and usage</a> of the action as well as it's application within <a href="https://www.mgbcpro.com/blogs/post/set-field-value-action-part-2" title="sublist fields" target="_blank" rel="">sublist fields</a> on transaction records.&nbsp; This article will extend our discussion on sublist fields by combining it with the use of Client Triggers.</p><p style="text-align:left;">For those that don't know, Client Triggers are actions triggered because of things the user is doing to the record while it is in &quot;edit&quot; mode.&nbsp; If you would like to learn more about workflow Triggers, Event Types and Contexts read through our <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="blog post" target="_blank" rel="">blog post</a> dedicated to this subject.</p></div>
</div><div data-element-id="elm_bXB4P4TrXaLlYgVkR8YFfA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_bXB4P4TrXaLlYgVkR8YFfA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>For a quick review on Client Triggers they are the following:</p><ul><li>Before User Edit</li><li>Before Field Edit</li><li>After Field Edit</li><li>After Field Sourcing</li><li>Before User Submit</li></ul><div>All of these triggers occur AFTER the record is loaded from the database and WHILE the user is interacting with fields on the record.&nbsp; They also occur BEFORE the record is saved to the database with any new data that has been entered.&nbsp; Different actions taken by the user can trigger different actions within the workflow depending on the trigger used and condition of the action.</div></div>
</div><div data-element-id="elm_BmYxr1zHANIUmxnzZWxZvQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_BmYxr1zHANIUmxnzZWxZvQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As stated before, the ability to be able to manipulate sublist fields within the Items sublist on transactions was a HUGE leap forward for workflows and their application within your NetSuite environment.&nbsp; This also opened up a whole world of possibilities for Administrators and Functional Consultants working with NetSuite as before they needed to depend on development resources to do anything more than just header level fields.&nbsp; One of the little know features of the Set Field Value action is that Client Triggers can help to manipulate sublist fields while the user is entering lines into the Items sublist.</p><p>One great example of this is if you have minimum order quantity for an item that needs to be regarded when ordering items.&nbsp; With a workflow we can set the quantity of a line on a purchase order based on a custom field from the Item Record, to make sure our purchasing team is maintaining our vendor relationships properly.</p></div>
</div><div data-element-id="elm_G0psx5h8Uz_h9egbQgEL3g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_G0psx5h8Uz_h9egbQgEL3g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>First let's start by adding a custom field to our Item Record called Item MOQ that we will use to capture the minimum quantity to be ordered.</p><p><span style="color:inherit;"><img src="/Sun%20Aug%2013%202023-7.png" alt="" style="width:1055.2px !important;height:357px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><br></p><p style="text-align:left;">Now create a workflow on the Purchase Order record. In the first state of your workflow add a Set Field Value Action.</p><p style="text-align:center;"><img src="/Sun%20Aug%2013%202023-2.png" alt="" style="color:inherit;width:428.75px !important;height:132px !important;max-width:100% !important;"></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now set the Trigger to any After Field Edit as we want to update the Quantity field after a user sets the Item field.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2013%202023-8.png" alt="" style="width:1062.29px !important;height:414px !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 here's where the trick is.&nbsp; Most people miss this little step in Workflow setups, but under the Triggering Client Fields you can select either a Body or a Sublist field as the trigger.&nbsp; That means when the field selected is Edited it will trigger the action to execute as long as the Condition is met.&nbsp; Without this Trigger Client Field set the workflow does not know which field to &quot;watch&quot; to know when to fire the action.&nbsp; In our example, we will choose the Item (Line) field because we want the Quantity on the line item to be updated after the Item is selected.<br>NOTE - When you change the Triggering Client Fields to Sublist you must select which sublist and this will reset your conditions.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2013%202023-9.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Now that we have our general configuration complete, let's setup our parameters.&nbsp; First select the Quantity (Line) field which is going to be the field we want set by our workflow.&nbsp; Then using the Item (Line) Join we can get our new Item MOQ from the Item Record.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2013%202023-10.png" alt="" style="width:1057.15px !important;height:412px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Now we can save our workflow and test out the functionality.&nbsp; Remember to turn on workflow logging for your testing period to review any errors or skipped actions for troubleshooting.&nbsp; If you have any questions about workflow logging, learn how to properly manage workflow instance and history logs in our <a href="https://www.mgbcpro.com/blogs/post/workflow-instance-history-and-logging" title="blog post" target="_blank" rel="">blog post</a>.&nbsp; We can see that when entering a purchase order for our item the quantity field is updated to match the MOQ when the new item is selected on the line.&nbsp; However, for other items the quantity is NOT changed.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Aug%2013%202023-14.png" alt="" style="width:724.2px !important;height:273px !important;max-width:100% !important;"></span></p></div>
</div><div data-element-id="elm_FcxQd7msX_5APt4xAX69yQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FcxQd7msX_5APt4xAX69yQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>If you have any questions about workflows or need help implementing these features in your NetSuite environment please <a href="mailto:info@mgbcpro.com" title="reach out" rel="">reach out</a> and we would be happy to help you through any obstacle or provide advice on how workflows can transform your business.</p></div>
</div><div data-element-id="elm_z0Gb8knHPDrRvW6-ykGMnA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_z0Gb8knHPDrRvW6-ykGMnA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 13 Aug 2023 19:32:15 -0600</pubDate></item><item><title><![CDATA[Set Field Value Action - Part 2]]></title><link>https://www.mavencloud.tech/blogs/post/set-field-value-action-part-2</link><description><![CDATA[Part 2 of our deep dive into the Set Field Value Action is specifically on the sublist action group that has the Set Field Value Action as part of it's functionality]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_XIhl0cjWS4yu7mOEfXrs9Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_I89sougjSGasq6-TFcIjsg" 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_l-7t0HPKRGKnmEdRXL9v1w" 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_l-7t0HPKRGKnmEdRXL9v1w"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_KrxclRXZSEq4saZAOZkUdw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_KrxclRXZSEq4saZAOZkUdw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true">Sublist Action Group</h2></div>
<div data-element-id="elm_6KoSsfOoQleJyBJ-wnbUxA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6KoSsfOoQleJyBJ-wnbUxA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">The sublist action group was a awesome enhancement to SuiteFlow as it opened up the world of sublist fields to workflows.&nbsp; With a sublist action group you can now perform actions on fields within the sublist of a transaction.&nbsp; Right now the sublist action group has some pretty heavy limitations, however, the few actions it does support are a huge leap forward for workflow functionality.&nbsp; Currently, the sublist action group can only be created for the &quot;items&quot; sublist.&nbsp; So if a transaction does not include an &quot;items&quot; sublist a sublist action group cannot be used.&nbsp; The most common transactions in this category are:</p><ul><li style="text-align:left;">Estimate</li><li style="text-align:left;">Sales Order</li><li style="text-align:left;">Item Fulfillment</li><li style="text-align:left;">Invoice</li><li style="text-align:left;">Return Authorization</li><li style="text-align:left;">Purchase Order</li><li style="text-align:left;">Item Receipt</li><li style="text-align:left;">Vendor Bill</li></ul><div style="text-align:left;">The next limitation with sublist action groups is that they only support 4 actions currently:</div><div style="text-align:left;"><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>The most commonly used action here is the Set Field Value action.&nbsp; To begin first we need to add a Sublist Action Group to our workflow.&nbsp; This is very similar to a regular Workflow Action Group but instead of just grouping actions with common conditions together for easier maintenance, this sublist action group performs actions on the Items sublist according to the conditions and trigger defined.&nbsp; I sublist action group will only be initiated when the condition of the group is met and the trigger is activated.&nbsp; If you have no condition then the sublist action group will be initiated everytime.&nbsp; Furthermore, every line within the Items sublist will be considered for any actions within the sublist action group however, each action can have it's own condition so they may only execute on certain lines.&nbsp; Also a sublist action group can only have 1 trigger so all actions within the group will fire on the same trigger.&nbsp; If you need different actions to be executed on different triggers then you would need to make multiple sublist action groups to accomplish this.</div><div>To add a sublist action group click on the New Sublist Group button<img src="/Sun%20Aug%2006%202023-2.png" alt="" style="color:inherit;"><span style="color:inherit;">Then define the trigger, context, event types and condition for this group.&nbsp; Remember, the sublist group will only be activated if the trigger, context, event types and conditions are all met.&nbsp; Then once met all actions in the sublist group will be considered based on each individual line and each actions individual condition(s)</span></div><div><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-3.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">Also remember to define what sublist to perform actions on in the parameters section.</span></div><div style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-4.png" alt="" style="width:616.26px !important;height:155px !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;">Once you save your sublist action group we can begin to add actions to it.&nbsp; Open the sublist action group then click New Action</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-5.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;">Select Set Field Value from the list</span></div><div style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-6.png" alt="" style="width:544.94px !important;height:143px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">In our example today we will set the department field on purchase order lines to &quot;Operations&quot; if the line item contains a Freight item.&nbsp; This way when the vendor bill is entered the proper coding is already setup for Freight charges and the A/P team does not have to remember to do it.</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-7.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;">Now any line set to the &quot;Freight Charges&quot; item will get the correct department and any line NOT set to that item will be skipped in the workflow so the user can set the correct department as necessary.</span></div></div></div>
</div><div data-element-id="elm_C3o-QeNlYI0-Ovpxp6A1dA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_C3o-QeNlYI0-Ovpxp6A1dA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>There is much more you can do with sublist action groups, but you can see that just setting field values dynamically within the items sublist can be VERY helpful to maintaining accurate data and cut down on the time spent entering data into forms.&nbsp; &nbsp;Remember that when using sublist action groups all actions within the group are constrained by the configuration of the overall group so whatever trigger and even type you set on the overall group, be sure that it is applicable to all actions, or you will need to setup another action group for a different trigger.</p><p>If you would like to learn more about workflows, or how NetSuite in general can support your business feel free to reach out anytime.&nbsp; We can support any customization, implementation or training for your environment.</p></div>
</div><div data-element-id="elm_wOfywj87QsSDamNR5QOaPw" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md " href="javascript:;" target="_blank"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 06 Aug 2023 18:02:50 -0600</pubDate></item><item><title><![CDATA[Set Field Value Action]]></title><link>https://www.mavencloud.tech/blogs/post/Set-Field-Value-Action</link><description><![CDATA[Take a deep dive into the most used action in workflows]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_GhYjOdMLQhS7t8QNUZhj6A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_5EwoXQdqQcC0mXRoZSahvQ" 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_-57JiRJFT--HRdUzid0-cg" 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__bmlmnPjT-6ci19hrrvppA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm__bmlmnPjT-6ci19hrrvppA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Anyone who has built, managed or updated a workflow in NetSuite has most likely used the Set Field Value action.&nbsp; In fact, the Set Field Value action is hands-down the most used workflow action throughout workflows.&nbsp; Most likely, this is because the use cases and business scenarios for the Set Field Value action are easier to envision and deploy.&nbsp; Furthermore, it is probably due to the widely applicable utility of being able to set field values based on almost any criteria or condition you can think of AND also sourcing the value that gets set from other fields or records within the system or even have it calculated from a formula.&nbsp; The possibilities are endless when it comes to the ways you can leverage this action to help your team quickly and easily create and update records, while simultaneously maintaining data integrity and consistency throughout the system.</p></div>
</div><div data-element-id="elm_VRo3M6eskMMJ9rkaMk_-Tg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VRo3M6eskMMJ9rkaMk_-Tg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One of the key elements to remember about the Set Field Value action is the trigger that you use to perform the action.&nbsp; It is widely versatile and supports every trigger available to workflows.&nbsp; Use the table below to understand how each trigger effects the functionality of this action and how you can leverage different triggers to perform the action in the way that you want.</p></div>
</div><div data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg" data-element-type="table" class="zpelement zpelem-table "><style type="text/css"> [data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg"].zpelem-table{ border-radius:1px; } [data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg"] .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="text-align:center;width:100%;"><tbody><tr><td style="width:50%;">Trigger (TRIGGER TYPE) </td><td style="width:50%;">Description</td></tr><tr><td style="text-align:left;width:50%;"> Entry (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">When the record enters the specific State the action is placed within, it will be triggered as long as the condition is met.</span> &nbsp; The field value will be set based on the parameters one time, but not again as it only happens when the record enters the state and not again after.</td></tr><tr><td style="text-align:left;width:50%;"> Before Record Load (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">As the record is being loaded from the database the action is triggered as long as the condition is met.&nbsp; The field value is set 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</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before User Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 and the field value is set as long as the condition is met.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before Field Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change a fields value, 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 set field value action.</span> </td></tr><tr><td style="text-align:left;width:50%;"> After Field Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 field value is set 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.</span> </td></tr><tr><td style="text-align:left;width:50%;"> After Field Sourcing (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 the set field value 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.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before User Submit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 set field value is performed BEFORE any new data or updated data is saved to the database and BEFORE the record attempts to be saved,</span></td></tr><tr><td style="text-align:left;width:50%;"> Before Record Submit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 set field value 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.</span> </td></tr><tr><td style="text-align:left;width:50%;">After Record Submit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;"> 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 set field value action (if the condition is met).&nbsp; The field value is set and then the record is saved to the database again with the new changes caused by the workflow action.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Exit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">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 set field value action will be triggered.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Scheduled (SERVER)</td><td style="text-align:left;width:50%;" class="zp-selected-cell"><span style="color:inherit;">NetSuite has a scheduler that runs every 30 minutes checking for scheduled actions and transitions.&nbsp; If the condition of the action is met the field value will be set according to the parameters of the action.&nbsp; If it is not met it will be ignored and checked again the next time the scheduler runs.</span> </td></tr></tbody></table></div>
</div><div data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width: 200px ; height: 133.33px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } @media (max-width: 767px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"].zpelem-imagetext{ background-color:#34495E; background-image:unset; 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-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/world-wide-web-7109276_960_720.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:rgba(255, 255, 255, 0.99);">As you will see below the set field value action can be used to set the value of the field you choose by either providing a &quot;static&quot; value, getting the value from another field on the current record, getting the value from another field on a joined record OR using a formula to provide the field value.&nbsp; You can also use a saved search to &quot;calculate&quot; or source the value of this action by creating a non-stored, hidden field on the record that has it's value sourced from a saved search.&nbsp; I detail how exactly to setup this function in another blog post that you can read <a href="http://www.mgbcpro.com/blogs/post/dynamically-source-field-values-from-saved-search-results." title="here" target="_blank" rel="">here</a>.&nbsp; Make sure that you use the correct trigger with each of these options so effectively set the correct field value.</span></p></div>
</div></div><div data-element-id="elm_0CRSmP1daaUyKYOB6HSJ3w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0CRSmP1daaUyKYOB6HSJ3w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this example the requirement is that we have a custom field on the Customer record that stores the Class segment assigned to each Customer.&nbsp; Using a workflow we want to set the Class field on all Sales Orders created to match the Class from the Customer record.</p><p>To setup this action properly, start by adding the Set Field Value action into your workflow state.</p><p><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023.png" alt="" style="width:386.2px !important;height:133px !important;max-width:100% !important;"></span><br></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">Next choose the correct Trigger you would like to use for this action.&nbsp; In this example we will use the Before Record Submit.&nbsp; This is usually considered the lowest impact to overall system performance as it does not require additional loads of the record AND it fires quickly as the record is being saved.&nbsp; Also this way you know the field value will be set successfully each time as the user cannot disrupt any actions being triggered after they submit the record</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-3.png" alt=""></span></p></div>
</div><div data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width: 200px ; height: 175.62px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width:200px ; height:175.62px ; } } @media (max-width: 767px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width:200px ; height:175.62px ; } } [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"].zpelem-imagetext{ 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/warning-1646872_1280.png" width="200" height="175.62" 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(234, 119, 4);">One example of how a trigger can make a big difference on the data available to the set field value action is the document number or {tranid} of a transaction.&nbsp; If you have Auto-Numbering enabled for Sales Orders, the document number or {tranid} is not assigned to the record until it is saved to the database because the auto-numbering script does a lot of validations to ensure there is no duplicate numbering within the system.&nbsp; Because of this, you cannot use the document number field to set the value of another field UNLESS you use the After Record Submit trigger.&nbsp; If using Before Submit, the database does not &quot;know about&quot; the new document number yet.&nbsp; So you need to let it be saved to the database, load the record again and use the newly created document number to set the value of another field.&nbsp; This is exactly what the After Record Submit trigger does.</span></p></div>
</div></div><div data-element-id="elm_k4--IUruZdWxk2RGUXsldQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_k4--IUruZdWxk2RGUXsldQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Now we can choose the correct Event Type and Context to meet your business use case.&nbsp; You can read more about Event Types and Contexts in our <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="article" target="_blank" rel="">article</a> dedicated to this topic.&nbsp; Because we do not need the Class field set every time someone views or edits a Sales Order we can use the &quot;Create&quot; Event Type to limit the impact to system performance and only set the value when the record is first created</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-2.png" alt=""></span><br></p><p><br></p><p>We will also add a condition to this action so that it only fires if the Customer Class is NOT EMPTY.&nbsp; There is no reason to try and set a field value if the sourcing field also does not have a value.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-4.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Alternatively, if you are more comfortable with building saved searches you can use a saved search condition as the criteria for your action.&nbsp; This can be especially helpful if you have a very complex condition or multiple conditions that effect this action.&nbsp; Also you can use a summary search as the condition as well which can be even more powerful to summarize data about a record and use that criteria as the basis of your condition.&nbsp; Because the criteria here is very simple we will just stick to the regular condition builder.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-5.png" alt=""></span><span style="color:inherit;"><br></span></p><p><br></p><p>Next we will use the parameters section to pick the field we want to set the value of.&nbsp; Remember this is the field we want to change the value of NOT the field we are using as the source of the value we want.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-6.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Now we can use the rest of our parameter fields to make sure we set the correct value.&nbsp; We can leverage anyone of the vast array of options here.</span></p><ul><li><span style="color:inherit;">Static Value - set the field to the same value every time.&nbsp; There are different options for different field types (ie. checkbox, date, text, number, etc)</span></li><li><span style="color:inherit;">From Field - get the value from another field on the current record OR a joined record</span></li><li>Formula - use a formula to set the value.</li></ul><div>In this example we are going to get the value in the Customer Class field on the Customer Record assigned to this Sales Order and put that value in the Class field on the Sales Order</div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-7.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">As a side note a formula could accomplish the same thing, but isn't as stable as the native Record (JOIN FIELD) parameter</span></div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-8.png" alt=""></span><span style="color:inherit;"><br></span></div><div><div><span style="color:inherit;">Now the Class field will always be set to match the Customer Class on the Customer Record.&nbsp; It is worth it to note that this will again only happen when you first create the Sales Order and if someone goes back and edits the Class on the Sales Order later, then it will NOT be overwritten by the action in this workflow.&nbsp; However, you can use the <a href="https://www.mgbcpro.com/blogs/post/set-field-display-type-label-and-mandatory-actions" title="Set Field Display Type" target="_blank" rel="">Set Field Display Type</a> action to hide or disable the field so it cannot be changed after creation if that fits your use case.</span></div></div><div><span style="color:inherit;">Furthermore, if you would like to enhance the users experience you can use the After Field Edit trigger, so when the user selects the Customer on the Sales Order record it sets the Class field based on the Customer Class as the user is editing the record, however, would allow them to overwrite the sourced value with one that they set manually if you want.&nbsp; To do this use the After Field Edit trigger and select the Customer field in the Trigger Client Fields parameter.&nbsp; Then whenever the Customer field on the Sales Order is </span>Edited<span style="color:inherit;">&nbsp;the Class field will be updated accordingly.</span></div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-9.png" alt=""></span><span style="color:inherit;"><br></span></div></div>
</div><div data-element-id="elm_X49BJM4uAPBZrM4EvloteA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_X49BJM4uAPBZrM4EvloteA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As you can see just this one small action has MANY different configurations, use cases and options to help you maximize the way your team uses NetSuite.&nbsp; Fortunately, this post is 1 of 3 blog posts on the Set Field Value action.&nbsp; Because its use and setup is so expansive compared to other actions we are going to expand this into 3 Blog posts.&nbsp; Check our Part 2 on this <a href="http://www.mgbcpro.com/blogs/post/set-field-value-action-part-2" title="versatile" target="_blank" rel="">versatile</a> action that covers using the Set Field Value action in the Items sublist.</p></div>
</div><div data-element-id="elm_oFxjw0ZLb-nh1DcAuxnbZQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oFxjw0ZLb-nh1DcAuxnbZQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 01 Aug 2023 18:06:11 -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>