Sonoma Partners Microsoft CRM and Salesforce Blog

CRM for AEC Firms: Proposal Generation and Document Management

Architecture, Engineering, and Construction firms have traditionally relied on separate databases to collect data on projects, manage financial information, and handle client accounts. Navigating these disparate systems makes it difficult for internal divisions to share and access important information needed for proposal generation and document management.

Some of the common business challenges that plague our AEC clients include:

  • Trouble managing multiple data sources
  • Navigating redundant and inconsistent data
  • No single view of clients
  • Difficulties making go/no-go decisions

If you're a marketer working at an AEC firm, we know that it can be especially painful to generate proposals and manage documents. But it doesn't have to be. With a well-implemented CRM solution, AEC firms can tame the proposal and document management beast.

1. CRM can track MSAs, NDAs, and Contracts

MSAs, NDAs, and contracts need to be stored in a logical and easy-to-find place. Instead of storing them in hard-to-navigate-to folders on a shared drive or in a Sharepoint labyrinth, use CRM to store and place them right against the project record that's complete with project data. While these documents don't do much for proposal generation, it's convenient to have these documents on hand so you know what you agreed to with the customer.

2. CRM can track employee skillsets and certifications and automate updates

All of the important employee information you need like project experience, trainings, certifications, trade association memberships, pictures, and more can be stored within your CRM.  Better yet, CRM can help automate the process of updating this information with automatic notification emails that tell employees to update their resume via an easy-to-use employee portal which guides them through the process. And if an employee doesn’t update their information in a timely manner, workflow can alert a manager or HR. If you want to get really fancy, project information can be automatically appended to employee records as they are staffed on a project or as projects wrap up.

3. CRM can aid in targeting the right pursuits and proposals

We know that proposal generation is a pain point for AEC firms. Since proposals are so expensive to generate, you don't want to waste time having Marketing develop them or have the BizDev team chasing pursuits that you have a low chance of winning. An unprofitable project could be due to the type of project, the geography and the local competition, the client itself, or any combination of these things. A CRM system can help AEC firms pinpoint where they can maximize their profits and minimize low profit pursuits. 

4. CRM can simplify proposal generation

We know that marketers at AEC firms are required to dig through multiple databases and work with multiple departments to get the information they need for proposal generation. You have to pull data from other marketers, HR, project managers, clients, the company shared drive, the company document management system, the financial system, and project management systems. With a CRM system, you have a central place where you can get the information you need for a proposal, collaborate on the document, track where the proposal is in your process, and have a logical place to store it once it’s complete. You can even have templates in the system to publish all of the project, employee, and other data in a proposal-friendly format.

Proposal generation and document management doesn't have to be a beast. There is an easier way. Want to learn more about the business benefits our AEC clients have experienced with CRM? Contact us to learn more about quick and easy proposal generation and document management. 


eBook - Top 10 CRM Evaluation Criteria
Topics: CRM for Professional Services

VIDEO: Sonoma Partners Relationship Mapper

The Sonoma Partners Relationship Mapper for Microsoft Dynamics CRM allows you to see who knows who and how. It's an easy, drop-in solution that you can just add into your Dynamics CRM instance to visually see which relationships exist in your system. 


Contact us learn more about Relationship Mapper for Dynamics CRM.

The Negative Effects of a Disjointed CRM System
Topics: Microsoft Dynamics CRM

INFOGRAPHIC: 2015 State of Knowledge for Customer Service

Note: The following is a guest post from Parature, from Microsoft Sr. Product Marketing Manager Tricia Morris. Tricia promotes Parature's focus on customer service thought leadership and best practices through Parature's customer service blog. 

Customers’ expectations for brands and organizations delivering the right answer at the right time, whether through assisted or self-service, continue to grow. In the The Real Self-Service Economy Report, 70% of consumers surveyed now expect a company website to include a self-service application.

In the most recent American Express Customer Service Barometer, 99% of consumers say that getting a satisfactory answer or being connected to someone knowledgeable are important prerequisites to a great customer service experience. But while customers are expecting more, many brands and organizations are struggling with providing the knowledge agents and employees need to consistently deliver the right answers at the right time across all major service and engagement channels.

This infographic presents a snapshot view of the current state of knowledge delivery when it comes to customer service, showing that we should never be content with our customer service content:


Empowering Employees, Engaging Customers with
Parature Knowledge within Microsoft Dynamics CRM

Knowledge and knowledge management serve as the basis for productive, proactive and consistent assisted and self-service customer care. When both employees and customers can find the right answers at the right time, delivered on the channel of their choice or convenience, satisfaction is sure to rise.

Knowledge on every desktop is the foundation for Parature and Microsoft Dynamics CRM’s powerful and growing integration success story. Teamed with Microsoft Dynamics CRM’s case management, this easy access to and delivery of knowledge empowers employees and engages customers for greater service success. Click here to download the feature sheet or contact Sonoma Partners to make this powerful integration work for your brand or organization.

Topics: Microsoft Dynamics CRM

Sonoma Partners Workflow Utilities Revisited!

Today’s post is co-authored by of Ross Talbot, a Principal Developer at Sonoma Partners.

What a difference a few years make. In early 2011, Jim posted this update on the Sonoma Workflow Utilities. He discussed the new solution packaging as well as some of the features of this managed solution. It was a simpler time, when feature parity was just a twinkle in CRM Online’s eye.

Fast forward to today and CRM Online now accepts custom workflow assemblies! This means after a couple of minor modifications to our original solution, our workflow utilities solution will work for both CRM on-premise and CRM Online!

But rather than simply converting our original 2011 solution, we thought we should add another great feature…the ability to include notes into your workflow emails!

Our list of utility features include

  • Format Line Breaks
  • URL Builder (includes returning the record id)
  • Format Record Notes *NEW*

Let’s review these features again.

Format Line Breaks

If you use workflows to send emails, readability can be an issue. No one likes trying to soak in the contents of a wall of text. The problem is the workflow email is sent out as HTML and the text with line breaks doesn’t have HTML formatting with it. We will provide that formatting for better readability within the email.

First, I need to set up the workflow value I want to format. For this case, I created a workflow to email a queue when a contact’s Address 1 changes. I am using the Address 1 Composite field since it will contain line breaks. I added my Workflow Utility reference step and I use the Address 1 field on Contact as the input value.

Now, in the email body I use the formatted value instead of the field directly.

The resulting email now has a bit more consistency and readability. So why would we worry about that? If your data is coming into CRM via an integration or say a 3rd party lead import, for example, how closely are you scrutinizing the format of every field on every record? If you are sending emails to customers via CRM similar to the example above, you will want auto-generated communication to look as polished as your hand-crafted emails.

URL Builder

If you need to include a link to a record in your email, this utility will help you do so in a controlled format. Dynamics CRM has also added the ability to include a record link, however this native Dynamic Record URL uses the URL format information in stored in your CRM org’s configuration. This means that your server and org can be configured for external access and the URL may need to be different inside your network. If this is the case, a customizable format may still be needed. The default URL format remains the same as the 2011 version of the utility:

Further, there may be times you want the record id (GUID) for your workflow (usually in cases of integration).

To return the URL, be sure to use the entity schema name for entity, and this URL will need to be updated to match the format and server/org you are using for your link. Per the previous post, there are 3 output values to review:

  • Entity Id - The GUID of the record that instantiated the workflow process
  • Formatted URL - The URL from the input property with the entity id formatted in HTML. Very useful for alert emails, as it will automatically be hyperlinked.
  • Output URL - This is the URL without the HTML formatting. This can be useful if you are using it to populate a field or integrating into another application that may do its own formatting.

Our updated workflow now includes the formatted and out of the box URL links:


Format Notes (new in the Workflow Utilities 2015 & 2013 solutions)

One addition we made to the new version for CRM 2015/2013 compatibility involves Notes on records. When you want to email information about a record, you occasionally will want to include notes attached to that record. Since you are able to enter multiple notes, we added this functionality to append note information to an email. This utility requires no input and takes the current record ID to find related Note records, and the resulting output is formatted as multiple lines of text. Our Fancy Email Workflow now has the updated address with formatted line breaks, notes attached to our contact, and the formatted and out of the box URLs.


Please feel free to download these free solutions at:

Sonoma Partners CRM 2015 Workflow Utilities

Sonoma Partners CRM 2013 Workflow Utilities

Sonoma Partners CRM 2011 Workflow Utilities

Remember you need to be a deployment administrator in order to import the solution, since it contains an assembly.

Always Look on the Bright Side of Your Data

Today’s post is courtesy of Ross Talbot, a Development Principal at Sonoma Partners.

In our continuing coverage of new features included in the CRM Online Spring 2015 Update, today we will be talking about optimistic concurrency.

First, a little review of data quality and minimizing data loss. Just as in life, there are two basic models for minimizing loss when updating data in your database: optimistic concurrency and pessimistic concurrency. Pessimistic concurrency uses row locks to prevent others from making changes while you are performing an update. This prevents a conflict by calling “dibs” and then releasing the lock when you are done. Optimistic concurrency involves an attempt to update and then a rollback if there is a conflict. This prevents a conflict by stopping the second update and letting the user know via an error message. Optimistic data tries first before stopping, and pessimistic data fights others off until its update is complete.

What does this mean for Dynamics CRM today? The lifeblood of your business starts with your customers, so from a CRM system perspective your customer data is vital. With integrations, mobile applications, and multiple users accessing and updating this data, you want to be sure that a situation that could potentially result in data loss is handled in a way that minimizes that potential issue. So let’s dive into an example of how these updates can be used in your code.

Before we start, optimistic concurrency is supported with this update on all out of the box entities enabled for offline sync as well as all custom entities. This is found as a metadata setting “IsOptimisticConcurrencyEnabled” and is set to true if the entity supports it. I have also set up a console app with some basic logging and an organization service to create a contact and test optimistic concurrency via an update and a delete.

Inside the app, I create Bob Brightside and then retrieve the record again so I can obtain the Row Version needed to check during our Update attempt.


From our log file, I see that Bob was created and that the current Row Version is 459773:
INFO "Contact Bob Brightside created with id: 24496e99-470a-e511-80d9-c4346bac7dac"
INFO "Row Version before update attempt: 459773"

Next, I use a breakpoint in my console app to simulate the timing of two updates. One will be made in my console app and the other in the browser. In my code, I will change the First Name field on the contact to Robert. I use the new ConcurrencyBehavior property to check the row version on my update. If the Row Version in CRM matches the Row Version of the contact record I am updating, the update will succeed. If these versions do not match, or if no Row Version is specified, the update will fail. I pause at the breakpoint in order to update the contact via the CRM web interface, changing the First Name field to Mr. replacing Bob.


When I resume my console app, the update request is executed and the update fails.


From our log file, we see that the concurrency check noticed another change had occurred and prevented our update:
ERROR "Concurrency Check Failed: The version of the existing record doesn't match the RowVersion property provided."

Next, I retrieve the record again to ensure I have the latest Row Version. Our log shows this has been updated: INFO "Row Version after update attempt: 459780"
I now execute a Delete Request with the updated contact and the ConcurrencyBehavior property set to IfRowVersionMatches, and since no other updates have been made this request succeeds.


Here is a link to the MSDN article detailing this new feature for more information about the supported entities, fault codes when concurrency checks throw an exception, and additional sample code.

Are you having any issues with your CRM deployment? Concerned that you aren’t doing enough to prevent data loss? Don’t grumble, give a whistle. We can help things turn out for the best.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM Online