<?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/tips-tricks/feed" rel="self" type="application/rss+xml"/><title>MavenCloud - Blog #tips&amp;tricks</title><description>MavenCloud - Blog #tips&amp;tricks</description><link>https://www.mavencloud.tech/blogs/tag/tips-tricks</link><lastBuildDate>Fri, 23 Jan 2026 01:36:17 -0800</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Approve and Ship Orders using Workflows]]></title><link>https://www.mavencloud.tech/blogs/post/approve-and-ship-orders-using-workflows</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/Untitled design.jpg"/>Workflows can be a powerful tool for any developer 0r administrator and can help quickly solve problems and automate tasks within your business proces ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_oBa1bt3RRAaslw0inQKKNw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Ulwy43CBRXa-KbvUuSMkSA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_lMrpgPXdRzeE3E10VmZ1Jw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_lQIESx7BQDmX9cWxOZr6RQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_lQIESx7BQDmX9cWxOZr6RQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Workflows can be a powerful tool for any developer 0r administrator and can help quickly solve problems and automate tasks within your business processes.&nbsp; One way that NetSuite has enhanced workflows and their application within your ecosystem is the ability to update native status fields on orders and transactions.&nbsp; This can be extremely helpful especially when automating your order to cash workflow.&nbsp; NetSuite has made the following fields available to workflow actions:</p><ul><li style="text-align:left;">Order Status - this is the native status of a Sales Order</li><li style="text-align:left;">Shipping Status - this is the native status of an Item Fulfillment</li></ul></div>
</div></div></div></div></div><div data-element-id="elm_ZHr2A0VT9cQlS44ExhCWog" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_ZHr2A0VT9cQlS44ExhCWog"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_YXVIPDJxl2WlEVRFrHod4w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_YXVIPDJxl2WlEVRFrHod4w"].zprow{ border-radius:1px; } </style><div data-element-id="elm_UzoePL74MET1ho1vvbcNvA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_UzoePL74MET1ho1vvbcNvA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width: 200px ; height: 150.16px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width:200px ; height:150.16px ; } } @media (max-width: 767px) { [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"] .zpimagetext-container figure img { width:200px ; height:150.16px ; } } [data-element-id="elm_uI_8uLLwGqi7aYfr9VYK0Q"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/g66f39f1d9b68f78ca0457b20cb85a0b92157f4d11095211b818347999d5873ae63f920daf45c13c991323edc97f3ca14fdd4ce206c8ac6adc40eb4917bd69c08_1280.png" width="200" height="150.16" loading="lazy" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(255, 255, 255);">If you have enabled&nbsp;</span><a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1230197.html" title="advanced shipping " target="_blank" rel="">advanced shipping</a>&nbsp;<a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1224089.html#procedure_N1224129" title="advanced shipping " target="_blank" rel=""></a><span style="color:rgb(255, 255, 255);">in your NetSuite environment you can define Item Fulfillments with statuses of Picked, Packed and Shipped.&nbsp; Each status has different implications when it comes to the Inventory impact, financial impact and carrier/tracking information available to the record.</span></p><p><span style="color:rgb(255, 255, 255);">When it comes to Order Status the most common application is to update a sales order from Pending Approval to Pending Fulfillment (ie Approving an Order).&nbsp; While other statuses are available in the action configuration it is recommended to allow native NetSuite processes to move the order through the fulfillment steps.</span></p></div>
</div></div></div></div></div></div><div data-element-id="elm_YtkE94baDy9sFlRq8Uuykg" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_YtkE94baDy9sFlRq8Uuykg"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_OKr2kNK1mDVfIADgjUno1w" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_OKr2kNK1mDVfIADgjUno1w"].zprow{ border-radius:1px; } </style><div data-element-id="elm_NdIIEypzl2wzAoQrPLrReQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_NdIIEypzl2wzAoQrPLrReQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_oDdb2VuaU5avN0VwVdyBHw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_oDdb2VuaU5avN0VwVdyBHw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Order Status</h2></div>
</div></div></div></div><div data-element-id="elm_je9k6CosjqMpD8oSKKMYiA" data-element-type="section" class="zpsection zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_je9k6CosjqMpD8oSKKMYiA"].zpsection{ border-radius:1px; } </style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_yMjjW1NCKTQ9ypQGrCN0Yg" data-element-type="row" class="zprow zprow-container zpalign-items-flex-start zpjustify-content-flex-start zpdefault-section zpdefault-section-bg " data-equal-column=""><style type="text/css"> [data-element-id="elm_yMjjW1NCKTQ9ypQGrCN0Yg"].zprow{ border-radius:1px; } </style><div data-element-id="elm_hysukGZoT61xIf3BtXpzSQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg "><style type="text/css"> [data-element-id="elm_hysukGZoT61xIf3BtXpzSQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_e1wPyJQIlRVdYlJeaj-r6g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_e1wPyJQIlRVdYlJeaj-r6g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>NetSuite provides great native functionality for approving Sales Orders.&nbsp; This helps your organization manage orders effectively as you can selectively choose which orders should be held for approval and which orders should be able to freely enter your fulfillment process.&nbsp; The flip side of this coin is that, now you have a manual process for someone to review and approve these orders, which can be time consuming and also costly if not managed effectively.</p><p>With workflows you can provide any number of criteria to the system to review orders and &quot;approve&quot; them automatically.&nbsp; You can use a few different methods to achieve this depending on your needs.</p><ul><li>Scheduled Workflow - this would probably be the most common application as you are able to create a saved search and link it with a scheduled workflow.&nbsp; Then add a Set Field Value action to your workflow to set the Order Status field to Pending Fulfillment.&nbsp; If the order meets the criteria of the saved search, your order will be approved automatically.&nbsp; If it does not, then it will stay in the queue for manual approval or until something changes on the order so it matches the correct criteria.<br><img src="/Thu%20Jun%2013%202024.png" alt=""><br><br><br></li><li>Event Based Workflow - this would most likely not be as common of an application, but could work if your order is being edited by an integration or another user, but then after the edits now meets the correct criteria you can automatically update the order to Pending Fulfillment using the same Set Field value configuration as above.<br><br></li><li>Transform Record - lastly if you are using a workflow to transform an Estimate into a Sales Order, you can use the Order Status field in the Transform Record action to define whether the newly created order should be Pending Approval or Pending Fulfillment.<br><img src="/Thu%20Jun%2013%202024-1.png" alt=""><br></li></ul></div>
</div><div data-element-id="elm_GLwSwKqhEVNrG2R4kKUTrA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_GLwSwKqhEVNrG2R4kKUTrA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Shipping Status</h2></div>
<div data-element-id="elm_9Mpz0VQIrxA5BNHoJaAZug" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9Mpz0VQIrxA5BNHoJaAZug"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>We have come across many use cases in the past to automatically post Item Fulfillments from Sales Orders, however, occasionally it is difficult to manage this automation due to the Pick, Pack and Ship workflow of your order fulfillment process.&nbsp; Now with the Shipping Status field available to workflows you can define what fulfillment status should be set on your automated fulfillments.&nbsp; Similar to the Order Status above you can use many different methods to post Item Fulfillments in different statuses using SuiteFlow</p><ul><li>Scheduled Workflow - define the criteria in a saved search for when an Item Fulfillment should transition from picked to packed or packed to shipped.</li></ul><div><span style="color:inherit;"><img src="/Thu%20Jun%2013%202024-3.png" alt=""></span><br></div><ul><li>Event Based Workflow - if fulfillments are being edited you can update the status with an event based trigger to automatically set the status into the next stage.</li><li>Transform Record - if automatically posted an item fulfillment from a sales order using the transform record action, set the Shipping Status field in your workflow action configuration to match your business use case.</li></ul><div><span style="color:inherit;"><img src="/Thu%20Jun%2013%202024-2.png" alt=""></span><br></div></div>
</div><div data-element-id="elm_Mu5fsVpGPak2glopOaRPtw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Mu5fsVpGPak2glopOaRPtw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>With the continued enhancements to SuiteFlow and the automation available to you, NetSuite can become a powerful ally to grow and support your business.&nbsp; Leveraging just these small functions can make HUGE improvements in your order to cash efficiency and overall cash flow management.&nbsp; Let us know if you have questions or use cases where you have used these custom status functions in your organization.</p></div>
</div><div data-element-id="elm_7JsrGexVEShvFqYHHn8zlg" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_7JsrGexVEShvFqYHHn8zlg"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="/contact"><span class="zpbutton-content">Contact Us</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 13 Jun 2024 10:50:50 -0600</pubDate></item><item><title><![CDATA[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 2]]></title><link>https://www.mavencloud.tech/blogs/post/set-field-value-action-part-2</link><description><![CDATA[Part 2 of our deep dive into the Set Field Value Action is specifically on the sublist action group that has the Set Field Value Action as part of it's functionality]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_XIhl0cjWS4yu7mOEfXrs9Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_I89sougjSGasq6-TFcIjsg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_l-7t0HPKRGKnmEdRXL9v1w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_l-7t0HPKRGKnmEdRXL9v1w"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_KrxclRXZSEq4saZAOZkUdw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_KrxclRXZSEq4saZAOZkUdw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true">Sublist Action Group</h2></div>
<div data-element-id="elm_6KoSsfOoQleJyBJ-wnbUxA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6KoSsfOoQleJyBJ-wnbUxA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">The sublist action group was a awesome enhancement to SuiteFlow as it opened up the world of sublist fields to workflows.&nbsp; With a sublist action group you can now perform actions on fields within the sublist of a transaction.&nbsp; Right now the sublist action group has some pretty heavy limitations, however, the few actions it does support are a huge leap forward for workflow functionality.&nbsp; Currently, the sublist action group can only be created for the &quot;items&quot; sublist.&nbsp; So if a transaction does not include an &quot;items&quot; sublist a sublist action group cannot be used.&nbsp; The most common transactions in this category are:</p><ul><li style="text-align:left;">Estimate</li><li style="text-align:left;">Sales Order</li><li style="text-align:left;">Item Fulfillment</li><li style="text-align:left;">Invoice</li><li style="text-align:left;">Return Authorization</li><li style="text-align:left;">Purchase Order</li><li style="text-align:left;">Item Receipt</li><li style="text-align:left;">Vendor Bill</li></ul><div style="text-align:left;">The next limitation with sublist action groups is that they only support 4 actions currently:</div><div style="text-align:left;"><ul><li style="text-align:left;">Create Record</li><li style="text-align:left;">Return User Error</li><li style="text-align:left;">Send Email</li><li style="text-align:left;">Set Field Value</li></ul><div>The most commonly used action here is the Set Field Value action.&nbsp; To begin first we need to add a Sublist Action Group to our workflow.&nbsp; This is very similar to a regular Workflow Action Group but instead of just grouping actions with common conditions together for easier maintenance, this sublist action group performs actions on the Items sublist according to the conditions and trigger defined.&nbsp; I sublist action group will only be initiated when the condition of the group is met and the trigger is activated.&nbsp; If you have no condition then the sublist action group will be initiated everytime.&nbsp; Furthermore, every line within the Items sublist will be considered for any actions within the sublist action group however, each action can have it's own condition so they may only execute on certain lines.&nbsp; Also a sublist action group can only have 1 trigger so all actions within the group will fire on the same trigger.&nbsp; If you need different actions to be executed on different triggers then you would need to make multiple sublist action groups to accomplish this.</div><div>To add a sublist action group click on the New Sublist Group button<img src="/Sun%20Aug%2006%202023-2.png" alt="" style="color:inherit;"><span style="color:inherit;">Then define the trigger, context, event types and condition for this group.&nbsp; Remember, the sublist group will only be activated if the trigger, context, event types and conditions are all met.&nbsp; Then once met all actions in the sublist group will be considered based on each individual line and each actions individual condition(s)</span></div><div><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-3.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">Also remember to define what sublist to perform actions on in the parameters section.</span></div><div style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-4.png" alt="" style="width:616.26px !important;height:155px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Once you save your sublist action group we can begin to add actions to it.&nbsp; Open the sublist action group then click New Action</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-5.png" alt=""></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Select Set Field Value from the list</span></div><div style="text-align:center;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-6.png" alt="" style="width:544.94px !important;height:143px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">In our example today we will set the department field on purchase order lines to &quot;Operations&quot; if the line item contains a Freight item.&nbsp; This way when the vendor bill is entered the proper coding is already setup for Freight charges and the A/P team does not have to remember to do it.</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Sun%20Aug%2006%202023-7.png" alt=""></span><br></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Now any line set to the &quot;Freight Charges&quot; item will get the correct department and any line NOT set to that item will be skipped in the workflow so the user can set the correct department as necessary.</span></div></div></div>
</div><div data-element-id="elm_C3o-QeNlYI0-Ovpxp6A1dA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_C3o-QeNlYI0-Ovpxp6A1dA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>There is much more you can do with sublist action groups, but you can see that just setting field values dynamically within the items sublist can be VERY helpful to maintaining accurate data and cut down on the time spent entering data into forms.&nbsp; &nbsp;Remember that when using sublist action groups all actions within the group are constrained by the configuration of the overall group so whatever trigger and even type you set on the overall group, be sure that it is applicable to all actions, or you will need to setup another action group for a different trigger.</p><p>If you would like to learn more about workflows, or how NetSuite in general can support your business feel free to reach out anytime.&nbsp; We can support any customization, implementation or training for your environment.</p></div>
</div><div data-element-id="elm_wOfywj87QsSDamNR5QOaPw" data-element-type="button" class="zpelement zpelem-button "><style></style><div class="zpbutton-container zpbutton-align-center "><style type="text/css"></style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md " href="javascript:;" target="_blank"><span class="zpbutton-content">Get Started Now</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 06 Aug 2023 18:02:50 -0600</pubDate></item><item><title><![CDATA[Set Field Value Action]]></title><link>https://www.mavencloud.tech/blogs/post/Set-Field-Value-Action</link><description><![CDATA[Take a deep dive into the most used action in workflows]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_GhYjOdMLQhS7t8QNUZhj6A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_5EwoXQdqQcC0mXRoZSahvQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_-57JiRJFT--HRdUzid0-cg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm__bmlmnPjT-6ci19hrrvppA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm__bmlmnPjT-6ci19hrrvppA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Anyone who has built, managed or updated a workflow in NetSuite has most likely used the Set Field Value action.&nbsp; In fact, the Set Field Value action is hands-down the most used workflow action throughout workflows.&nbsp; Most likely, this is because the use cases and business scenarios for the Set Field Value action are easier to envision and deploy.&nbsp; Furthermore, it is probably due to the widely applicable utility of being able to set field values based on almost any criteria or condition you can think of AND also sourcing the value that gets set from other fields or records within the system or even have it calculated from a formula.&nbsp; The possibilities are endless when it comes to the ways you can leverage this action to help your team quickly and easily create and update records, while simultaneously maintaining data integrity and consistency throughout the system.</p></div>
</div><div data-element-id="elm_VRo3M6eskMMJ9rkaMk_-Tg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VRo3M6eskMMJ9rkaMk_-Tg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>One of the key elements to remember about the Set Field Value action is the trigger that you use to perform the action.&nbsp; It is widely versatile and supports every trigger available to workflows.&nbsp; Use the table below to understand how each trigger effects the functionality of this action and how you can leverage different triggers to perform the action in the way that you want.</p></div>
</div><div data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg" data-element-type="table" class="zpelement zpelem-table "><style type="text/css"> [data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg"].zpelem-table{ border-radius:1px; } [data-element-id="elm_PbGVuTjH5LN1DBpYDbghKg"] .zptable{ width:100% !important; } </style><div class="zptable zptable-align-left zptable-header- zptable-header-none zptable-cell-outline-on zptable-outline-on zptable-style- " data-width="100" data-editor="true"><table style="text-align:center;width:100%;"><tbody><tr><td style="width:50%;">Trigger (TRIGGER TYPE) </td><td style="width:50%;">Description</td></tr><tr><td style="text-align:left;width:50%;"> Entry (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">When the record enters the specific State the action is placed within, it will be triggered as long as the condition is met.</span> &nbsp; The field value will be set based on the parameters one time, but not again as it only happens when the record enters the state and not again after.</td></tr><tr><td style="text-align:left;width:50%;"> Before Record Load (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">As the record is being loaded from the database the action is triggered as long as the condition is met.&nbsp; The field value is set BEFORE the user is able to interact with or make any changes to the record.&nbsp; The condition of the action can only use data that has already been saved to the database</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before User Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded and is displayed in Edit mode to the user.&nbsp; However, before any fields can be updated or changed the action is triggered and the field value is set as long as the condition is met.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before Field Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change a fields value, however, before the user &quot;leaves&quot; or &quot;gets out of&quot; the triggering field the action is triggered.&nbsp; So data is allowed to be entered or changed within the field, but the user cannot save or move to another field until the action is triggered (as long as the condition is met).&nbsp; This action requires you to set a &quot;triggering client field&quot; which denotes the field in which the user must manipulate to trigger the set field value action.</span> </td></tr><tr><td style="text-align:left;width:50%;"> After Field Edit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change field values and &quot;move to&quot; other fields after changing the &quot;triggering client field&quot;.&nbsp; However, the action is triggered as soon as the user &quot;leaves&quot; the triggering client field and the field value is set as long as the condition is met.&nbsp; &nbsp;This action requires you to set a &quot;triggering client field&quot; which denotes the field in which the user must manipulate to trigger the action.</span> </td></tr><tr><td style="text-align:left;width:50%;"> After Field Sourcing (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to change field values and &quot;move to&quot; other fields.&nbsp; If any of the fields being changed are used to source the value of another field, you can trigger the set field value action to be performed after that sourcing occurs, as long as the condition is met.&nbsp; This action requires you to set a &quot;triggering client field&quot; which would be the field you change that CAUSES the sourcing to occur, NOT the field that gets sourced with a value.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Before User Submit (CLIENT)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode to the user.&nbsp; The user is allowed to freely change or add field values and click the &quot;Save&quot; button.&nbsp; Upon clicking the &quot;Save&quot; button the action is triggered as long as the condition is met.&nbsp; The set field value is performed BEFORE any new data or updated data is saved to the database and BEFORE the record attempts to be saved,</span></td></tr><tr><td style="text-align:left;width:50%;"> Before Record Submit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">The record is fully loaded in the browser and is displayed in Edit mode.&nbsp; The user is allowed to freely change or add field values and click the &quot;Save&quot; button.&nbsp; Upon clicking the Save button the action is triggered as long as the condition is met.&nbsp; The set field value action is triggered BEFORE new data or updated data is saved to the database, but AFTER the save function is initiated so no more changes can be made to the record at this time.</span> </td></tr><tr><td style="text-align:left;width:50%;">After Record Submit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;"> The record is updated and changed and the Save button is clicked.&nbsp; The record is fully saved to the database with the new data, then loaded again to trigger the set field value action (if the condition is met).&nbsp; The field value is set and then the record is saved to the database again with the new changes caused by the workflow action.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Exit (SERVER)</td><td style="text-align:left;width:50%;"><span style="color:inherit;">When a transition is added to a state the record will transition to another state when the condition of the transition is met.&nbsp; As the record Exits the first state the set field value action will be triggered.</span> </td></tr><tr><td style="text-align:left;width:50%;"> Scheduled (SERVER)</td><td style="text-align:left;width:50%;" class="zp-selected-cell"><span style="color:inherit;">NetSuite has a scheduler that runs every 30 minutes checking for scheduled actions and transitions.&nbsp; If the condition of the action is met the field value will be set according to the parameters of the action.&nbsp; If it is not met it will be ignored and checked again the next time the scheduler runs.</span> </td></tr></tbody></table></div>
</div><div data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width: 200px ; height: 133.33px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } @media (max-width: 767px) { [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"] .zpimagetext-container figure img { width:200px ; height:133.33px ; } } [data-element-id="elm_cz1ht2BMRjQRgZ2M7U1XEA"].zpelem-imagetext{ background-color:#34495E; background-image:unset; border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="right" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-right zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/world-wide-web-7109276_960_720.jpg" width="200" height="133.33" loading="lazy" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgba(255, 255, 255, 0.99);">As you will see below the set field value action can be used to set the value of the field you choose by either providing a &quot;static&quot; value, getting the value from another field on the current record, getting the value from another field on a joined record OR using a formula to provide the field value.&nbsp; You can also use a saved search to &quot;calculate&quot; or source the value of this action by creating a non-stored, hidden field on the record that has it's value sourced from a saved search.&nbsp; I detail how exactly to setup this function in another blog post that you can read <a href="http://www.mgbcpro.com/blogs/post/dynamically-source-field-values-from-saved-search-results." title="here" target="_blank" rel="">here</a>.&nbsp; Make sure that you use the correct trigger with each of these options so effectively set the correct field value.</span></p></div>
</div></div><div data-element-id="elm_0CRSmP1daaUyKYOB6HSJ3w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0CRSmP1daaUyKYOB6HSJ3w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In this example the requirement is that we have a custom field on the Customer record that stores the Class segment assigned to each Customer.&nbsp; Using a workflow we want to set the Class field on all Sales Orders created to match the Class from the Customer record.</p><p>To setup this action properly, start by adding the Set Field Value action into your workflow state.</p><p><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023.png" alt="" style="width:386.2px !important;height:133px !important;max-width:100% !important;"></span><br></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">Next choose the correct Trigger you would like to use for this action.&nbsp; In this example we will use the Before Record Submit.&nbsp; This is usually considered the lowest impact to overall system performance as it does not require additional loads of the record AND it fires quickly as the record is being saved.&nbsp; Also this way you know the field value will be set successfully each time as the user cannot disrupt any actions being triggered after they submit the record</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-3.png" alt=""></span></p></div>
</div><div data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> @media (min-width: 992px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width: 200px ; height: 175.62px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width:200px ; height:175.62px ; } } @media (max-width: 767px) { [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"] .zpimagetext-container figure img { width:200px ; height:175.62px ; } } [data-element-id="elm_L-IjeEuX9M0WEytvG2eLIg"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/warning-1646872_1280.png" width="200" height="175.62" loading="lazy" size="small" data-lightbox="true"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:rgb(234, 119, 4);">One example of how a trigger can make a big difference on the data available to the set field value action is the document number or {tranid} of a transaction.&nbsp; If you have Auto-Numbering enabled for Sales Orders, the document number or {tranid} is not assigned to the record until it is saved to the database because the auto-numbering script does a lot of validations to ensure there is no duplicate numbering within the system.&nbsp; Because of this, you cannot use the document number field to set the value of another field UNLESS you use the After Record Submit trigger.&nbsp; If using Before Submit, the database does not &quot;know about&quot; the new document number yet.&nbsp; So you need to let it be saved to the database, load the record again and use the newly created document number to set the value of another field.&nbsp; This is exactly what the After Record Submit trigger does.</span></p></div>
</div></div><div data-element-id="elm_k4--IUruZdWxk2RGUXsldQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_k4--IUruZdWxk2RGUXsldQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>Now we can choose the correct Event Type and Context to meet your business use case.&nbsp; You can read more about Event Types and Contexts in our <a href="https://www.mgbcpro.com/blogs/post/workflow_triggers_eventtypes_context" title="article" target="_blank" rel="">article</a> dedicated to this topic.&nbsp; Because we do not need the Class field set every time someone views or edits a Sales Order we can use the &quot;Create&quot; Event Type to limit the impact to system performance and only set the value when the record is first created</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-2.png" alt=""></span><br></p><p><br></p><p>We will also add a condition to this action so that it only fires if the Customer Class is NOT EMPTY.&nbsp; There is no reason to try and set a field value if the sourcing field also does not have a value.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-4.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Alternatively, if you are more comfortable with building saved searches you can use a saved search condition as the criteria for your action.&nbsp; This can be especially helpful if you have a very complex condition or multiple conditions that effect this action.&nbsp; Also you can use a summary search as the condition as well which can be even more powerful to summarize data about a record and use that criteria as the basis of your condition.&nbsp; Because the criteria here is very simple we will just stick to the regular condition builder.</span></p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-5.png" alt=""></span><span style="color:inherit;"><br></span></p><p><br></p><p>Next we will use the parameters section to pick the field we want to set the value of.&nbsp; Remember this is the field we want to change the value of NOT the field we are using as the source of the value we want.</p><p><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-6.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Now we can use the rest of our parameter fields to make sure we set the correct value.&nbsp; We can leverage anyone of the vast array of options here.</span></p><ul><li><span style="color:inherit;">Static Value - set the field to the same value every time.&nbsp; There are different options for different field types (ie. checkbox, date, text, number, etc)</span></li><li><span style="color:inherit;">From Field - get the value from another field on the current record OR a joined record</span></li><li>Formula - use a formula to set the value.</li></ul><div>In this example we are going to get the value in the Customer Class field on the Customer Record assigned to this Sales Order and put that value in the Class field on the Sales Order</div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-7.png" alt=""></span><br></div><div><span style="color:inherit;"><br></span></div><div><span style="color:inherit;">As a side note a formula could accomplish the same thing, but isn't as stable as the native Record (JOIN FIELD) parameter</span></div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-8.png" alt=""></span><span style="color:inherit;"><br></span></div><div><div><span style="color:inherit;">Now the Class field will always be set to match the Customer Class on the Customer Record.&nbsp; It is worth it to note that this will again only happen when you first create the Sales Order and if someone goes back and edits the Class on the Sales Order later, then it will NOT be overwritten by the action in this workflow.&nbsp; However, you can use the <a href="https://www.mgbcpro.com/blogs/post/set-field-display-type-label-and-mandatory-actions" title="Set Field Display Type" target="_blank" rel="">Set Field Display Type</a> action to hide or disable the field so it cannot be changed after creation if that fits your use case.</span></div></div><div><span style="color:inherit;">Furthermore, if you would like to enhance the users experience you can use the After Field Edit trigger, so when the user selects the Customer on the Sales Order record it sets the Class field based on the Customer Class as the user is editing the record, however, would allow them to overwrite the sourced value with one that they set manually if you want.&nbsp; To do this use the After Field Edit trigger and select the Customer field in the Trigger Client Fields parameter.&nbsp; Then whenever the Customer field on the Sales Order is </span>Edited<span style="color:inherit;">&nbsp;the Class field will be updated accordingly.</span></div><div><span style="color:inherit;"><img src="/Tue%20Aug%2001%202023-9.png" alt=""></span><span style="color:inherit;"><br></span></div></div>
</div><div data-element-id="elm_X49BJM4uAPBZrM4EvloteA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_X49BJM4uAPBZrM4EvloteA"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As you can see just this one small action has MANY different configurations, use cases and options to help you maximize the way your team uses NetSuite.&nbsp; Fortunately, this post is 1 of 3 blog posts on the Set Field Value action.&nbsp; Because its use and setup is so expansive compared to other actions we are going to expand this into 3 Blog posts.&nbsp; Check our Part 2 on this <a href="http://www.mgbcpro.com/blogs/post/set-field-value-action-part-2" title="versatile" target="_blank" rel="">versatile</a> action that covers using the Set Field Value action in the Items sublist.</p></div>
</div><div data-element-id="elm_oFxjw0ZLb-nh1DcAuxnbZQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_oFxjw0ZLb-nh1DcAuxnbZQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 01 Aug 2023 18:06:11 -0600</pubDate></item><item><title><![CDATA[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[Workflow Instance, History and Logging]]></title><link>https://www.mavencloud.tech/blogs/post/workflow-instance-history-and-logging</link><description><![CDATA[<img align="left" hspace="5" src="https://www.mavencloud.tech/images/business-process-concept-flowchart.webp"/>When developing any automated or semi-automated process in any system, one of the hardest most tedious things can be troubleshooting incorrect results ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_DrbZDBCuQDeFdYcWr1vw-A" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BRIwv8PZTzm3LmRRRb1F0A" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_xRimkdt4QrOehwVRrmL-sw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_TyQJMHeXTdOAdzE2sZlybw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_TyQJMHeXTdOAdzE2sZlybw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">When developing any automated or semi-automated process in any system, one of the hardest most tedious things can be troubleshooting incorrect results or errors that occur.&nbsp; When writing script or code, debugging can be an arduous task for even the most accomplished developer.&nbsp; When using workflows in NetSuite, there is also a large element of debugging or troubleshooting that occurs throughout the development of the workflow and even after it has been deployed.&nbsp; Luckily, NetSuite has provided a few useful tools to help with this process.</p></div>
</div><div data-element-id="elm_EiDMOCBB5SkJwr_QDYepjg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EiDMOCBB5SkJwr_QDYepjg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>In the initial setup and configuration of your workflow there are two settings you can use to enable these helpful tools.&nbsp; They are the &quot;Keep Instance and History&quot; setting and the &quot;Enable Logging&quot; setting.</p><p><br></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-1.png" alt=""></span><br></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">With these two settings you can implement NetSuite's backend logging capabilities to help you review what happened to the record throughout the workflow and where you may have configured an action or transition incorrectly.</span></p></div>
</div><div data-element-id="elm_BaYKV2ATLbrip3s_uBt6nA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_BaYKV2ATLbrip3s_uBt6nA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Keep Instance and History</h2></div>
<div data-element-id="elm_OAr1zWJqUopp5zm0kWnpOw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OAr1zWJqUopp5zm0kWnpOw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>NetSuite offers a few different configuration settings for this function to give developers more flexibility around when and how Instance records should be kept for records within your workflows.&nbsp; The available options are:</p><ul><li>Always - which means workflow history will always be kept under the System Notes tab of the record being affected by the workflow and saved there indefinitely.</li><li>Never - the system will log the workflow history for a record while it is actively within the workflow, but once it leaves the workflow or the workflow is canceled all instance and history records will be deleted from the database.</li><li>Only when Testing - the system will only maintain workflow history for records while the workflow release status is set to Testing, but not for any other release status.&nbsp; When the workflow is transitioned to the Released status the system will log the workflow history for a record while it is actively within the workflow, but once it leaves the workflow or the workflow is canceled all instance and history records will be deleted from the database.</li></ul><div>To explain when instance and history records we will look at an Expense Report that initiated an approval workflow.&nbsp; You can find the workflow history under the System Information subtab on any record.</div><div><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-2.png" alt="" style="width:1056.28px !important;height:308px !important;max-width:100% !important;"></span><br></div><div><span style="color:inherit;">Here you can see the record began in the INITIATE state and moved through the workflow until it reached the REJECT state, where it still currently sits as there is no DATE EXITED STATE value listed.&nbsp; This is your first step into troubleshooting workflow issues as you can quickly see if the record transitioned to the correct states per your expectations as the developer.&nbsp; You can also see the date and time the record transitioned between states which can be helpful when compared to the System Notes as you can see different field values that changed and what date or time that change </span>occurred<span style="color:inherit;">.</span></div></div>
</div><div data-element-id="elm_ZXQHbvnBDmyp54CA2w9aPA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZXQHbvnBDmyp54CA2w9aPA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Workflow Logging</h2></div>
<div data-element-id="elm_LTmOo1LnqFS3GHRQC6fjcg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_LTmOo1LnqFS3GHRQC6fjcg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>To expand upon the wealth of information that workflow history records can provide you can also dive deeper into each action and transition executed in each state by using the Enable Logging feature.&nbsp; When this checkbox is checked the &quot;Log&quot; link will appear next to each workflow instance under the Workflow History sublist.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-3.png" alt="" style="width:1039.99px !important;height:240px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">When you click on this link a popup will appear that shows every action and transition contained within that state and what condition was met to trigger each action.</span></p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-4.png" alt="" style="width:1049.21px !important;height:454px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p>Here we have an enormous amount of information showing each action performed the trigger used, the condition met and even the values set by each workflow action.&nbsp; We can also see transitions and why they were triggered and in what context.&nbsp; This is incredibly helpful during the troubleshooting phase of your development to see where you might have configured something incorrectly or the logic of a condition might be a little off.</p><p>You can also toggle the &quot;Show Rejected Actions/Transitions&quot; checkbox to see actions that are setup within the workflow state, but maybe did not executed and the reason why the did not execute.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-5.png" alt="" style="width:1057.4px !important;height:336px !important;max-width:100% !important;"></span><br></p><p>This logging is the most helpful tool for troubleshooting workflow issues and errors.&nbsp; We usually recommend that you enable logging for the initial development of workflows and also for the first few weeks after deployment of any workflow to help quickly fix any issues that may arise during the &quot;hyper-care&quot; phase after implementation.&nbsp; However, once a workflow has been running successfully for a few weeks or even a few months it might be a good idea to disable logging as the workflow instance logs and workflow logs do take up database room and require system resources to create, access and maintain.</p></div>
</div><div data-element-id="elm_8NO2MoVMlU6miTWmnu_RoA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_8NO2MoVMlU6miTWmnu_RoA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true">Deleting Workflow Logs</h2></div>
<div data-element-id="elm_7eVN-Bf2JbXl3AIB2FoBuw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_7eVN-Bf2JbXl3AIB2FoBuw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>A very little known feature of workflows is the fact that you can delete or remove these logs and history records for workflows from the system if you feel they are no longer needed.&nbsp; This can be very helpful when performing system clean up efforts or just trying to remove unwanted &quot;junk&quot; from your system.</p><p>In your workflow if you hover over the &quot;more...&quot; link in the upper right hand corner you can select the &quot;Instance and History Records&quot; option from the drop down menu.</p><p><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-6.png" alt="" style="width:1053.6px !important;height:321px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">In the pop up window enter the number of months in the past you would like to keep these instance and history records, or enter zero in this field to delete ALL history records for this workflow.&nbsp; Then click the delete button.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Tue%20Jul%2025%202023-7.png" alt="" style="width:431.9px !important;height:412px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Upon </span>successful<span style="color:inherit;">&nbsp;completion of the deletion the pop up window will disappear and you can continue to configure your workflow as needed.</span></p></div>
</div><div data-element-id="elm_HTFY49tAmiEUHLGdRBk_Iw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HTFY49tAmiEUHLGdRBk_Iw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>As you can see workflow history and workflow logs can be extremely helpful to troubleshoot any issues or errors that may arise from your workflow, but make sure to only use them when absolutely necessary.&nbsp; It does not help to load your system up with years worth of workflow logs when you are only experiencing a few errors or issues throughout the year.&nbsp; It would be better to turn off logging and when issues arise try to quickly enable logging and recreate the record or transaction the same way to catch the error, then disable logging again after a fix is in place.</p><p>If you appreciated this insight into workflows or would like to learn more about workflows and other NetSuite customizations be sure to subscribe to our blog or follow our <a href="https://www.linkedin.com/company/mgbcpro" title="LinkedIn page" target="_blank" rel="">LinkedIn page</a> for more great content.</p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 21 Jul 2023 22:21:00 -0600</pubDate></item></channel></rss>