Sonoma Partners Microsoft CRM and Salesforce.com Blog

How to Plan Test Data for Testing Mobile Applications, Part 2

Today's post is written by Jen Ford, Principal QA at Sonoma Partners.

The last blog post I wrote about this topic covered the “Who” and the “What” of planning out test data for mobile apps.  Now, I will focus on the “Where”.

The “Where” – Where are your test users, and where are you?

As a tester, where you are located and where your test users are located, are integral components of mobile app testing. Like data security I mentioned in my previous post, this is another great place to look for defects. First let’s look at where your test users are.  If you have a global implementation, differences such as language, currency, and time zones can cause instability in the app if not tested properly. While difference in language and currency are fairly noticeable in a mobile app, how data syncs to a back-end system in different time zones is more subtle.

The first step is to make sure the following questions get answered:

  • What languages will this app support?
  • What currencies will this app support?
  • What time zones will the users be in?

When considering test cases for language, we will want to review the app in multiple languages. But there’s more to it than just that. Some test cases that are important to check include the following:

  • Make sure that when entering special characters in a language other than English, they display properly in the app, and in the back-end system when data is synced.
  • Make sure any text (field labels, instructions, demo modes) in the app display their special characters properly.
  • Field and label length. In some languages, the translation of a word is significantly longer than its English counterpart, or the word can translate into a multiple word phrase.  You will want to make sure these labels take up proper screen real estate in other languages, and don’t overlap other text on the app.

We have similar potential pitfalls with currency as we do language. Consider the following when writing test cases:

  • Make sure that when entering currencies other than USD, they display properly in the app, and in the back-end system when data is synced.
  • If the currency symbol is to be stored in the back-end system, make sure the correct one is associated to the value.
  • Make sure any text (field labels, instructions, and demo modes, for example) in the app displays the proper currency symbol, and the proper punctuation. For example: in USD, we’d expect to see an amount like this: $1,000.00.  In Japanese Yen, we should see it as this: ¥109,416.48.
  • Field length. Similar to language, make sure that when you enter a currency amount, that you can enter a large number. Going back to the amount in Yen, that number gets large very quick, so ensuring that those large amounts (both positive and negative) can be entered and properly stored in the back-end system is crucial to the success of a mobile app implementation.

Time Zones can be tricky if you are only dealing with a few that are close, like just the continental United States. Not taking into account time zones when testing can cause various issues with display and with actual data. Birthdates can be off by a day, policy effective and cancellation dates can be incorrect, and the ramifications of these issues are significant.  The good news is that you won’t need someone from every time zone to test if dates work across multiple time zones. You only need two: the one that you are currently in, and one additional time zone. If the test fails for the one additional time zone, it’s going to fail for all of them. Conversely, if it passes for one, it should pass in most scenarios (edge cases notwithstanding).  Here are some examples of what should be tested with time zones:

  • If someone is born on 1/1/1980, and this is logged into the app while in GMT, it should display as 1/1/1980, regardless of where the app is being accessed from in the world.  A user accessing this data from a different time zone should not impact this date whatsoever.
  • Effective and/or Cancellations dates. If you start an insurance policy, for example, your policy will have an effective date and time.  If you start your policy on 5/1/2016 at 12:00 AM GMT, then this should display in CST as 4/30/2016 at 7:00 PM, since this is the exact same time.

Regardless of the time zones that the app will be distributed to, testing with two time zones that are far apart from each other is the easiest way to spot defects, because the dates could then show as being off by one day.  I recommend whatever time zone you are currently in, and another one that has a 12 hour time difference.

The next important “Where” question, is where are you?  Where are you physically located, and where are you going with this app? This deals with how your app connects to the internet, and how it should behave when you are offline. It is important that your app is able to handle changes in internet connectivity. If this is an app that people will be taking into areas with little to no connectivity (hospitals airplanes, etc.), gracefully handling the app being online vs. offline is important. 

Here are some ways to test connectivity:

  • Test app functions (browsing, entering data, map functionality), while connected to a wireless network.
  • Test app functions (browsing, entering data, map functionality), while connected to a cellular network.
  • Test app functions while offline.

So, those seem pretty obvious, but the interesting stuff happens when you transition between each of these connection methods. To do this correctly, I recommend taking a walk (yes, a physical walk) with the app. When testing an app at work, this is a typical process that I go through:

  • Start in the office, connected to a wireless network.
  • Start walking around the office, making sure functionality continues to work, and any syncing or storing of data to a back-end system functions properly. I’d also make sure that maps are showing as I expect them to, based on my location and what other data points should be showing.
  • I’d walk out into the hallway, and wander around a bit. My wireless connection will drop and connect to a cellular network.  I want to make sure the app gracefully handles the switch, and that data entry, data display, and data retrieval are not interrupted with an unnecessary error or alert.
  • Then, I’d get into the elevator and watch my connection drop completely. Now I want to make sure that the app handles the switch to being offline. Does it display proper messaging, so that, as a user, I can visibly see that I’m offline? Does the app continue to work without crashing when submitting requests? Does any map functionality stop working and gracefully displays proper messaging to let the user know the map is not accessible (or display a stock image)? Does the app queue up requests that need to be synced to the back-end system, so that there is no data loss while working offline?
  • After my elevator ride, I’d get off and resume my connection to the cellular network. Is the switch handled well? Does my app now indicate that I’m online? If data is expected to sync automatically, does this happen now that I’m back online?
  • Then I return to my office, automatically reconnect to the wireless network, and resume testing. If I did not see any connection issues going from Wi-Fi to cellular, I wouldn’t expect to see any going from cellular to Wi-Fi, but if you’re walking that way, you might as well get some extra tests in.

Adding the “When” scenarios to your tests will start to broaden your scenarios and show you how this app will be working in real world scenarios. Enjoy the walkabout and prevent defects from entering your app once it’s live.

Happy Testing!

Topics: Enterprise Mobility

CRM Upgrade with SQL AlwaysOn

Today's post was written by Neil Erickson, Development Principal at Sonoma Partners.

As a firm that specializes in CRM consulting, we are proponents of using the technology we sell in our own processes. 

When upgrading to Dynamics CRM 2015 we went through the effort of moving to new hardware for both the CRM servers and SQL server. We decided that it was time to implement SQL AlwaysOn for redundancy.  A year later when it was time to upgrade one of our systems to CRM 2016, we elected for an in-place upgrade since both Windows and SQL remained up to date.

The upgrade process was going along without issue until the following error occurred:

System.Exception: Action Microsoft.Crm.Tools.Admin.SetReadCommittedSnapshotIsolation failed. ---> System.Data.SqlClient.SqlException: The operation cannot be performed on database "Grapevine_MSCRM" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.

Microsoft Dynamics CRM with SQL AlwaysOn

Upon reading the exception, my first thought was that we would need to completely undo the availability group and then rebuild it once the upgrade was complete.  Due to the size of the database, I expected that this could add an additional two hours to the upgrade process. 

Luckily, this process was not as lengthy as I imagined.  It was possible to go in and remove it from the Availability Group and have the upgrade process retry the action.

Remove Datasbase from Availability Group

This leaves the database running on what was the Primary Replica, and in the restoring state on the secondary.

Primary:

Primary

Secondary:

Secondary

Once the upgrade finishes you can add the database back to the availability group. Because the secondary is still in restoring mode, it will simply catch up the changes. This takes considerably less time than a full backup and restore cycle, and it can be accomplished by selecting “Join Only” for your initial data synchronization preference.

Topics: CRM Upgrade Microsoft Dynamics CRM

How to Be Awesome at Sonoma Part 1: Act Like a Pro

Awesome2This post is the first in our “How to Be Awesome” series, highlighting exemplary Sonomans who live out the different elements of our “How to Be Awesome” list.

Here at Sonoma, we seek out and encourage awesomeness. But what exactly does it mean for someone to “be awesome”? In this blog series, we’ll cover the list of attributes that we believe make up an awesome Sonoman.

First, act like a pro. This can mean a lot of things, but to us, we’ve identified the following: Be there and on time. Behave appropriately and observe proper etiquette in front of clients and key partners, acting with integrity and honesty.

It’s one thing to talk about it, it’s another thing to put it into action. Here is how some Sonomans have exhibited pro-ness:

Anthony   

Anthony Mancuso – Sales Engineer
“Anthony Mancuso handles complex, multi-hour, stressful projects with calm and efficiency. He’s a complete pro.”

“Fantastic energy and positive in each interaction.”

Why do you think “Act Like a Pro” belongs on our How to Be Awesome list?
Anthony
: One of my favorite quotes is, “Integrity is doing the right thing, even when no one is watching.” I know coming in to work every day, I’m around people who are integrity-driven professionals whether they’re in front of clients, partners, vendors, friends, or family.

Keith Mescha – Principal Architect Keith
“Keith is exceptional at understanding client needs and taking care of issues before anyone has even had a chance to notice them.”

“This guy is a champ; he is organized, knowledgeable, and effective. These qualities allow him to lead both our internal team and our client team. He supports and challenges his team and takes responsibility for his own actions.”

How do you act like a pro?
Keith
: It really comes down to having a passion for what you do and building off experiences. If you fully immerse yourself into a problem or situation and expect to be successful, you have a better chance of it happening. Humility is key. We don’t know everything nor can we be expected to. Find the right people and relationships to surround yourself with for the right help. Don’t be afraid to share and talk through your technical problems, and pay attention to what is happening around you in your field. Try things! This may lead to breaking things, but you will learn from those experiences too.

It’s important to act like a pro because we are. We get paid to do what we do, so taking responsibility, being organized, and delivery is essential to both personal and company growth.

Ariel  Ariel Upton – Marketing Manager
“Ariel does a fantastic job at organizing our conferences. I recognize it has to be very stressful/frustrating at many points throughout the process, but she pulls it off with positivity and enthusiasm and always gets results.”

“Ariel absolutely kills it! She is juggling many different responsibilities, and I don’t know how she does it…but she is amazing and inspiring.”

What does “Act Like a Pro” mean to you?
Ariel
: Acting like a pro is getting the job done through equal parts preparation and flexibility. I know my role. I know what is expected of me and required of me, and because of this understanding, I can adequately prepare to accomplish what I need to do. That being said, life happens and things can quickly change course. When a situation arises that requires me to be flexible, I know that I can pivot my attention and adapt to the situation at hand without losing my cool or my focus. 

Think you’ve got what it takes to join our awesome team of Sonomans? Check out our open positions.

Could Siri Power Your CRM App?

Today's post was written by Kyle Gerstner, Principal Consultant at Sonoma Partners.

The WWDC script has been the same for the past few years; go through Mac, iOS, Watch, Apple TV, and show off some cool new features that have been developed. 

Usually, these features are consumer focused and don't have a huge impact on enterprise mobility. That being said, something was announced this year that could greatly improve the user experience of enterprise applications.

We don't have a lot of information yet, but Apple has opened up the Siri API to developers.  This will be accomplished through a new API called Intents. This allows a developer to enable their application to respond to a request the user has asked Siri to complete. The demo during the WWDC keynote focused on consumer use cases, including examples such as hailing an Uber or sending a text message through a 3rd party application. We're excited to get more details as they come out and see if there are opportunities to trigger actions in our applications.

Let’s look at how this could impact one of our applications: Activity Tracker.

Our Activity Tracker application is built for iOS and allows you to search across CRM contacts and accounts, view basic information, record activities, and create new contacts.  While we have made every effort to make the user experience very streamlined, it would be much better to be able to ask Siri to look up John Smith's phone number, or even start a phone call to him.  Could we ask Siri to add a note to the Sonoma Partners account and dictate the text of the note?

We don't know what will be possible with this new API, but we are very excited about the prospect of it.  It also shows that Apple is becoming more willing to open up their APIs to 3rd party developers.  Apple announced developer access to a few other APIs that aren't relevant to the enterprise market, but shows their willingness to allow 3rd party applications to feel like they are built into the OS.  We hope there is more good news on the horizon.

Are you interested in learning more about enterprise mobility? Contact us to get the conversation started.

Topics: Enterprise Mobility

Script Error on Case Form in CRM 2016

Today's post was written by Angel Shishkov, Senior Developer at Sonoma Partners.

We have been doing quite a few upgrades to CRM 2016 lately and running into the occasional error or bug. In this blog post I’d like to share one that took a case with Microsoft Support to track down.

Script Error on the Case Form

We did an in-place upgrade of a 2015 CRM Online org to 2016. During the regression testing, we found a script error appearing on load of the Case form. As with other internal CRM script errors, the error report dialog does not appear until you refresh or navigate away from the page. When you click on Download Log to view the log file, you see one of the two error messages below.

Unable to get property 'getPageData' of undefined or null reference

Unable to get property 'firstChild' of undefined or null reference


In both cases, the Case form functions normally and the user is not affected, except for having to dismiss the error dialog.

Tracking Down a Fix

After spending a bit of time troubleshooting, we determined the error is from internal CRM scripts during the form load, probably related to a field on the form, and it was not caused by one of our custom scripts. We also found that the issue only occurred with Turbo Forms turned on. With “legacy form rendering” enabled, the error went away. We proceeded to open a Microsoft Support case.

Microsoft Support quickly determined it was a Turbo Forms defect related to a hidden control on the Case form. They are currently working on a fix for this issue and I expect it will be out after 2016 Update 1, which is also when the legacy form option is being deprecated.

You can read more about the Turbo Forms update in our other blog post.

Implementing the Workaround

Meanwhile, Microsoft Support provided us with a workaround. They directed us to remove the control from the form XML and the error went away. Here are the steps you need to follow to implement this workaround yourself.

  1. Create a CRM solution and add the Case entity to it. Do not add any of the dependencies. Export the solution as Unmanaged.
  2. Make a copy of this solution file and store it - always good to have a backup.
  3. Unzip the exported solution file and use a text editor like Notepad to open the customizations.xml file.
  4. Search within the file for “CaseResearch_LinkControl”. You should find two occurences of this control.
  5. For each occurrence of “CaseResearch_LinkControl”, select and delete the entire parent row of the control. The entire row XML should look something like this:

  6. Once you have deleted both <row> sections, save the customizations.xml file and add it back into the exported solution zip file.
  7. Import your updated solution zip file back into CRM and publish.
  8. This will resolve the script error, though you may need to clear your browser cache and/or restart your browser.
  9. Microsoft Support did not clarify what this hidden control is used for, but you will have a backup of your original Case form in case you want to put it back after it is fixed.

 

Better Integrate Your Email With Salesforce with SalesforceIQ Inbox

Today's post was written by Caitlin Pfeiffer, Principal Consultant at Sonoma Partners.

SalesforceIQ is a product that Salesforce launched last year and includes the following two offerings:

  • SalesforceIQ CRM: a lightweight CRM offering intended for small businesses
  • SalesforceIQ Inbox: a suite of mobile and desktop productivity apps that helps users to better integrate their email inboxes with the Salesforce Sales Cloud

As we typically partner with clients looking to implement Salesforce, this blog post will focus on the SalesforceIQ Inbox functionality which is a great complementary product for existing Salesforce Sales Cloud users. 

The most common use case for SalesforceIQ Inbox that I see with my clients is providing email integration with Salesforce from your mobile device. 

Without SalesforceIQ Inbox, when you send emails through Salesforce1, they are sent through your mobile device's mail program and will not be logged within Salesforce. Often for mobile sales teams, a lot of their day can be spent on their mobile devices reading and sending emails with customers and prospects. Having these email interactions logged within Salesforce is critical to maintaining a 360-degree view of that customer within your CRM platform.

Although it offers much more, I often describe SalesforceIQ as the "Salesforce for Outlook" for your mobile device. Similar to Salesforce for Outlook, SalesforceIQ Inbox will allow user to:

  • Easily log incoming and outgoing emails in Salesforce
  • View suggested Salesforce records related to the email based on the email addresses in the message
  • Search for any additional record (custom or native) in the Salesforce to relate your emails to
  • Create new Salesforces Contacts/Leads/Opportunities/Cases/Tasks from your email inbox

Beyond the capabilities that Salesforce for Outlook offers, SalesforceIQ Inbox also provides a lot of other cool features that provide significant value to your sales team. I'll focus on the features that I most commonly hear from my clients:

  • Salesforce Email Templates: From your email inbox (mobile and desktop), users are able to use Salesforce Email templates. Users are able to select the Salesforce records that the email is related to in order to ensure that email merge fields are populated correctly.  This functionality is not available with Salesforce for Outlook or Salesforce1 but is a very common use case for many of my clients.
    1

  • Smart Scheduling: When trying to set up a meeting, users can share their availability with their customers and allow them to select a time based on their availability. The customer will select a time by click on a link in an email which will automatically add a meeting invite on your calendar and send them a meeting invite email as well. NOTE: This functionality does not integrate with Salesforce events.
    2

  • Read Receipts: Users can receive read receipts on emails that are sent from SalesforceIQ. This will allow user visibility into whether customers are looking at their emails and drive their follow up actions.
    3

  • Integration with Salesforce1: Although users can see high level information about their Salesforce records in SalesforceIQ Inbox, users can easily launch Salesforce1 to view or manage their full Salesforce record. What I love even more is from Salesforce1, when users select the standard "Send Email" quick action, it will allow them to launch SalesforceIQ Inbox to send the email instead of using their mobile device's mail program.
    4

  • Cloud File Storage: Users can easily access and send email attachments from their email inbox, Google Drive, Salesforce Chatter Files, Box, Dropbox, and iCloud.
    5

  • Desktop Apps: All of this functionality is also available through Desktop apps for Office 365(Outlook Add-In) or Gmail (Chrome Extension).

If your company is interested in using SalesforceIQ Inbox, there are a few other things you should consider:

  • SalesforceIQ Inbox does require an additional license (pricing available on com)
  • The SalesforceIQ mobile app (available for iOS and Android) is a separate mobile application. However, this mobile app integrates seamlessly with Salesforce1. 
  • SalesforceIQ integrates with your Microsoft Exchange (2010, 2013, 2016), Office 365, or Gmail inboxes. Other email providers are not supported.

If you have any questions about SalesforceIQ Inbox, please contact us.

Topics: Salesforce.com

Microsoft Announces Dynamics 365 Integrated Cloud Platform

Today's post was written by Kayla Silverstein, Marketing Specialist at Sonoma Partners.

A rivalry well-known in the CRM space: Microsoft Dynamics vs. Salesforce

Microsoft took a significant step to improve its CRM solution and upstage its cloud-based competitor with the announcement of a new application: Microsoft Dynamics 365.

Available this fall, Microsoft Dynamics 365 combines Microsoft Dynamics CRM and ERP cloud solutions into a single cloud service. New purpose-built applications within the tool help manage specific business functions, including Financials, Field Service, Sales, Operations, Marketing, Project Service Automation, and Customer Service.

Microsoft addressed the launch of their new solution with the following:

“Business processes are at the core of every business. Across all industries our customers are looking to adapt their customer engagement and business operations processes to the digital era, to secure and expand their businesses. This ‘digital transformation’ requires a degree of business process agility – and a unification across the business – not supported by the traditional ‘siloed’ ERP and CRM approach of the past.”

The unveiling of Dynamics 365 provokes interest within the CRM world for a variety of reasons:

  • It demonstrates the increasing demand for CRM within a cloud environment.
  • It represents the need for an integrated business solution and the desire to simplify the massive amount of tools businesses are expected to utilize.
  • It shows that Microsoft understands the need to be nimble in the CRM world to compete with other market leaders.

Microsoft also recently announced their intention to acquire LinkedIn. The ability to combine CRM, ERP, Office 365, and LinkedIn is a useful one, and it could stand to give Microsoft a bit of an edge over industry rivals Salesforce and Oracle.

One thing is for sure: the real winner is the consumer. As these companies compete fiercely for market share, the consumer will benefit from ongoing innovation and acquisitions.

Topics: Microsoft Dynamics CRM

How to Build Interactive Dashboards in Dynamics CRM

Today's post was written by Nick Costanzo, Principal Consultant at Sonoma Partners.

By now, most organizations using Dynamics CRM for service management have become familiar with the Interactive Service Hub which includes built in dashboards for Tier 1 &  Tier 2 support, as well as Knowledge Managers.

However, if you’re in a different roll, such as an account manager, there are no pre-built dashboards at your disposal.  Fortunately, CRM allows the creation of additional interactive dashboards to meet the needs of all CRM users, and provide them with actionable data. Some common requests we hear include:

  1. Show me critical cases for my account
  2. Highlight the last date me or someone from my team contacted my account
  3. I need to categorize my accounts by priority

Here are a few simple steps to satisfy these requests:

  1. Create a new interactive account dashboard.

    1

  2. Select a multi-stream dashboard with 3 column layout.

    3 column layout

  3. For this example, I’ve also added 2 new fields on accounts:

    a. Open Priority Cases – A rollup field to update the number of open cases with a priority of Critical or High at any given time.
    b. Last Contacted Date – A date field updated via workflow or plugin when new activities created for the account.

  4. Next I created 3 new account charts:

    a. Priority Cases by Account
    b. Account Last Contacted Date
    c. Accounts by Priority

    3 charts

  5. Finally, added 4 data streams to the dashboard:

    a. My Active Accounts which will actively filter based on what the I select on the charts above.
    b. Open Priority Cases to view and drill into the case details.
    c. My Active Contacts to view individuals I can reach out to at these accounts.
    d. My Appointments to view which appointments I have scheduled and plan my meetings based on priority.

    4 data streams

  6. Once these are completed, I can publish all customizations and begin using the dashboard.

    Full Dashboard

Now any account manager can log in to view the accounts they own and interact with the data in CRM.  For example, I can click on the 1 priority case for A. Datum, see that I’ve just contacted them last week, then decide on the appropriate time to follow up with the customer:

A. Datum

Similarly I can drill into my top accounts and the other charts will filter based on my selection so I can take action on the data presented to me. 

A few limitations to note, the dashboards are limited to the standard entities posted here, along with custom entities.  Hopefully in the future additional standard entities such as opportunities will be included to further extend this interactive experience. Additionally, these dashboards need to be accessed via the interactive service hub, so it would be nice to see them extended to the core CRM areas in the future. In the meantime, happy interacting with CRM!

Topics: Microsoft Dynamics CRM

Where are my Voice of the Customer Survey Responses?

I previously wrote a post about the basics of the new Dynamics CRM 2016 Voice of the Customer feature (also known as surveys for the common ear).

However, in my testing I’ve seen instances where my Survey Responses weren’t being created in Dynamics CRM. Remember, this feature is using Azure Web Services so that the Survey and Response Data are synchronized between Dynamics CRM and Azure to take the heavy survey workload off of your transactional Dynamics CRM database.  Therefore a delay in responses getting created is expected, but not a delay of hours or days like I had seen.

In order to see if your VoC jobs are running correctly, go to to Settings –> System –> System Jobs.  Perform a quick search for v* to pull back jobs that begin with the letter v.   What I saw were that there didn’t appear to be a system job running for the past month.

If you do come across this scenario, below are a few things you can do to get your Survey Responses to appear in CRM.

SNAGHTML2904ea6

Retrigger Response Processing from the Solution

The simplest fix is to navigate to the Voice of the Customer Solution (Settings –> Customization –> Solutions –> VoiceOfTheCustomer).  From the Configuration Page, you should see a link to “Retrigger response processing if responses are not received within 15 minutes of being completed” – click that and you should initiate a pull from Azure to pull this data back into Dynamics CRM.

image

Look at the System Jobs

Another thing you can do is open up your most recent Voice of the Customer System Jobs to see why they stopped.  In my example below it appeared as if a record in the system that was needed for the workflow was deleted.  In this example the check statement is checking the Voice of the Customer Configuration record so it appears as if that record may have been deleted at some point which caused the workflow to fail and stop processing.  This leads me to the next resolution step.

image

Delete and Recreate the Configuration Record

The Voice of the Customer Configuration record may have been deleted / manually recreated.  However, the only supported way for the Voice of the Customer solution to successfully process and return survey results to Dynamics CRM is to have the configuration record created from the Voice of the Customer Solution. 

Therefore if you have a Configuration record currently (which may had been manually created by someone), you need to first off delete this Configuration record. 

Note:  Before you do so, make note that when you delete this record and recreate it, you’ll need to recreate your surveys as the existing surveys will no longer work.  They’ll work in a sense that users will be able to hit them and fill them out, but results will no longer ever be returned to them.  This probably isn’t a big deal because the reason you’re going through this troubleshooting is because the records weren’t being returned in the first place.

Navigate to the solution in Settings –> Solutions –> Voice of the Customer.  On the Configuration tab of the solution, go through the same process you did when you initially setup Voice of the Customer which is check off the agreement to the terms and conditions, and then click on Enable Voice of the Customer. 

image

If you navigate to System Jobs once again, and filter on those that start with v*, you should see the workflows running successfully periodically and your survey responses should start to flow in for your new survey.  Remember, your old survey and workflows you created with the old survey email snippet will need to be recreated so new survey responses can start to be processed.

image

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Working With and Around Rollup Summaries

Today's post is written by Emily Matthews, Principal Consultant at Sonoma Partners.

One of the core building blocks used in configuring a more robust environment is the rollup summary.

Anytime you create a master-detail relationship in Salesforce you can easily summarize data across two objects through rollup summaries. Just today I created a rollup summary to count how many active locations I had associated to a license agreement. This is an incredibly useful tool. However, the rollup summary is not the “one-stop” shop of cross-object counting. What if I want to show the total value of all opportunities a contact has been associated with? A native roll-up summary field isn’t going to help me here because there is not a master-detail relationship between the two objects.

The other pitfall associated with the native rollup summary functionality is the limitation on the number of rollup fields a user can have on a specific object. Prior to the Winter ’16 release this was 10, thankfully it has been increased to 25, but I’ve still worked in instances where that doesn’t always suffice.

Over time we’ve found a few different ways around this frustrating roadblock, one of which is the Declarative Lookup Rollup Summary tool. This tool allows the user to create rollup summaries declaratively through lookup relationships. It also allows the user to filter records that rollup, so if I use the same example and want to display the total value of opportunities that a contact has been associated to, I could even take it a step further and filter the opportunities that roll up to a specific set of status values, like only sum opportunities that are closed won or in negotiation.

Working With and Around Rollup Summaries Salesforce

We’ve used this application on a recent customer who wanted to roll up opportunity amounts onto an account but only for the fiscal year or previous fiscal year. The only way to bypass the need for an application like the declarative lookup rollup summary tool would consist of an admin going in each year to update fiscal year criteria; this workaround alleviates the need for that.

Another solution we’ve used in recent projects has been the Rollup Helper tool. Filling a similar void, this package also allows users to rollup data outside of the native master-detail relationship requirement, but comes packaged with some visualforce pages that enhance the UI. Both of these packages allow for batch updating and real time updating (albeit at a potential performance cost) which helps diversify the types of problems they can solve.

Salesforce Select Source Field

What I’ve found as the most powerful feature associated with rollup summary “workarounds” is the ability to have dynamic filters on my rollup data. I can set my total value of opportunities on a contact to be limited within the fiscal year. Tools like these can allow a single Salesforce record to be a one-stop-shop for the data your end-user needs.

Topics: Salesforce.com