<?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/suiteanalytics/feed" rel="self" type="application/rss+xml"/><title>MavenCloud - Blog , SuiteAnalytics</title><description>MavenCloud - Blog , SuiteAnalytics</description><link>https://www.mavencloud.tech/blogs/suiteanalytics</link><lastBuildDate>Fri, 23 Jan 2026 01:30:26 -0800</lastBuildDate><generator>http://zoho.com/sites/</generator><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[Dynamically Source Field Values from Saved Search Results]]></title><link>https://www.mavencloud.tech/blogs/post/dynamically-source-field-values-from-saved-search-results</link><description><![CDATA[See how to leverage saved searches and workflows to elevate your automation game.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm__JjJsoIbQdCL6j8XY8625w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_VQfi_uzlR0S-nJwGH4KUGQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_c7XDzwnNRqS44NRFgmLfTA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_Msf2Yvz_SVynzbPhJOWwzw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Msf2Yvz_SVynzbPhJOWwzw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">One of the unsung heroes of Netsuite is part of the core SuiteBuilder module where you can use a saved search to dynamically source the value of a custom field.&nbsp; This means you can use a saved search to calculate a value, then this will be dynamically displayed on the record in your custom field.&nbsp; To do so first we need to build a saved search with the following criteria:</p><ul><li style="text-align:left;">It must be a summary search with only one result column</li><li style="text-align:left;">It must have at least one standard criteria</li><li style="text-align:left;">It must have a filter</li></ul><div style="text-align:left;">Let's build this together to calculate the total sales of each sales rep so users can see their total sales and possibly use this value in a Sales Commissions workflow down the road.&nbsp; First our saved search will be a transaction saved search and the criteria should include only Posting transactions that effect revenue.&nbsp; We have also added criteria to filter out Freight Revenue as that does not count toward our Sales Reps goals.&nbsp; (NOTE - the cool thing here is the field that will display this data will be an Entity field on the Employee record even though this search is a Transaction Search.&nbsp; This is an awesome feature that allows you to link data across record types as long as there is some field on the record type used in your saved search that links to the record type you want to display the data on.)</div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023.png" alt=""></span><br></div><div style="text-align:left;"><br></div><div style="text-align:left;">Next in the results we can add a few columns like Date, Document Number, Type, Sales Rep and Amount</div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-1.png" alt=""></span><br></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Next we need to make this a summary search so we will add the Summary Type of SUM to the Amount column</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-2.png" alt=""></span><br></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Next, we need to add a filter to this search so we will add the Sales Rep field as a filter here.&nbsp; (NOTE - You do not need to check the Show in Filter Region box for this to work, but you can if you want.&nbsp; It does not hurt the functionality to have it checked)</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-3.png" alt=""></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;">Lastly, be sure to add the correct </span>permissions<span style="color:inherit;">&nbsp;under the Audience subtab or mark the search as Public if you would like.&nbsp; Now when we save the search it should only show one value which would be the total of ALL sales, but the trick is the filter we added will be dynamically sourced the the record that we add the custom field to in the next steps.</span></div><div style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-4.png" alt="" style="width:1054.1px !important;height:199px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div><div style="text-align:left;"><span style="color:inherit;"><br></span></div></div>
</div><div data-element-id="elm__W4FIaK0OO8FPQ7UMH1ZSg" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm__W4FIaK0OO8FPQ7UMH1ZSg"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_P35dJM69OoBDu6wRURQp4g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_P35dJM69OoBDu6wRURQp4g"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>The next step is to build your custom field that will sit on the Employee record.&nbsp; To do so navigate to Customization &gt; Lists, Records and Fields &gt; Entity Fields &gt; New</p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-5.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Enter a name and ID for your field then select the Currency type. (NOTE - you can also use Decimal Number as well)</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-6.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Next we need to select the Employee record under the Applies To and UNCHECK the Store Value box.&nbsp; This is key to getting this to work so make sure you uncheck this box so NetSuite can dynamically source the correct value every time the record is loaded.</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-7.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">The last step is we need to add the saved search we made under the Validation &amp; Defaulting subtab</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-8.png" alt="" style="width:672.85px !important;height:221px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">Once saved you can view the Employee record to see the value automatically populated.</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-9.png" alt="" style="width:1053.6801px !important;height:517px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><br></p></div>
</div><div data-element-id="elm_VJ1jYun13rp7GwS23GcO7Q" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_VJ1jYun13rp7GwS23GcO7Q"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_YXNdlug_vDi53uwYAycgAQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_YXNdlug_vDi53uwYAycgAQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>While this is incredibly helpful when viewing records we run into a problem in that this field is NOT reportable.&nbsp; Meaning it does not display a value when added to a report or saved search.&nbsp; This is because we unchecked the Store Value box on the custom field configuration.&nbsp; This is because the value cannot be dynamically sourced if it is stored, BUT if it is not stored then it cannot be reported on.&nbsp; To overcome this &quot;catch 22&quot; we can leverage workflows.&nbsp; Then nice thing about workflows is any non-stored field is still dynamically sourced during the workflow execution and then can be used as a condition or even used to set the value of another field.</p><p>To do this we need to first create a saved search that will trigger our workflow.&nbsp; The criteria of this workflow would be any Employee that is a Sales Rep. (NOTE - The results and filters to do not matter in this case, but you can customize those as you feel comfortable.)</p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-10.png" alt="" style="width:1050.5601px !important;height:433px !important;max-width:100% !important;"></span><br></p><p><span style="color:inherit;">The make another Custom Entity Field that will be used to store the value being calculated by the saved search.&nbsp; Be sure to keep the store value box checked.&nbsp; (Make sure the field type matches the field type you created in your non-stored field).</span></p><p><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-11.png" alt="" style="width:1049.6px !important;height:412px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Lastly, create a scheduled workflow based on the Employee record and use your saved search as the criteria.&nbsp; Also setup the frequency you would prefer.&nbsp; We will use Daily at 11:00pm, so every night the total sales will be calculated and stored.</span></p><p style="text-align:center;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-12.png" alt="" style="width:554.32px !important;height:419px !important;max-width:100% !important;"></span><span style="color:inherit;"><br></span></p><p style="text-align:center;"><span style="color:inherit;"><br></span></p><p style="text-align:left;">In the first State add a Set Field Value and use the Entry trigger.&nbsp; (NOTE - We do not need to use any extra Conditions, Contexts or Event Types as this is already controlled by the Saved Search and Schedule we setup in the previous steps)</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-13.png" alt=""></span><br></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;">In the parameters find your stored field and then use the From Field parameters to set the value from your non-stored field</span></p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-14.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;">Then save your workflow.&nbsp; Now every night at 11:00pm the workflow will run on ALL employee records where Is Sales Rep = T.&nbsp; The Employee Total Sales field will be calculated from the first saved search we built, then the calculated value will be stored in the Employee Total Sales (stored) field.&nbsp; This way you can report on the stored field in other saved searches or reports.&nbsp; You can also set the frequency of your workflow to be more often if you need more &quot;real-time&quot; information.&nbsp; This same concept also works in Event Based workflows but requires a user to create or edit the record to trigger the workflow to store the new value.</p><p style="text-align:left;"><br></p><p style="text-align:left;">One other thing to note is you can set the field display type of the non-stored field to &quot;hidden&quot; in the field configuration and that field will not be shown to users as they view employee records but still can be accessible to workflows as normal.</p><p style="text-align:left;"><span style="color:inherit;"><img src="/Wed%20Aug%2002%202023-15.png" alt=""></span><span style="color:inherit;"><br></span></p><p style="text-align:left;"><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">This little trick is an amazing leap forward in automating and optimizing data throughout your system, as you can now automatically calculate and store data between many different record types with your NetSuite environment.&nbsp; Be sure to <a href="https://www.linkedin.com/company/mgbcpro/" title="follow us" target="_blank" rel="">follow us</a> and check back often for more great tips and tricks to help you maximize your NetSuite investment!</span></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 02 Aug 2023 16:03:43 -0600</pubDate></item><item><title><![CDATA[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></channel></rss>