<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.mavencloud.tech/blogs/tag/howto/feed" rel="self" type="application/rss+xml"/><title>MavenCloud - Blog #howto</title><description>MavenCloud - Blog #howto</description><link>https://www.mavencloud.tech/blogs/tag/howto</link><lastBuildDate>Fri, 23 Jan 2026 00:20:10 -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 an RSS Feed]]></title><link>https://www.mavencloud.tech/blogs/post/Create-a-RSS-Feed</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/shot-of-corridor-in-working-data-center-full-of-rack-servers-and-supercomputers-with-pink.webp"/>NetSuite offers a huge toolkit of portlets on your dashboard that can provide meaningful metrics and deep insights into your business.&nbsp; Commonly, ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_ISpsESB_QdOagjxJ4G0GEQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_s6UIfZpqQuiwUKCemmRpGQ" 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_Dzt0xRF1S5y7lT8oF4j-ow" 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_BvFTuWdoS1aLdzA6YXk4mw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_BvFTuWdoS1aLdzA6YXk4mw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">NetSuite offers a huge toolkit of portlets on your dashboard that can provide meaningful metrics and deep insights into your business.&nbsp; Commonly, people use portlets like Lists, Saved Searches, Key Performance Indicators, KPI Scorecards and Report Snapshots to visualize their data and provide a customized workspace for themselves.&nbsp; These are all wonderful tools and we will dive deeper into each one as we work&nbsp; through building an amazing dashboard.&nbsp; In this article we will walk through the RSS Feed that is sparsely used portlet but can be incredible useful.</p></div>
</div><div data-element-id="elm_rAQEHa_M5XRUrfN61LMVAw" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_rAQEHa_M5XRUrfN61LMVAw"] .zpimagetext-container figure img { width: 500px ; height: 250.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_rAQEHa_M5XRUrfN61LMVAw"] .zpimagetext-container figure img { width:500px ; height:250.00px ; } } @media (max-width: 767px) { [data-element-id="elm_rAQEHa_M5XRUrfN61LMVAw"] .zpimagetext-container figure img { width:500px ; height:250.00px ; } } [data-element-id="elm_rAQEHa_M5XRUrfN61LMVAw"].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/g3c799f3dbcd2d2f97fc8b68c2f732f212b0a00bcef1fc3293bc76c272a71da3377a529b9905b9d3a92b1291a438ead86acb311827d1a2ae03572b1bc5d915cf4_1280.jpg" width="500" height="250.00" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><div><div><div><div><span style="font-size:12px;color:rgb(255, 255, 255);">An RSS feed - also know as &quot;Really Simple Syndication&quot; or “Rich Site Summary - is an online file that stores and automatically delivers any webpage's content and it's updates automatically.&nbsp; &nbsp;It allows you to syndicate your content so that people can subscribe to it and receive updates when you make changes — just like dynamic social feeds.&nbsp; The most common use of an RSS Feed is a website Blog, which can be embedded into another website and then is automatically updated as new blog posts are created.</span></div><div><span style="font-size:12px;color:rgb(255, 255, 255);">The format of RSS feeds is usually XML which allows the frequent updating of content. They also contain metadata, which is information about the content itself such as the publishing date and author. This information is vital for a website owner, because it helps you to track the age, authorship, and even engagement, so you can maintain the relevancy of your posts.</span><br></div></div></div></div></div>
</div></div><div data-element-id="elm_cjd0fVDp-NNDiXntduSqOw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_cjd0fVDp-NNDiXntduSqOw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>To start you will need to add the RSS Feed portlet to your dashboard as it is usually not part of the default configuration.&nbsp; To do this click the personalize link in the upper right had corner of your dashboard.</p><p><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Then select the RSS Feed tile and click on it to add it to your dashboard</span></p><p><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024-1.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Open the setup menu for the RSS Feed portlet</span></p><p style="text-align:center;"><img src="/Sun%20Jan%2007%202024-2.png" alt="" style="color:inherit;width:967.69px !important;height:123px !important;max-width:100% !important;"><br></p><p><span style="color:inherit;"><br></span></p><p style="text-align:left;">In the setup menu you can choose from a list of predefined sources of popular business or sports websites.&nbsp; For this example, scroll to the top and select the (Custom) option.</p><p style="text-align:left;"><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024-3.png" alt="" style="width:647.36px !important;height:330px !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;">Then enter the following URL into the URL Feed field</p></div>
</div><div data-element-id="elm_3MaMutRCD1BvnecPGEKiZQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3MaMutRCD1BvnecPGEKiZQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="text-align:center;"><a href="http://fetchrss.com/rss/659825561e7a55294a4feda3659826e8b076375f6d2ac4c2.xml">http://fetchrss.com/rss/659825561e7a55294a4feda3659826e8b076375f6d2ac4c2.xml</a><br></p></div>
</div><div data-element-id="elm_gyRdhQpIbwdjp0tsVRDIOA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gyRdhQpIbwdjp0tsVRDIOA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>This URL will source the MavenCloud blog into your dashboard so you can stay up to date on the latest articles and tips on optimizing NetSuite.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024-4.png" alt="" style="width:589.5px !important;height:300px !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;"><span style="color:inherit;">Choose the number of articles you want to see by setting the Number of Links field.&nbsp; Also be sure to check the Show Details checkbox.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024-5.png" alt="" style="width:593.28px !important;height:300px !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;"><span style="color:inherit;">Click Save and you will now see each article as it is posted with links to navigate directly to each article.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Jan%2007%202024-6.png" alt="" style="width:1045.28px !important;height:508px !important;max-width:100% !important;"></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">The feed will be refreshed every time you login to NetSuite OR you can click the refresh link in the portlet to get the latest data.&nbsp; If you would like more information on how to build a dynamite dashboard or any other enhancements you need for your business use the link below to contact us.&nbsp; We have the resources and experience to help you with any configuration or customization project.</span></p></div>
</div><div data-element-id="elm_gkTXitIcQbm3Jh6e-TjaXA" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_gkTXitIcQbm3Jh6e-TjaXA"].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>Sun, 07 Jan 2024 15:06:46 -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[Send Emails to Dynamic Recipient Lists]]></title><link>https://www.mavencloud.tech/blogs/post/send-emails-to-dynamic-recipient-lists</link><description><![CDATA[Combine the power of saved searches, custom fields and workflows to elevate your communication with your Customers and Vendors!]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_5X1n4_srSVaJZcVagQ_nTQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm__-b13W4HRF-lEXKOeNTdbg" 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_LKq5KuyIT365TA4cXlM6Yw" 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_JYlwrb_gQbSx1g9Qhx-U4A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_JYlwrb_gQbSx1g9Qhx-U4A"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">One of the most common frustrations or complaints we receive in NetSuite is that native email functionality send emails to the main &quot;E-mail&quot; field on entity records.&nbsp; And the main E-mail field cannot hold more than 1 email address.&nbsp; This is very limiting to businesses as usually there are many different contact points in an organization that would want to be notified about different events with orders or transactions.&nbsp; This limitation can be somewhat overcome with workflows using the Send Email action as you have more flexibility in the parameters of the action to send emails to multiple recipients.&nbsp; There are a few &quot;hacks&quot; that work fairly well to give users the ability to add multiple email addresses on to Customer or Vendor records and then send emails to them, but most include adding a few different email address fields onto the entity record for different departments within the organization.&nbsp; You can also create an Email Address custom field and add it to the workflow, then change the field type to Free Text which will then allow you to add multiple comma separated addresses into the field, but yet still be used in a workflow.&nbsp; All of these are good options but can sometimes pose a problem of form clutter or workflow maintenance.</p></div>
</div><div data-element-id="elm_NyN6FC-UNSOOk3CbpDeRXQ" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_NyN6FC-UNSOOk3CbpDeRXQ"] .zpimagetext-container figure img { width: 500px ; height: 313.73px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_NyN6FC-UNSOOk3CbpDeRXQ"] .zpimagetext-container figure img { width:500px ; height:313.73px ; } } @media (max-width: 767px) { [data-element-id="elm_NyN6FC-UNSOOk3CbpDeRXQ"] .zpimagetext-container figure img { width:500px ; height:313.73px ; } } [data-element-id="elm_NyN6FC-UNSOOk3CbpDeRXQ"].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/email-marketing-concept-1.jpg" width="500" height="313.73" 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);">NetSuite custom fields are configured with a predefined &quot;data type&quot; so data can be easily validated while users are entering it.&nbsp; For example, if you select Integer Number then only integers can be entered into the field vs. selecting Decimal Number which allows decimals.&nbsp; One field type is Email Address which validates that the entered text is at least in the format of a valid email address.&nbsp; It also limits the user to only entering one email address.&nbsp; Alternatively, a Free Text field will allow any text so users can leverage this field type to enter multiple email addresses separated by a comma or semi-colon.&nbsp; Switching between these field types can provide different functionality in different situations so it is good to know which field type you need while first configuring your custom field.&nbsp; It is also very important because when you change field types ALL data entered into that field is erased so be sure to backup your data in an Excel file or by other means before changing field types.</span></p></div>
</div></div><div data-element-id="elm_nDh4ymsv6GS-AxzWc6ZR8g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_nDh4ymsv6GS-AxzWc6ZR8g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One great trick we've deployed many times is to combine the power of saved searches with workflows to get an easy to manage system for adding, removing and changing the recipients for emails.&nbsp; This customization is fairly easy to setup and leverages many native features so you know it will remain stable throughout future releases.</p><p>The idea here is to use the Contact records associated with the entity to keep an up to date list of contacts and what transactions they want to be notified of.&nbsp; To start we will create a custom list called &quot;Email Group&quot;.&nbsp; This will help us categorize contacts into logical groups for sending emails.&nbsp; (You can also leverage the native &quot;Role&quot; field on contacts for this as well if you prefer).</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023.png" alt="" style="width:1051.8px !important;height:405px !important;max-width:100% !important;"></span><br></p><p><br></p><p>Next we will create a custom field on the contact record that we can use to select what group each contact should be a part of.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-2.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Now we can add our contacts associated with our customer and assign them the proper email group</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-3.png" alt="" style="width:1054.5px !important;height:340px !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;">The next step is to create a saved search of contacts and make it a summary search so we can use it to source the value of the transaction body field.&nbsp; In the criteria we want to exclude Inactive contacts, but include contacts with the Order Notifications email group.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-4.png" alt="" style="width:1038.64px !important;height:463px !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 our results tab will include one summarized field using the NS_CONCAT function.&nbsp; This will concatenate all the results of the search into a single comma separated field value.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-5.png" alt="" style="width:1056.8px !important;height:480px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Lastly, don't forget to give your saved search a filter so the system knows how to filter the results to get only the contacts applied to the correct company/customer.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-6.png" alt="" style="width:1046.15px !important;height:395px !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;">Now let's create a custom Transaction Body field that will hold the results of our saved search.&nbsp; Make sure to UNCHECK the store value checkbox so the value is dynamically sourced whenever the record is loaded.&nbsp; We used a Long Text field type just in case there were a lot of unique email addresses to be notified.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-8.png" alt="" style="width:1028.2px !important;height:540px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Also we need to define the saved search we created in the Validation &amp; Defaulting subtab.&nbsp; Remember to choose what field on the transaction should be used to filter your results.&nbsp; Since the Available Filter in your saved search was based on the Customer field, we should choose the same field in our custom field configuration</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-9.png" alt="" style="width:656.8px !important;height:313px !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;"><span style="color:inherit;">Now our Sales Order form will dynamically source ALL email addresses that are tagged with the &quot;Order Notifications&quot; email group.&nbsp; And these addresses will automatically be filtered to only the contacts associated with the Customer defined on the transaction.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-10.png" alt="" style="width:1055.2px !important;height:357px !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;">Then in your workflow you can add a Send Email action and assign the new transaction body field as part of the </span>recipients<span style="color:inherit;">.&nbsp; Note how we are using the CC Address parameter within the action and using the field ID of our new transaction body field to define the addresses to be copied.&nbsp; This is a great way to circumvent the restrictions placed on trying to select a field from the list in the From Field parameter.&nbsp; We have tested using this method in the Free Form Address field and the workflow will return an error.&nbsp; However, using the field ID in either the CC or BCC fields seems to work just fine</span><span style="color:inherit;">.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-15.png" alt="" style="width:455.32px !important;height:312px !important;max-width:100% !important;"></span><br></p><p style="text-align:left;"><span style="color:inherit;">Since an email does require a Primary </span>Recipient<span style="color:inherit;">&nbsp;you do need to define a recipient in one of the fields other than the CC or BCC.&nbsp; You can use a native field as pictured above OR you can put in a static address of purchaseorders@mycompany.com.&nbsp; This way all communication emailed out of NetSuite is stored in a shared inbox for your company to review if needed.</span></p></div>
</div><div data-element-id="elm_J-crP4RBqnD02vZvvQxk7Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_J-crP4RBqnD02vZvvQxk7Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The power of this functionality comes with the ease of maintenance for our users.&nbsp; For instance if Curtis Johnson were to leave the company and we need to add a new contact, it is as simple as managing the native Contact list on our Customer record.&nbsp; Curtis Johnson can be inactived and a new contact created with the same email group.&nbsp; Or if the accounting team wants to be made aware of new orders place, then they can easily receive the &quot;Order Notifications&quot; tag.</p><p><img src="/Tue%20Aug%2015%202023-13.png" alt="" style="color:inherit;width:1052.05px !important;height:293px !important;max-width:100% !important;"></p><p><br></p><p>Now when the next order is placed they will all be notified via email.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2015%202023-14.png" alt="" style="width:1051.64px !important;height:344px !important;max-width:100% !important;"></span><br></p><p><br></p></div>
</div><div data-element-id="elm_HPFq33AjXLIgg1efpsa0wA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HPFq33AjXLIgg1efpsa0wA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>If you would like to learn more about the Send Email action you can read our <a href="https://www.mgbcpro.com/blogs/post/Send-Email-Action" title="blog post" target="_blank" rel="">blog post</a> specifically on this topic.&nbsp; Also if you would like help with or have questions about leveraging the customizability of NetSuite to build no-code automation in your environment please <a href="mailto:info@mgbcpro.com" title="reach" rel="nofollow noreferrer">reach</a> out.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 15 Aug 2023 10:19:29 -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]]></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[Add Buttons into Saved Searches]]></title><link>https://www.mavencloud.tech/blogs/post/add-buttons-into-saved-searches</link><description><![CDATA[Leverage saved searches to provide a unique and efficient workspace for your team to quickly view information and navigate to records easily.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_VVDo3jhNQ8GEITOOp4WQTg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_REqHT0B6QmugujWLsEwjcQ" 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_0f61SGifSYO-h3yXw9k_Dg" 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_-BwKinBkQC-j_JD1mjJCrw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-BwKinBkQC-j_JD1mjJCrw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Saved searches are one of the most powerful and versatile features of NetSuite, and sometimes the most under-utilized.&nbsp; Saved searches are most commonly used to quickly find data or inadvertently created when someone is trying to perform a quick &quot;one-off&quot; search of some records.&nbsp; However, a saved search can be so much more than that.&nbsp; Saved searches can be used to extract data from NetSuite on an efficient and consistent format.&nbsp; They can be used to provide reminders and email notifications to both internal users and/or external relationships.&nbsp; They are the basis of KPI's, charts, graphs and other dashboard elements.&nbsp; Furthermore, they can be used as almost a &quot;workspace&quot; to help organize tasks and consolidate data into one efficient workspace for a particular user or department.&nbsp;&nbsp;<span style="color:inherit;text-align:center;">One of the key ways to elevate your saved searches is the use of Formulas.&nbsp; NetSuite offers many types of formulas that can be used in many different ways:</span></p><div style="color:inherit;"><ul><li style="text-align:left;">Formula (currency) - the output produced by this formula is a numerical value with 2 decimal places</li><li style="text-align:left;">Formula (date) - the output produced by this formula is in date format</li><li style="text-align:left;">Formula (numeric) - the output produced by this formula is a numeric value and can contain many decimal places</li><li style="text-align:left;">Formula (HTML) - the output produced by this formula is denoted by the HTML elements placed within the formula (usually links)</li><li style="text-align:left;">Formula (text) - the output produced by this formula is in text format.</li></ul><div style="text-align:left;">In this article we will discuss the use of the Formula (HTML) to provide links within your saved search.</div></div></div>
</div><div data-element-id="elm_HJWoiUD-YJBtff7KwBtZ4Q" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_HJWoiUD-YJBtff7KwBtZ4Q"] .zpimagetext-container figure img { width: 500px ; height: 349.22px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HJWoiUD-YJBtff7KwBtZ4Q"] .zpimagetext-container figure img { width:500px ; height:349.22px ; } } @media (max-width: 767px) { [data-element-id="elm_HJWoiUD-YJBtff7KwBtZ4Q"] .zpimagetext-container figure img { width:500px ; height:349.22px ; } } [data-element-id="elm_HJWoiUD-YJBtff7KwBtZ4Q"].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-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/world-wide-web-7104406_1280.jpg" width="500" height="349.22" 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);">One thing to note on using URLs is that Netsuite documentation recommends you use a &quot;non-specific&quot; URL so you do not run into access issues between different environments.&nbsp; What this means is you would only place the part of the URL after the domain in your href instead of including the domain and account number.&nbsp; This would help if you are trying to use this links between Production and Sandbox accounts because a Sandbox account has a different account number.&nbsp; (ie. Production = 1234567 and Sandbox = 1234567-sb1).&nbsp; This is why we use the non-specific &quot;system.netsuite.com&quot; domain within our Formula (HTML).&nbsp; Alternatively you can just use the URL path after the domain and usually NetSuite will automatically append the path onto the current domain you are logged in under.&nbsp;&nbsp;</span><span style="color:rgb(255, 255, 255);">With this in mind you would update the Formula (HTML) example below to be the following:</span></p><p><span style="color:rgb(255, 255, 255);"><br></span></p><p><span style="color:rgb(234, 119, 4);"><span style="font-style:italic;">'&lt;a href=''</span><span style="text-align:center;font-style:italic;">/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;whence=''&gt;'|| {number} ||'&lt;/a&gt;'</span></span><br></p><p><span style="color:rgb(255, 255, 255);"><span style="text-align:center;font-style:italic;"><br></span></span></p><p><span style="text-align:center;color:rgb(255, 255, 255);">This way NetSuite will reference the current account domain the user is logged in under, into the URL while redirecting the user to the linked URL.&nbsp; We have experienced mixed results with this so we don't always recommend it initially trying to leverage either the non-specific system.netsuite.com domain OR the domain path.&nbsp; Then if you experience errors you can add in an account specific domain where necessary.</span></p></div>
</div></div><div data-element-id="elm_9dXoiMtaImcXANPN4iWzUw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9dXoiMtaImcXANPN4iWzUw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Adding links within your saved search can not only help users navigate through NetSuite quickly and easily, but also provide quick access to records and information directly related to the content searched and displayed within your saved search.&nbsp; One of the most common ways to utilize links within saved searches is to provide a link to a joined record.&nbsp; For example, if you have created a Item Search then the native Edit/View link provided by the system will only navigate to the Item record.&nbsp;&nbsp;</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Jul%2028%202023.png" alt="" style="width:454.68px !important;height:214px !important;max-width:100% !important;"></span><br></p><p>However, you may be joining to related transactions within this search and may want to give the user an easy way to open the transaction record.&nbsp; This is easily done through a Formula (HTML) and an &quot;href&quot; element.&nbsp; Add a Formula (HTML) into the results of your saved search and then use the following formula:</p><p><br></p><p style="text-align:center;"><span style="color:inherit;font-size:14px;font-style:italic;">'&lt;a href=''https://system</span><span style="color:inherit;font-size:14px;font-style:italic;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;whence=''&gt;View&lt;/a&gt;'</span><br></p><p><br></p><p>A few things to note with this formula:</p><ol><li>You can also replace &quot;system&quot; in the URL with youraccountnumber.app where youraccountnumber is the account number of your NetSuite environment. (ie https//1234567.app.netsuite.com/app/accounting, etc)&nbsp; This will restrict your link to ONLY work within the environment you have entered.</li><li>The text entered between the &lt;a&gt; and &lt;/a&gt; elements is what is displayed to the user to click on.&nbsp; You can change this to whatever you like.&nbsp; You can also use double pipes to concatenate a field value here as well.&nbsp; So instead of the link saying &quot;View&quot; you can have it list the Document Number of the transaction by instead changing the formula to:</li></ol><div><br></div><div><div><div style="text-align:center;"><span style="color:inherit;font-size:14px;font-style:italic;">'&lt;a href=''https://system</span><span style="color:inherit;font-size:14px;font-style:italic;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;whence=''&gt;</span><span style="font-size:14px;font-style:italic;color:rgb(234, 119, 4);">'|| {number} ||'</span><span style="color:inherit;font-size:14px;font-style:italic;">&lt;/a&gt;'</span><br></div></div></div><div style="text-align:center;"><span style="color:inherit;font-size:14px;font-style:italic;"><br></span></div><div style="text-align:left;"><div><span style="color:inherit;font-size:16px;">Now the Transaction Number will be displayed AND it will be clickable to the user, redirecting them to the transaction listed in the results row of the saved search.</span></div><div style="text-align:center;"><span style="color:inherit;font-size:16px;"><span style="color:inherit;"><img src="/Fri%20Jul%2028%202023-1.png" alt="" style="width:411.82px !important;height:291px !important;max-width:100% !important;"></span><br></span></div><div style="text-align:left;"><span style="color:inherit;font-size:16px;"><span style="color:inherit;">To help manage the user experience you can also update the &lt;a&gt; element with a notation so a new window is opened.&nbsp; This way the user does not have to go back and reload the saved search after viewing or updating the transaction.&nbsp; To do so we need to add a target attribute.&nbsp; The resulting formula HTML would look like this:</span></span></div><div style="text-align:left;"><span style="color:inherit;font-size:16px;"><span style="color:inherit;"><br></span></span></div><div style="text-align:center;"><span style="font-size:16px;"><span style="color:inherit;font-size:14px;font-style:italic;">'&lt;a href=''https://system</span><span style="text-align:center;font-size:14px;font-style:italic;"><span style="color:inherit;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;whence=''</span><span style="color:rgb(234, 119, 4);"> target=&quot;_blank&quot;</span><span style="color:inherit;">&gt;'|| {number} ||'&lt;/a&gt;'</span></span><span style="color:inherit;"><br></span></span></div><div style="text-align:left;"><span style="color:inherit;font-size:16px;"><span style="color:inherit;"><br></span></span></div><div style="text-align:left;">Another nice trick to help the user experience is to open the record in Edit mode to save the user from more clicks to make changes to the record.&nbsp; To do so we can add a parameter of &quot;e=T&quot; into the URL.&nbsp; The resulting URL would be:</div><div style="text-align:left;"><br></div><div style="text-align:center;"><span style="color:inherit;font-size:14px;font-style:italic;">'&lt;a href=''https://system</span><span style="text-align:center;font-size:14px;font-style:italic;"><span style="color:inherit;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'</span><span style="color:rgb(234, 119, 4);">&amp;e=T</span><span style="color:inherit;">&amp;whence='' target=&quot;_blank&quot;&gt;'|| {number} ||'&lt;/a&gt;'</span></span><br></div><div style="text-align:left;"><br></div><div style="text-align:left;">Now that we have a good grasp on how links will work we can work on turning this into a button instead of just hyperlinked text.&nbsp; To do this we need to add a &lt;button&gt; wrapper around the Link Text so it is displayed as a button instead of hyperlinked text.&nbsp; The resulting URL would be:</div><div style="text-align:left;"><br></div><div style="text-align:left;"><div><div style="text-align:center;"><span style="color:inherit;font-size:14px;font-style:italic;">'<span style="font-size:12px;">&lt;a href=''https://system</span></span><span style="text-align:center;font-size:12px;font-style:italic;"><span style="color:inherit;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;e=T&amp;whence='' target=&quot;_blank&quot;&gt;</span><span style="color:rgb(234, 119, 4);">&lt;button type=&quot;button&quot;&gt;</span><span style="color:inherit;">'|| {number} ||'</span><span style="color:rgb(234, 119, 4);">&lt;/button&gt;</span><span style="color:inherit;">&lt;/a&gt;'</span></span><br></div></div></div><div style="text-align:left;"><br></div><div style="text-align:left;">Now we have a button displayed instead of hyperlinked text showing in our saved search.&nbsp; &nbsp;Also, when clicked a new window will open AND the record will be opened in edit mode so the user can quickly and easily update the information.</div><div style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Jul%2028%202023-2.png" alt="" style="width:427.44px !important;height:395px !important;max-width:100% !important;"></span><br></div><div style="text-align:left;"><br></div><div style="text-align:left;"><br></div><div style="text-align:left;">You can also change some of the formatting of the button by using the &quot;style&quot; attribute inside the &lt;button&gt; element.&nbsp; Some applicable attributes would be:</div><ul><li style="text-align:left;">font-size</li><li style="text-align:left;">font-weight</li><li style="text-align:left;">font-style</li><li style="text-align:left;">color</li><li style="text-align:left;">background-color</li></ul><div>So you could give your button a color with a style attribute and the resulting URL would be:</div><div><br></div><div><div><div><div style="text-align:center;"><span style="color:inherit;font-size:10px;font-style:italic;">'<span style="font-size:10px;">&lt;a href=''https://system</span></span><span style="text-align:center;font-size:10px;font-style:italic;"><span style="color:inherit;">.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;e=T&amp;whence='' target=&quot;_blank&quot;&gt;&lt;button type=&quot;button&quot; </span><span style="color:rgb(234, 119, 4);">style=&quot;background-color:red&quot;</span><span style="color:inherit;">&gt;'|| {number} ||'&lt;/button&gt;&lt;/a&gt;'</span></span><br></div></div></div></div><div><br></div><div>And the user would see a formatted button in the saved search</div><div style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Jul%2028%202023-3.png" alt="" style="width:399px !important;height:320px !important;max-width:100% !important;"></span><br></div></div></div>
</div><div data-element-id="elm_Dq2lLVsI1PmE2TtLk9sQKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Dq2lLVsI1PmE2TtLk9sQKw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One more feature you could add into this would be to open a pop-up window for the record instead of a new window or in the same window.&nbsp; To do this you would add a &quot;onclick&quot; attribute into the overall &lt;a&gt; element.&nbsp; The syntax can be quite tricky but the resulting formula would be:</p><p><br></p><p style="text-align:center;"><span style="font-style:italic;font-size:12px;"><span style="color:inherit;">'&lt;a href=&quot;#&quot;&nbsp;</span><span style="color:inherit;">onclick=&quot;window.open(''</span><span style="color:inherit;">https://system.netsuite.com/app/accounting/transactions/transaction.nl?id='|| {internalid} ||'&amp;e=T&amp;whence='',''selection'',''dependent=yes,height=600,width=800,scrollbars=no,statusbar=no,titlebar=no,menubar=no,resizeable=yes,location=no'');&quot;&gt;&lt;button type=&quot;button&quot; &gt;'|| {number} ||'&lt;/button&gt;&lt;/a&gt;'</span></span></p><p><br></p><p>The the user can open/edit the record right within a pop up window, make their changes, then quickly close the window and return to the saved search quickly to keep working through the rest of the result.</p><p style="text-align:center;"><span style="color:inherit;"><img src="/Fri%20Jul%2028%202023-4.png" alt="" style="width:477.99px !important;height:437px !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;"><span style="color:inherit;">You can also use the parameters within the &quot;onclick&quot; attribute to help control the size and functionality of the pop-up window by changing the &quot;height&quot;, &quot;width&quot;, &quot;location&quot; or other parameters.</span></p></div>
</div><div data-element-id="elm_uA0mXC91yJ_Rqq4apfM9rw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_uA0mXC91yJ_Rqq4apfM9rw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>If you would like more information on how to leverage saved searches within your NetSuite environment or need help with any customization or enhancement feel free to reach out to us at any time.&nbsp; Also be sure to subscribe and follow our blog for more great tips and tricks.</p></div>
</div><div data-element-id="elm_Al4fSpKoXosuc-1RaLIxFA" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_Al4fSpKoXosuc-1RaLIxFA"].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 zpbutton-outline " href="mailto:info@mgbcpro.com" rel="nofollow noreferrer"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 28 Jul 2023 14:17:05 -0600</pubDate></item><item><title><![CDATA[Do Not Exit Workflow]]></title><link>https://www.mavencloud.tech/blogs/post/do-not-exit-workflow</link><description><![CDATA[If you have done much work with workflows in NetSuite you have probably seen the &quot;Do Not Exit Workflow&quot; checkbox on the header level of all ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_7vAjDvekSiCTqJS-7XFSaA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_l-xcX7oaRpOoxa6e8KePIA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_sQdUfkMORL6iVlkcV3LrpA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_m55VPieySMWR2NBEFtPEGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_m55VPieySMWR2NBEFtPEGQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">If you have done much work with workflows in NetSuite you have probably seen the &quot;Do Not Exit Workflow&quot; checkbox on the header level of all states in your workflow.&nbsp; We get a lot of questions about this checkbox like; &quot;When should it be used or avoided?&quot; or &quot;How does this checkbox effect performance in my environment?&quot;</p><p style="text-align:left;"><br></p><p style="text-align:left;">If you have had these same questions as well we will cover this one checkbox in depth in this article.</p></div>
</div><div data-element-id="elm_ZrOBMBaYpenC-tg6nMIG3Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZrOBMBaYpenC-tg6nMIG3Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As stated before the Do Not Exit Workflow checkbox is found in the header of each State within your workflow.&nbsp; It can be checked at anytime as long as the State does NOT contain any transitions assigned to it.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023.png" alt="" style="width:1046.62px !important;height:313px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">The field help and documentation on this checkbox are pretty self </span>explanatory<span style="color:inherit;">&nbsp;stating,&nbsp;</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">&quot;States that are designated as non-exiting must have no transitions. When the record in the workflow enters a non-exiting state, the record will remain in the state forever and the workflow will not terminate.&quot;</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Here we can clearly see that when a State is marked with &quot;Do Not Exit Workflow&quot; then the record will remain in this state indefinitely and the workflow will never terminate.&nbsp; Any actions within the state will continue to execute forever, as long as they are not using the Entry or Exit triggers.&nbsp; As such, if an action is trigger On Entry, it will be executed when the record first enters this state, but then NEVER again as the record will never leave the state so re-entry is not possible.&nbsp; Alternatively, because the record will never Exit this state the On Exit trigger will never be executed either.&nbsp; However, all other Server and Client triggers are still effective if any Actions are triggered from these events.</span></p><p><span style="color:inherit;"><br></span></p><p>Lastly, if you were to add a transition to a State that is marked with the &quot;Do Not Exit Workflow&quot; checkbox then it will immediately become unchecked and also disabled so you cannot check it again as this State is no longer available for this setting.</p></div>
</div><div data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width: 500px ; height: 333.33px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width:500px ; height:333.33px ; } } @media (max-width: 767px) { [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"] .zpimagetext-container figure img { width:500px ; height:333.33px ; } } [data-element-id="elm_Y4Omg3Eoeo31hlt8KgkqPA"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/business-process-automation-using-flowchart-swimlane-diagram-concept-with-manager-or.jpg" width="500" height="333.33" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">Many people ask why would someone use this feature in a workflow.&nbsp; The most common use case here is within an approval workflow.&nbsp; If your approval workflow contains a Rejected state, then you may want to lock the record so it cannot be edited or changed again.&nbsp; In this scenario you would apply the Lock Record action in the Rejected state and then mark the Do Not Exit Workflow box so the record ALWAYS remains in the Rejected state and ALWAYS remains locked by the workflow.&nbsp; While this is a great use case for this function it is also useful when you have a single state workflow or a state within a workflow that you want the actions in that state to consistently be triggered every time the record is accessed.&nbsp; If you apply the Do Not Exit Workflow setting then the record will remain in the State indefinitely and all actions will continue to be triggered indefinitely.&nbsp; This helps to maintain consistency of the functions on your records while avoiding the need to re-create actions or copy actions into multiple states or multiple workflows.</span></p></div>
</div></div><div data-element-id="elm_4sVcdNXckOVWz-JtX_RUEw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4sVcdNXckOVWz-JtX_RUEw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The most common misconception about this setting is that it is a huge drain on system resources to somehow &quot;remember&quot; what records held in what states of workflows and constantly be in a &quot;holding&quot; pattern forever.&nbsp; This is just simply not true.&nbsp; In fact, the system functions in almost the opposite way.&nbsp; When you enable the Do Not Exit Workflow setting the Current State is stored with the record when it is saved to the database.&nbsp; This record is not touched or interacted with by the system in anyway until a user tries to &quot;recall&quot; or view the record.&nbsp; In this case the record is loaded from the database and the Current State is still stored with it.&nbsp; At this point the system is able to quickly evaluate the actions within this state and perform them easily, with low impact to the over system performance.</p><p>Conversely, if one were to NOT check this box then in the same scenario the record will be stored to the database with NO reference to a workflow or workflow State.&nbsp; Then when &quot;recalled&quot; to be viewed by a user, the system must find all workflows that the records meets the criteria of and initiate them all.&nbsp; This usually will create an instance and history record for the workflow initiation and then once initiated the actions within the workflow will be evaluated and executed accordingly.</p><p>So as you can see the Do Not Exit Workflow box could avoid all this unnecessary processing of workflow initiation, instance records and extra evaluation of conditions if used in the correct context.&nbsp; In conclusion this may seem like small distinction in functionality, but these small configuration can lead to big payoffs when evaluating the performance of your system.</p><p><br></p><p>If you have questions about workflows or ANY type of customization or automation within your NetSuite ecosystem reach out to us and we would be happy to partner with you to optimize your environment.</p></div>
</div><div data-element-id="elm_fXxUU8eiLdsBAsIhsU8xUQ" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_fXxUU8eiLdsBAsIhsU8xUQ"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="mailto:info@mgbcpro.com" rel="nofollow noreferrer noopener"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 25 Jul 2023 21:32:01 -0600</pubDate></item></channel></rss>