Sonoma Partners Microsoft CRM and Salesforce Blog

Top 3 Takeaways from D365 July 2017 Executive Update – Day 1

Today's blog post was written by Aaron Robinson, Solutions Architect at Sonoma Partners.

It’s that time of year again – time for hitting the beach, firing up the grill, and listening to 9 hours of content from Microsoft on what’s coming to Microsoft Dynamics CRM in the upcoming release. Truth be told, I didn’t have the patience to watch it live, but thankfully Microsoft recorded all the sessions for you (or me) to watch at leisure. And since we are having a rain storm this very moment, what a perfect time to watch and share with you my top 3 takeaways from day one of the executive briefing.

Before we get going, I want to emphasize that the content discussed during these demos are for pre-release features. While it’s great to get excited about what they are presenting, its best to keep a level head about it. Features are likely to change while in development or testing, or shifted to a later time frame due to release schedules. So, don’t base your purchasing decisions on the content you see here, but rather what is available at the time you are buying. You’ve been warned.

#1 – A True Unified Client

If you are a current user of Dynamics CRM – both the web and mobile app, this is going to make a lot of sense to you. Otherwise just take our word for it. This is a big deal! The web app offers one experience – which saw its last major update in 2013, and was coined the modern experience. It was a dramatic shift from previous versions, but generally accepted as a good change. What was missing in 2013 was a consistent mobile experience across platforms, but that was added in the last 24 months. Today what we have is a full web experience, and a different (but similar across device platforms) mobile experience.

Aaronrob 1_800

Microsoft’s new direction is to unify the experience across all modes and devices regardless of how the user interacts with D365. The inference I’m drawing here is that this isn’t the proverbial lipstick on a pig, or reskinning of the interface to simply “look” similar.  A quick side note: In the slide above, I thought it was very interesting to pick out that all the devices represented are form factors for Apple devices. There was a time where that was very taboo, but not at Satya’s Microsoft.

Microsoft is reviewing the way all controls in the application are written, consolidating controls where there may be multiple ways of viewing the same data, so that a single control can be used.  There is also a significant push to make sure the interface meets accessibility standards from Microsoft, to ensure that the product is available to everyone.

Aaronrob 2_600

A great example they used was the concept of grids. They are consolidating the different types of grids (search, sub, associated, even web and mobile) into a single grid control that can adapt to all of these modes.  This allows the system admin to use a single control and configure once across the interfaces, and the control will intelligently handle the presentation and interaction of data, something the presenter refers to as reflow. The benefits they are billing here is faster development, single deployment, and interface consistency. While they didn’t show this live, the screenshots provided showed a visually pleasing interface, addressing some of the most common issues like uniformity of font, elimination of extra white space, and better text wrapping (hallelujah!). I really like the subtle shading of headers both on the record form and the individual sections, as well as the use of borders around sections. It gives a sense of order to the application, something that was severely missing in the current styling of the interface. For the most part I think everyone will really welcome the UI improvements across the application.

Aaronrob 3_700

#2 – Seriously Seamless Offline

As a partner that has a mobility practice and understands what it takes to build a full offline client, take my word for it that offline capability is critically important to a mobile deployment.  In fact, for the custom apps we build for our clients, we strongly recommend and convey as a best practice the need for offline in a mobile client.  Our clients use cases range from airports to hospitals to large warehouses, and from urban areas to very rural communities.  You can’t always count on a connection, even in the US where we generally have good cellular coverage.

The Dynamics mobile app recently had been very limited for offline – both for read and create operations. What is coming is a significant overhaul to offline mode, something dubbed as the “seamless sync” client. The most significant part of this functionality is the addition of an Azure middleware component which orchestrates the sync process for the client and the core application. Since the work here of dealing with conflict resolution and incremental sync is pushed to the cloud, it should provide for a much better user experience in terms of a lighter weight and better performing client.  Additionally, the promise of a unified experience carries across to the offline experience. Expect the user interface to be identical in form and functional regardless of connectivity, aside from a status indicator for the user as to which mode they are in.  Also, the existing app should upgrade seamlessly to the new client when available.

Aaronrob 4_500

Feature-wise they are covering many of the bases related to offline access, including background sync, data download scope based on profile, conflict management, simplified setup, and online provisioning/deprovisioning.  One important item to note about the new mobile offline framework is we are hearing that this will only be available in production level instances only.  You will not be able to setup offline sync with a developer instance because of the Azure resource component.  Keep this in mind when determining your supporting environments for development, testing, and production, as you may need to license a production level instance of Dynamics 365 for development or user acceptance testing scenarios.

#3 – Putting the Dash in Dashboards

I know, that heading was a really bad pun.  But the time savings improvements to be introduced for dashboards are the complete opposite of bad.  In fact, they are pretty great. Dashboards are probably the most universally used reporting aspect of D365, and have now been around since the 2011 product version. There has been some minimal improvement, such as making dashboard security profile aware.  With this release, we will have some major enhancements which have been needed for quite a while.

The first major improvement, while not necessarily a dashboard improvement in itself, is the addition of more types of charts.  While charts have long supported editing the XML to change the look and interactions of the chart far beyond what the GUI allows you to set, these new chart types are a welcome change. Some of the chart types appear to come from the Interactive Service Hub (ISH) which was previous available in D365.

Aaronrob 5_600

The second major improvement, and arguably where current and future D365 customers will gain the most benefits, is also a borrowed concept from ISH.  This was referred to in a couple of different ways on the call such as a “bonded” or “filtered” dashboards.  The concept here is that in the definition of a dashboard, you can define global criteria which will allow you to filter all of the components on the dashboard using that filter criteria.  The potential I’m drawing here is best represented in a scenario. A manager can have a single dashboard with multiple components, and be able to select a user that reports to him/her and have the individual components on the dashboard filter down to that selected user.  Currently that same manager would have to create individual dashboards with personal views, which for six direct reports means creating 6 copies of the views, charts, and dashboard.  The new model will allow the manager to have a single dashboard for all six reports.  For organizations with hundreds or even thousands of users, this is a major savings in time and effort to manage.

Bonus: Multi-select option sets (picklists)

I’m not sure I need to really explain this one, but Dynamics admins and users around the world will rejoice at the addition of this feature.  On the Salesforce side, this has long be available, and I can’t tell you the man hours that have been spent over the years on creating solutions to emulate the multi-select option set.  It will be interesting to see Microsoft’s approach and the affect it have to related features like the quick find view and advanced find.  Regardless its nice to see this feature finally making its way into product development and out for public release.

There were other topics covered on the call as well, such as the significant updates to ISH, enhanced email editing, field service enhancements for scheduling, service improvements for chat and bot integration, social engagement and social selling. You can enjoy all of the day one CRM goodness by watching the full video.  Time to get a little more summer fun in before the full release! Cheers!

Topics: Microsoft Dynamics 365

Sonoma Partners Achieves the 2017/2018 Inner Circle for Microsoft Dynamics

For the ninth consecutive year, Sonoma Partners is proud to be designated as a Microsoft Dynamics Inner Circle partner.

Sonoma Partners has once again achieved the prestigious 2017/2018 Inner Circle for Microsoft Dynamics. Membership in this elite group is based on sales achievements that rank Sonoma Partners in the top echelon of the Microsoft global network of partners. Inner Circle members have performed to a high standard of excellence by delivering valuable solutions that help organizations achieve increased success.

Au 1

2017/2018 Inner Circle members are invited to the Inner Circle Summit, taking place in fall 2017 where they will have a unique opportunity to share strategy and network with Microsoft senior leaders and fellow partners.

This recognition of Inner Circle for Microsoft Dynamics came during Microsoft Inspire (formerly Microsoft WPC), the annual premier partner event, which took place July 9-13, 2017 in Washington, D.C.. Microsoft Inspire provides the Microsoft partner community with the opportunity to learn about the company’s road map for the upcoming year, establish connections, share best practices, experience the latest product innovations and learn new skills.

“Each year we recognize Microsoft Dynamics partners from around the world for delivering innovation and driving unsurpassed customer success,” said Ron Huddleston, CVP, One Commercial Partner. “Our Inner Circle members are chosen based on their capabilities as an organization, whether that’s creating IP, developing solutions, or having an industry leading focus on digital transformation. Microsoft is honored to recognize Sonoma Partners for their achievements this past year, their dedication to their customers, and their innovation with Microsoft technologies.”

Topics: Microsoft Dynamics 365

What's the Marketing Buzz? Tell me what's a-happening.

Today's blog post was written by Jeff Meister, Principal Consultant at Sonoma Partners.

The D365 community has been eagerly discussing the new marketing solution to be offered with the upcoming July 2017 Update for Dynamics 365. This update is being coined as the 'largest ever,' and we at Sonoma Partners couldn't be more excited.

Of the new features and apps, I am personally most excited about the Dynamics 365 for Marketing, Business Edition solution. Since the solution hasn't been released for Preview yet, we still have quite a few questions, but I wanted to take some time to talk about my understanding, and remind you that all of this is under ‘safe harbor’ until the app is officially released.

The functionality expected in the first release is impressive, and is currently expected to include:

  • Email Marketing
    • Drag and drop editor
    • Inbox Preview
    • Insights and Email tracking
    • Visualization reporting
  • Event Management
    • Registration, Sponsorship, Session and track, Attendance tracking
    • Venue management
    • Webinars with ON24 integration
    • Event portal
  • Landing Pages
    • Drag and drop editor
    • Ready to use forms and templates
    • Behavior tracking
    • Subscription center tracking
  • Lead Management
    • Multi-channel mapping of customer journeys through a drag and drop editor
    • Lead nurturing
    • Lead qualification
    • Lead scoring and prioritization
  • LinkedIn Lead Gen connector
    • Out of the box integration with Leads created via LinkedIn Lead Gen Forms
  • Advanced Reporting and Analytics

Also note, the app is built natively within D365, meaning no connector or integration with 3rd party platforms. The setup and configuration of the new app is supposed to happen with simplicity and ease.

While the details above are great, there are still some unknowns that are worth mentioning:

  • Cost
  • Release date
  • How D365 for Marketing differs from the Adobe Marketing Cloud offering?
    • What we would really love to see is feature comparison across the two solutions so we can understand where D365 for Marketing stops and Adobe Marketing Cloud starts.
    • I look at this both from a features/functionality perspective, as well as a performance and send volume perspective.

Some key questions are still outstanding, but I expect to hear more on these topics from Microsoft in the near term. I plan to have a follow-up post in the next few weeks with clarifications and additional details around the above topics.

All-in-all, we are extremely excited about the new offering Microsoft is putting together. The level of investment in a product like this shows Microsoft is truly working to make D365 a best-in-breed solution.

Topics: Microsoft Dynamics 365

Making Your Entities Pop: How to Efficiently Create and Maintain Entity Icons

Today's blog post was written by Mike Dearing, Principal Developer at Sonoma Partners.

Before recently, I had never put much thought into the image choice for a custom entity. As long as the end result of a long day of customizations wasn’t an ode to cog wheels, I figured things were good enough. I’d pop open a local fileshare, find an image that somewhat related to what my entity represented, associate the web resource, and call it a day. Although this wasn’t necessarily a bad practice, as long as I stayed fairly consistent with my own changes, once others would start doing their own customizations noticeable differences started to arise. It could be something as simple as the padding around the image being a couple of pixels different or something as drastic as an image that didn’t look like a CRM icon at all.

I knew that if there was any chance to rectify this, I had to answer two questions:

  1. What constitutes an acceptable entity icon?
  2. What is an efficient method to find or create these icons?

What constitutes an acceptable entity icon?

To answer this question, I looked to Dynamics. At the end of the day, if our icons look as close as possible to native Dynamics entity icons, we’ll be in good shape. Dynamics requires you to specify 2 entity icons, one that is 16x16, and one that is 32x32.


  • Used in several places throughout the system, such as lookups and grids
  • Some are still colored, but mainly gray
  • No padding
  • Transparent background


  • Used in the sitemap
  • White
  • ~3 pixels of padding
  • Transparent background

What is an efficient method to find or create these icons?

Now that we’ve established what is acceptable, we need to determine how to easily enforce these standards. Several coworkers had been using SyncFusion Metro Studio, a free icon manager (both to use, and to distribute the resulting icons) for their icon needs, so I decided to look into it further. The tool itself is straight forward: search for an icon by name, or sift through categories. As an added bonus, the images are also tagged by similar words or concepts, so searching for ‘person’ or ‘people’ has a chance to pull up the same image.

Everything noted so far isn’t all that different from just grabbing your image out of a local fileshare. However, Metro Studio comes with the nifty ability to drag icons into a grouping called ‘projects’. In my case, I went ahead and made a 16 project, and a 32 project. Each time I found a suitable image, I’d drag it once into the 16 project, and once into the 32 project.

Mike dearing 1_800

Within the 16 project, I’ve sized each of my images to 16x16 pixels, set the padding to 0 pixels, set the background to transparent, and grayscaled them to the same value. I chose #FF666666, though most gray variants look decent for these images.

Mike dearing 2_800

Within the 32 project, I’ve sized each of my images to 32x32 pixels, set the padding to 3 pixels, set the background to transparent, and left the images white.

Mike dearing 3_800

Once I’ve finished selecting my images, I can choose the export option from each project, and mass export all to an icons folder which can be source controlled (the method is up to you here – we use Git, but any repository or fileshare will do) along with the Metro Studio project files, and brought up Dynamics via a web resource uploader of your choosing.

You are now able to maintain consistent styling throughout your icons and can quickly react the next time Dynamics has an icon style change by being able to mass update, export, and reupload your entire icon library within minutes.

Topics: Microsoft Dynamics 365

Power BI Accelerator for Dynamics 365 Update

Today's blog post was written by Keith Mescha, Principal Architect at Sonoma Partners.

In case you missed it, back in June we release a tool for helping you with using your Dynamics data in Power BI. Please read the original blog post for more details or watch our video overview on our YouTube Channel. I also covered this topic on the CRM Audio podcast.

The community response to this tool was great, and we received some feedback that we have incorporated into a fresh build. V1.1.7 was released and our download page has been updated with this version that addresses these key areas:

  • Datetimes will actually be of the datetime type in Power BI (you don’t need to do any conversion, we do that for you).
  • If the query you run has no data, an empty table will be generated with the correct column headings. Previously an error saying that “Column1 does not exist” was popping up.
  • There was an unreported error that sometimes the URL being generated was incorrect. For example, /actioncard instead of /actioncards.
  • The entity list was sometimes not in Alpha order. It now is sorted correctly
  • Removed non-user entities from the list that are not available through advanced find (e.g. actioncard). This should only remove some system entities that normal users don’t need access to anyhow.

We have made this Dynamics Managed Solution available on our website for you to try out.

We are happy to assist in your BI projects and have a team of data professionals ready to assist you as you extend your Dynamics system to other O365 offerings like Power BI.

Topics: Analytics Microsoft Dynamics 365

It’s Official! We’re a Microsoft ISV Development Center

Today's blog post was written by Ariel Upton, Marketing Manager at Sonoma Partners.

This week our team is at the Microsoft Inspire Conference in Washington D.C., meeting with Microsoft leaders and learning more about what’s to come for Dynamics 365. One piece of exciting news coming out of the Capitol – we’ve been identified as one of the inaugural Microsoft ISV Development Centers due to our CRM specialization.

As a member of this prestigious program, we have access to Microsoft ISV and product teams to work through specific architectural considerations and complex client requirements. If you’re a new or existing Microsoft ISV, this means we have an even stronger set of resources to help you build your solution for Dynamics 365, or re-platform an existing solution onto the Microsoft Cloud.

“Microsoft selected Sonoma Partners as one of our launch ISV Development Center partners based on their strong technical expertise, and their ability to help ISVs get their solutions through the AppSource listing process. Any ISV building a Dynamics 365 integration around sales, marketing and service should definitely consider engaging a company like Sonoma Partners to get their solution to market as quickly as possible,” Pat Fitzhenry, Director, Microsoft ISV Development Centers.

We’re thrilled to receive this designation and are here to provide advisory services to help ISVs get their teams up to speed on how to build, support, and maintain a D365-based solution. Thank you to our partners at Microsoft for selecting us as an inaugural Microsoft ISV Development Center!

Topics: ISV for CRM Microsoft Dynamics 365

Successful Events Using Sonoma Partners Attendee App

Today's blog post was written by Brian Kasic, Principal Consultant at Sonoma Partners.

At Sonoma Partners, we use CRM to optimize our event planning process. These events include mainly networking socials for new or existing clients and recruiting opportunities for the company, but I like to consider them as good old fashion happy hour parties.

In our office, we like to hold them quarterly. It allows us to go through our teams’ contact lists, determine whether we have any new opportunities, and create the human interaction element that is essential to retaining existing business, gaining new opportunities, and/or hiring employees. 

Since we repeat these events, we created a step-by-step process to manage attendee lists and logistics using CRM. This process can be used for training events, conferences, team building activity, or group meetings. Anything where you need to identify a venue and manage a list of attendees.


At most events, there are always last-minute additions and cancellations to the invite list. Making real-time updates via mobile device is easy when managing the invite list in CRM…but we’ll get to that later.

Both Dynamics 365 and Salesforce allows multiple people to help manage the attendance counts in a collaborative way. Gone are the days when a single point of contact has to manage every RSVP. Instead, you can use a real-time dashboard with up-to-the-minute attendee status where team members can jot down notes about their interactions with them (just check out the Attendee App from Sonoma Partners!). It is extremely helpful and can even be used to look up names at the event to remember details about the person or the opportunity.

Here is our step-by-step “Planning Process” that we integrated into CRM:

  1. Determine the budget
  2. Identify venue options
  3. Save the date
  4. Add to attendees to invite list in a collaborative fashion with everyone pitching in to identify the optimal group
  5. Secure venue
  6. Create venue information such as dates, times, address, attire on team site or web landing page
  7. Set cutoff date for save the date email to attendees for internal team
  8. Draft attendee email communications
  9. Review email communication
  10. Determine if any party gifts will be given
  11. Approve party gifts
  12. Order / coordinate party gifts
  13. Send save the date invite via email
  14. Determine if anyone should not get reminder email
  15. Draft event reminder email
  16. Review event reminder email
  17. Send event reminder email
  18. Ensure all the team members going to the event have installed the Attendee App from Sonoma Partners!
  19. Get name tags to venue
  20. Party!

The real magic happens when you use the Attendee App at events. During our last event, I was introduced to a group of people who had lanyard name tags. As luck would have it, the lanyards were turned backwards, and I could not see their names. I had been introduced to 15 people right before this and could not recall some of their names. But with the Attendee app, I was able to quickly, easily, and subtlety find the person’s name in question making the networking event go off without a hitch.

Interested in learning more about our Attendee App? Please contact us here.

Topics: CRM Best Practices

ISV Customer Success Story: Glance Integrates Cobrowse Solution with Dynamics 365

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

According to a recent Forrester report: “Companies increasingly leverage visual engagement – video, cobrowsing, screen sharing, and annotations – to cut through the customer conversation clutter to be better understood, and to connect emotionally.”

Glance Networks is a key player in the visual engagement space, offering a platform that helps cut through “conversation clutter.” By leveraging Glance’s interactive visual offerings, users can provide better service experiences and online interactions with their clients.

We worked closely with Glance Networks to integrate their cobrowsing solution with Dynamics 365. We sat down with the Glance team to learn a more about their interest in building their solution for the Dynamics 365 platform, what it was like working with Sonoma Partners, and the growing importance of enterprise CRM in their industry.


Why did you decide to integrate your solution with Dynamics 365?

Glance: We’ve worked with other CRM partners for years. We get a lot of opportunities from these partners, and our customers are happy with the tightly-integrated functionality. In discussions with many enterprise accounts, we’ve seen an increase in those who already have Dynamics, or are considering moving to Dynamics. Given the quality of these prospective users, it made sense to explore how we could integrate our cobrowse solution with Dynamics. We’ve had great success with other providers, and Microsoft was eager and excited to work with us.

Why did you choose Sonoma Partners?

Glance: We asked ourselves whether we should choose a partner who knows Glance really well but doesn’t know Dynamics, or do we go with a new partner who isn’t as familiar with Glance but is an expert in Microsoft’s CRM space. Ultimately, we decided that this partner would need to become an expert in the Glance platform anyway, so partnering with a firm that has Dynamics expertise was the key factor in our decision.

“We wanted to work with someone who had a great reputation in the Dynamics space, and choosing Sonoma Partners was the best decision we could have made. They were able to deliver on their promises with a great product, and we couldn’t be happier with the end result.”

Apart from the integration with the Dynamics service itself, we wanted to work with a partner who understands the process of listing in Microsoft AppSource, and the intricacies that follow. This was fundamental to our success with our other CRM providers, so we knew how important that would be in raising our profile among the customer base. Sonoma Partners offered the expertise we needed to get the job done and cross the finish line.


Are you looking for a partner who could help you get into AppExchange or AppSource and invest your solution in a market-leading CRM platform? We’d be happy to help.

Topics: ISV for CRM Microsoft Dynamics 365

Discount Approval Emails with Dynamics 365 and Microsoft Flow

Today's blog post was written by Bryson Engelen and Kevin Yamashita, Sales Engineers at Sonoma Partners.

If you’re looking to do simple approval emails, there are some really easy ways to move data from Dynamics CRM to Outlook that don’t require any code. It allows a manager to approve, for example, a 10% discount, all while on their phone or sitting at their desk without the need to jump into CRM.

Below, we’ll walk through the basics of creating an approval email that brings in data from Dynamics CRM.

If you need more detail, or something more sophisticated, we’ve got the tools and expertise to take things further. This is just a simple way to get started, and you can see a video of the output here.

First, you’ll need an environment to test this out. Please don’t attempt this for the first time in production. You can provision trials for all of these components. Note: If you request a tenant with Project Service Automation, there is already an Approval Entity you can use. If you provision a 30-day trial and check the box saying you don’t want it customized, PSA won’t be loaded in, and you’ll need to create an Approval Entity in CRM. Additionally, 30-day trials don’t come with Outlook, so you’ll need to sign up for a free Office 365 trial in the Admin section of your Microsoft portal.

  1. CRM configuration
    1. Create a custom "Approval" Entity
      1. At a minimum, include a lookup field that points back to your originating entity (usually an Opportunity). If this is a Regarding field, you will encounter some limitations if you want to do more complex items like providing a link in the email to the Opportunity in CRM.
      2. Ensure the Approval Entity is enabled for Business Process Flows and Change Tracking (you can do this in the Default Solution).
      3. Optionally, include fields for added flavor such as a User lookup for "Approver," a yes/no field for "Approved," or a multi-line text field for "Approver Comments." If there are pieces of dynamic data that you want to include in your approval request email (including the recipient), be sure to include fields for that data on your Approval Entity.
    2. Create a new business process flow
      1. The primary entity should be the originating entity (again, Opportunity in most cases). Include one or two initial stages to capture basic Opportunity information (Estimated Close Date, Estimated Revenue, etc.).
      2. Add a conditional stage to branch off to if an approval is necessary. Usually our condition is if the Discount Percentage exceeds 10%. Note that you must include the field from the originating entity you want your condition to consider in the stage right before this conditional, approval stage.
      3. Create an Approval stage; in it, select your Approval entity and any relevant fields. This will prompt users to create a new Approval record when this stage is reached in the Business Process Flow.
  1. Flow configuration
    1. Create a connection to CRM and to Outlook
      1. Navigate to the PowerApps website ( and sign in using the same credentials as Dynamics 365/Office 365. Go to the "Connections" section from the left navigation bar. Flow and PowerApps use the same underlying connection infrastructure, but this is only available from the PowerApps website, so you have to go there first.
      2. Create a new connection to "Dynamics 365."
      3. Create a new connection to "Office 365 Outlook."
    2. Create a new Flow
      1. Now navigate to the Flow website (, sign in, click "My Flows" in the top navigation bar, and select "Create from Blank" from the upper right-hand corner of the screen.
      2. First, we need to determine our trigger for this Flow; for this scenario, we'll use the creation of a new Approval record. Search for "Dynamics 365" and select "Dynamics 365 - When a record is created." Select your D365 organization and your custom "Approval" entity.

        Bryson 1_750
        Now we need to configure a step to send an approval email: select "+ New Step," "Add an action," search for "Approval," and select "Office 365 Outlook - Send approval email." You can now define the details of that approval request email (recipient, subject, body, etc.). Note that you can enter in static values or you can pull dynamic values from the originating Approval record via the dynamic content sidebar on the right that appears when you click into a given field.

        Bryson 2_750
      3. Next, we'll add a conditional step based on the approval response. Select "+ New Step" and "Add a condition." On the left-hand side, click the condition's "Choose a value" field and select the "SelectedOption" value from the dynamic content sidebar. On the right-hand side, click the condition's "Choose a value" field and type in "Approve" (unless you opted to change the approval options in the previous step; if so, use whatever text value you opted for).
      4. Finally, in each branch of the condition we will write the approval response back to CRM. After this you could add additional steps if you wanted. Click "Add an action" under the IF YES branch, search for "Dynamics 365," and select "Dynamics 365 - Update a record." Like in the trigger step, select your D365 organization and the custom "Approval" entity. In the "Record identifier" field lookup the unique identifier of the Entity (either the “Activity” field or the Entity name - if you set the Entity up as an Activity, choose “Activity,” if non-Activity Entity, choose Entity name) and then set any other fields that you desire for that branch of the Flow (at a minimum, you'll want to update your Approval record's "Approval Status" field). ANY REQUIRED field on the Entity will need to have that field set in Flow, so for example, if the “Subject” field is required, just populate that field with the “Subject” option in the dynamic content list.

        Bryson 3_750
      5. To update the Status, you’ll need to update whatever Status field is on your Entity. Often, this is the “Approval Status” field, so under the IF YES branch, hit “Show Advanced options” and find the “Approval Status” field in the list. Here you will need to enter the numeric value of the “Approved” option set value, which will look something like 100000003 (you’ll need to delete the commas if you copy and paste this from CRM). From there, you can set up the IF NO branch by basically repeating steps v. and vi. under the IF NO branch, except in the “Approval Status” field you will want to enter whatever numeric value corresponds with your “Rejected” option set value, which is likely 100000002.

        Bryson 4_750
      6. Then hit Save Flow and Done (depending on how frequently you saved, it may be Update Flow).
      7. Now save your Flow and give it a test by creating a new Approval record in D365!

Bryson 5_750

A few last things we will mention. For ease of use, it might make sense to populate the “Description” field of your approval record in CRM with something that reads well in the email (like we have in the image above). Also, there are more complex things you can do with this, like adding a hyperlink in the email to jump to the record in CRM (which would require a custom Workflow Utility like the one Sonoma Partners can provide you), embedding mobile deep links, or writing a workflow to copy information from the Opportunity record to the Approval record so the email picks up on that data. We can provide details on those in another set of instructions, but for now you have the basics.

Topics: Microsoft Dynamics 365

Running Server Side Code from the Microsoft Portal (Online)

Today's blog post was written by Matt Dearing, Principal Developer at Sonoma Partners.

Executing server side code from the Microsoft Portal (online) has some limitations. By default CRUD plugins and asynchronous workflows can be triggered, however, if you want to add your own custom button to the portal and have it execute synchronous server side code, or if you have a liquid template where you want to execute some server side logic to determine what to render, a pattern we call "Web Service Plugins" will work.

When web resources became a part of the CRM platform (back in CRM 2011) we used a pattern we internally called "Web Service Plugins" to execute server side code. The basic idea was have an entity called prefix_webservice and make a "RetrieveMultiple" request to it with no instances persisted in CRM. The entity would have 2 fields: prefix_logicclass and prefix_data. We'd then have a plugin registered on post "RetrieveMultiple" of this entity that would look at the query's prefix_logicclass to determine what server side class to instantiate and execute, it would pass along the value in prefix_data, generally serialized JSON, to this logic class. The benefits included things like: bundling http calls, reuse of server side logic, avoiding timeouts (could batch calls from the client and make sure each could run in under 2 minutes), etc. Custom actions have replaced "Web Service Plugins" for us in CRM, but the portal does not allow direct access to executing custom actions. Luckily, we can leverage the "Web Service Plugins" pattern from the portal.

Take the following example where we will call a custom action "SomeAction" from the portal. There are a few parts we need to configure to make this happen. First the liquid template:

You'll notice this liquid template is executing fetch and writing out a result. The "Mime Type" of this template should be set to "application/json".

Next is javascript you would add to the portal to execute the liquid template:

It's a simple ajax call leveraging jquery. It is making a GET request (you could also POST) to the liquid template's web page (with a partial path of "SomeAction") passing a couple inputs and a "stopCache" value. The "stopCache" value helps to ensure the output of our liquid template won't be cached but will instead actually execute the fetch, therefore executing our plugin. When the result comes back a button could display, a grid could hide, a message could be alerted, etc.

Next is the Web Service Plugin that handles routing the request:

This plugin has a single plugin step registered for post of "RetrieveMultiple". The plugin starts by getting the prefix_logicclass and prefix_data from the query. It then dynamically instantiates the logic class by name (leveraging reflection) and calls a specific method (in this case "DoWork"). Next it JSON serializes the result for returning to the client that made the request. For this to work all of the logic classes need a common interface (in this case an abstract base class). As new logic classes are added no change needs to be made to the plugin class or the plugin steps.

Finally here is an example of a logic class:

This method executes a specific action named "prefix_SomeAction" and passes along input then returns the output. It could be made more generic to support many custom actions especially if they are using more generic string inputs and outputs that include json serialized data.

Although not as straight forward as being able to make CRM service calls directly from the portal or being able to write server side code, a pattern like the above does give us the ability to still execute logic to help extend our customer's portal implementations.

Topics: Microsoft Dynamics 365