Quantcast
Channel: Microsoft Dynamics 365 Community
Viewing all 13977 articles
Browse latest View live

Analyzing Audit Logs using KingswaySoft

$
0
0

If you have ever looked into analyzing audit log records in Dynamics CRM, you know how hard it can be.  Using the API there isn’t a good way to retrieve all the audit log records for a specific entity.  You can only either retrieve all the changes for a certain attribute or retrieve all the changes for a specific record.  If you’re on-premise and have access to the database, you can get to the audit detail records but you will find that the data is very hard to parse through.

Thanks to the wonderful folks at KingswaySoft, with version 7.0, this is no longer the case.  With KingswaySoft v7.0, audit details can easily be retrieved for a specific entity and then can be dumped into a file or a database for further reporting or analysis.

In order to accomplish this, first you will need to make sure you have the SSIS Toolkit installed and then download KingswaySoft v7.0 here.  Then open up Visual Studio and create a new Integration Services project.

clip_image002

Next add a Data Flow Task and drill into it.

clip_image004

Then we will set up a Dynamics CRM Connection using the Connection Manager.  In the Connection Manager view, right-click and select “New Connection”.

clip_image006

Now select the DynamicsCRM connection and click Add

clip_image008

This will pop open the Dynamics CRM Connection Manager which will allow you to connect to your Dynamics CRM organization.

clip_image010

Now use the SSIS Toolbox view to drag the Dynamics CRM Source component onto the canvas.

clip_image012

Double-click the Dynamics CRM Source component to pop open the editor.  Select the Connection Manager that you created earlier and set AuditLogs as the Source Type.  In the FetchXML text editor, write a fetch xml query to pull back the records of an entity where you want to retrieve audit details from.  In my example I’m retrieving 25 account records with my Fetch XML query.

image

Select Columns on the left and pick the columns you would like to be a part of your report.  In my example I’m going to use action (Create, Update, Delete, etc), the objectid and objecttypecode (the record that was changed), and the userid and useridname (the user that triggered the change).

clip_image016

The Dynamics CRM Source component will have two outputs, one for the header audit record and one for the list of audit detail records.  In my example I want to join these two outputs into one dataset so I can display both sets of data in the same report.  In order to do this we will need to drag two Sort components onto the canvas and then connect each output into the separate Sort components.  The result should look something like this:

clip_image018

Now double-click the first Sort to open the editor.  Select the auditid as the sort attribute as it is the unique key to join the two datasets together and check the “Pass Through” box for all the other columns that you want to use in your report.

clip_image020

Now double-click the other Sort component and perform the same steps.

clip_image022

Next drag the Merge Join component onto the canvas, connect the two outputs from the two Sort components into the new Merge Join component and then double-click the Merge Join component to open the editor.  Select Inner join as the Join type and then select any columns you want in your report and map them in the bottom pane.

clip_image024

Now we need to drag a Derived Column component onto the canvas and connect the output from the Merge Join into the Derived Column component.  This component needs to be used as we’re going to output the data into a CSV file so the oldvalue and newvalue columns need to be converted from a DT_NTEXT to a DT_TEXT.  Open the editor for the component and set the expression to convert ‘oldvalue’ to DT_TEXT using the 1252 codepage and repeat the same for ‘newvalue’.

image

Lastly, use a Flat File Destination to output the audit records into a CSV file that can be opened in Excel.  The screenshot below is the columns I used for my output file. 

image

Now your Data Flow should look like the following:

image

Then you can run the SSIS package and you should get an output file that displays all the audit records for the first 25 retrieved accounts.  The output will show the name of the user that made the change, the field that was changed, the old value, the new value as well as if it was a Create or Update.

image

So there you have it!  Thanks to the wonderful KingswaySoft toolkit, it is now possible to extract audit logs into a readable output that can be analyzed as needed.


Email Router Demystified – Tools for Troubleshooting - Intro

$
0
0

Author note: As you’ll notice with most of my blog posts, they tend to have a lot of information and are a bit long.  Instead of sacrificing content, I’ll break up the posts into a series for posts.  This way people don’t get overwhelmed with the amount of content but for those that want the deep technical details, they get that as well.  This intro will have the links for each of the tools we will discuss within the Email Router Demystified – Tools for Troubleshooting blog series.

During the troubleshooting portions of the Email Router Demystified blog series, we talked about a few tools but we didn’t really dig into how to use each one of them as it relates to the Email Router.  Some of these tools can be used in a greater scope than just the Email Router.  For instance, Fiddler is a web proxy debugger.  If you have worked with the support team at all, you’ll know that this is one of our favorite tools when it comes to troubleshooting various issues.  The scope of this discussion will be how can we use these tools as it relates to the Email Router.

The tools we will cover in this article are:

  1. Email Router Logging
  2. Fiddler/EWS Editor
  3. Message Analyzer/TELNET/OPEN SSL
  4. WCF Tracing

We are going to cover a few aspects as it relates to the tools. We will cover:

  1. How to install and configure the tool
  2. When you should use which tool for which situation.
  3. If a log is generated, we will cover how to analyze the log

Let’s go ahead and jump into these tools at this time.  To do so, simply click the link of the tool mentioned in the list above.  Each article is built on the other which means that we transition from the first one, Email Router Logging, and work our way to the last one.

Email Router Demystified – Tools for Troubleshooting - Email Router Logging

$
0
0

Author note: As you’ll notice with most of my blog posts, they tend to have a lot of information and are a bit long.  Instead of sacrificing content, I’ll break up the posts into a series for posts.  This way people don’t get overwhelmed with the amount of content but for those that want the deep technical details, they get that as well. 

This article covers Email Router Logging and is the first article within the Email Router Demystified – Tools for Troubleshooting blog series.  To get to a list of the other tools, go HERE.

 

Email Router logging is a good starting point to try and collect some data.  Sometimes you need to see what is happening prior to the exception to really understand what is going on.  In other instances, you just want to make sure that a mailbox is being processed.  Email Router Logging is pretty simple to setup once you understand what you are doing.  Let’s take a look at this now.

If you are familiar with setting up tracing or logging for Microsoft Dynamics CRM, you’ll find that configuring logging for the Email Router is completely different.  It requires us to modify an XML document that is used by the Email Router service.

Now this may sound a little silly but before you can enable Email Router Logging, you need to make sure that you have configured the Email Router using the Email Router Configuration Manager.  The reason this is needed is that the Configuration and Deployment profiles as well as any user/queue/forward mailbox profiles get added to the file we need to modify to enable logging.

Logging is enabled within the following file:

 C:\Program Files\Microsoft CRM Email\Service\Microsoft.Crm.Tools.EmailAgent.xml

From here on, I will refer to this document as EmailAgent.xml.  You can open this file up with Notepad if you don’t have an XML editor.  There are a few available for free on the interwebs so do some searching if you get lost in the XML format in Notepad.

Important Elements

After opening up EmailAgent.xml, you may get a little overwhelmed if you have a lot of users or if you have a lot of profiles.  Don’t be afraid, this is a lot easier than what it looks like.  Let’s first take a look at how we can navigate our way through this file. 

<ConfigUpdatePeriod>

We’ll first talk about ConfigUpdatePeriod.  This is found in the <SystemConfiguration> of this file.  This element controls when the Email Router is going to make automatic updates to the EmailAgent.xml file.  Essentially, if a new user is added in to CRM, this setting should not require you to open the Email Router Configuration Manager, click on Load Data, and then Publish.  It SHOULD automatically handle this.  The reason this is going to be important is that we don’t want the file to update on us while we have logging going.

<Direction>

Each user that is configured to use the Email Router for incoming will have their own incoming provider stored within the <ProviderConfiguration>element.  The provider is what handles the processing of that user’s mailbox.  For outgoing, there is one for each outgoing configuration profile you created.  All of the users and/or queues set to use that Configuration Profile will be listed within that ProviderConfiguration.  There are a couple of elements within the EmailAgent.xml file that leads us to understand if it is an incoming or outgoing profile.  However, the easiest element is<Direction>which is found within<ProviderConfiguration>. For a provider accessing a user’s Mailbox, the direction will be “Inbound”.  For a provider sending email out for a user and/or queue, the direction will be “Outbound”.

<EmailAddress>

For incoming providers,<EmailAddress>element helps us isolate which email address will be processed by the provider.  Again, this is only for incoming.

<UserId>or<QueueId>

For outgoing providers, you will need to know the user’s or queue’s GUID.  The easiest way of finding this out is by opening up the User or Queue and choose the “Email a Link” option on a workstation with an email application like Outlook:

 

From there, you parse through the URL and find the id parameter.  Then get past =%7b and copy everything between that and %7d.  Those are URI values for the curly {} braces:

https://crmsql:444/CRM/main.aspx?etc=8&extraqs=formid%3dc2cd9e55-d4b4-4b55-9951-16ead79643e5&id=%7b7472458D-28DB-E511-80E0-001DD8B98504%7d&pagetype=entityrecord

In this case, Alan Jackson’s UserId of GUID is 7472458D-28DB-E511-80E0-001DD8B98504.

Configuration

Ok that was a lot of information.  Why do we have to know all of that before we talked about configuring of Email Router logging?  The reason is that to enable logging, we need to know what provider to set logging for.  This will allow us to get information specific to the account we are working on.  So to set logging, we simply need to add a couple of elements:

<LogLevel>- This element controls how much information we get back for that provider.  The following values determine the level of …. logging …. we enable.

  • 0. No logging.
  • 1. Error logging only. By default, logging is set to 1.
  • 2. Detailed information logging at the mailbox level
  • 3. Very detailed information logging at the message level.

 <LogFile>- If we don’t specify a LogFile, it’s going to write all of the EmailRouter events to the Event Viewer.  The reason I raise this as important is because if we don’t output the details to a file, it gets dumped into the Event Viewer by default.  From there, you have to dig through and arrange the data within the Event Viewer.  When outputting it to a log file, it allows us to separate each provider and see the events sequentially very easily.

So we need to add<LogLevel>and<LogFile>but where?

Wait not so fast.  The first thing I’d suggest is to backup the EmailAgent.xml file.  If you really mess something up, you could cause some serious detrimental effect that would require you to go search for a vanilla version of the EmailAgent.xml file.  Then you would have to go through and open the Email Router Configuration Manager and Load Data and Publish the results. 

After you have backed up the file, we need to make sure the router service doesn’t overwrite our logging settings.  To do that, we need to make sure and update<ConfigUpdatePeriod>to 0.  Remember the default value is 3600000.

Now that we have that out of the way, let’s go ahead and set the logging elements.  We are going to add them within the<ProviderConfiguration>that we need to trace.  For instance, if I have a user named Alan Jackson and he mentions that he cannot find emails within Microsoft Dynamics CRM that should be within CRM.  We want to enable tracing for incoming for his mailbox.  So I take what we learned above and apply that.  I first look for Alan’s<EmailAddress>. There should only be one of them.  Additionally, I validate I’m in the right provider by confirming the<Direction>.  Once I have done that, I’m now ready to set the logging elements. 

You can set these, really, anywhere within the<ProviderConfiguration>. Personally, I like setting it right below the<EmailAddress>.  The reason is that it’s easy to identify whom I’m tracing and what file I’m writing to.

A couple of notes about this:

  1. Ensure you have permission to write to the EmailAgent.xml file.  To do this, simply right-click on the file and go to Properties and then click on Security.  Ensure the user you are making the changes to has “Full control” to the file:

  2. The file you are writing to, in this case it’s ER_Logging_Ajackson_Incoming.txtdoes not need to already exist.  The Email Router will create it if it doesn’t already.  If it does, it will simply append to the existing data in the file.
  3. The Email Router SERVICE account needs to be able to write to the folder location you specify.  In my case, it’s my Administrator account:

LogFile

Now that we have logging enabled, let’s take a look at the log itself:

Here I can see what the Email Router was doing.  I can see that the Email Router was able to open the mailbox, check if there are emails, validated there were no emails, and then closed the mailbox. 

So let’s send a test email and see what happens.  I sent a simple email from Outlook to Alan Jackson:

This is what the log had to say about it:

If you follow the logging from the top down, you will see that the email was picked up.  Now, look at line 10 (counting the line wraps):

MM/DD/YYYY 16:11:50 : #60263 - The email message with subject "Test the Email Router Logging - No Track" in mailbox ajackson@contoso.local for delivery to https://crmsql:444/CRM was rejected. Reason: NoCorrelationMatch.

So this email was rejected because there was no correlation meaning that it’s not a CRM email.  If I look at Alan Jackson’s personal options, I can see he’s should only be tracking CRM emails:

Now the information we see here is pretty limited in regards to understanding what exactly is the Email Router doing.  The best details we get is from an exception when we see all of the stack.  Seeing the stack of the trace is SUPER important as it helps us understand if this is a CRM issue or an Exchange issue:

MM/DD/YYYY 15:55:54 : #26090 - An error occurred while opening mailbox ajackson@contoso.local. System.Web.Services.Protocols.SoapException: The account does not have permission to impersonate the requested user.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at Microsoft.Crm.Tools.Email.Providers.ExchangeServiceBinding.GetFolder(GetFolderType GetFolder1)
   at Microsoft.Crm.Tools.Email.Providers.ExchangeWSConnector.OpenMailbox()
   at Microsoft.Crm.Tools.Email.Providers.ExchangePollingMailboxProvider.InitExchangeConnector()
   at Microsoft.Crm.Tools.Email.Providers.ExchangePollingMailboxProvider.OpenMailbox()
   at Microsoft.Crm.Tools.Email.Providers.CrmPollingMailboxProvider.Run()\r\nErrorImpersonateUserDeniedThe account does not have permission to impersonate the requested user.

In this exception, we can see that we are doing an ExchangeServiceBinding for GetFolder.  If we do a quick search for GetFolder and Exchange, we get an article that can give us more information about that:

https://msdn.microsoft.com/en-us/library/office/aa580274(v=exchg.150).aspx

This particular error message is an Exchange error.  But what exactly is CRM doing within Exchange that is causing this error.  That’s where the next tool comes into play.

Email Router Demystified – Tools for Troubleshooting - Fiddler

$
0
0

Author note: As you’ll notice with most of my blog posts, they tend to have a lot of information and are a bit long.  Instead of sacrificing content, I’ll break up the posts into a series for posts.  This way people don’t get overwhelmed with the amount of content but for those that want the deep technical details, they get that as well.

This article covers Fiddler and is the second article within the Email Router Demystified – Tools for Troubleshooting blog series.  To get to a list of the other tools, go HERE.

 

I could, literally, spend hours on how we use Fiddler to capture data and then how to analyze the data in various different ways.  On the surface, the tool seems so simple but it can really give you some very deep data if you understand how to mine the data.

Again, we will simply focus on how to use it as it relates to the Email Router.  First, you need to know where to get Fiddler.  Well, oddly, this is one of the only non-Microsoft tools that I use.  It’s a Telerik tool which you can find here:

http://www.telerik.com/fiddler  

What is Fiddler?

Fiddler is a web proxy debugger.  What does that mean?  Well, in simplistic terms, the http and https requests all go through Fiddler.  Fiddler hooks into the Internet Options and configures itself as a proxy.  Since it’s a proxy, all of that traffic will go through the application so we can monitor the requests and responses being made.

When should we use Fiddler?

Again, Fiddler will capture http and https traffic.  So this means we should only capture this if we want to monitor the request and response for http/https traffic.  In the case of the Email Router, there are only a few things we are able to capture Fiddler data:

  1. Load Data
  2. Test Access (Only if using Exchange Web Services (EWS))
  3. Incoming processing using EWS
  4. Outgoing processing for Exchange Online
  5. Connectivity to Microsoft Dynamics

That’s it!  This tool will not capture SMTP or POP3 traffic.  It will only capture EWS traffic.  We will talk about other tools to help us with capturing SMTP and POP3 traffic next.

One big gotcha here.  Even though Fiddler will capture HTTP traffic, the information you are going to see from the request and response is going to be “encrypted” from WCF.  For us to get data from CRM and Exchange, they must both be configured for HTTPS.

 

How do we use this tool?

This is extremely important to understand.  Fiddler will only capture the http/https traffic of the account that ran Fiddler or of services that is using Fiddler as a proxy.  This means that if I am logged into a workstation as Alan Jackson and launch Fiddler, it will only capture traffic for Alan Jackson. Ok, that makes sense but why does this matter?  Well, by default, the Email Router service is set to run with the Local System account. 

To capture the traffic for the Email Router service, we must do one of two things:

  1. Run the service as the logged on user
  2. Create the Microsoft.Crm.Tools.EmailAgent.exe.config file and define the Fiddler proxy

Run the service as the logged on user

What we need to do is to change the Log On As to the logged on user.  Now there are a couple of caveats here for CRM on premises customers.  The account that is running the Email Router service needs to be a CRM user or it needs to be a member of the PrivUserGroup.  The reason is that the service is the one responsible for retrieving the users and queues within CRM.  If the service account is not a CRM user or not a member of the PrivUserGroup, we will fail to actually connect to CRM EVEN if the Deployment tab is set to use a CRM user.

Create the Microsoft.Crm.Tools.EmailAgent.exe.config file and define the Fiddler proxy

If we are not able to run the service as the logged on user, we can configure the Email Router service to send all the traffic to the Fiddler proxy.  To do that, we must first stop the Email Router service and then create the Microsoft.Crm.Tools.EmailAgent.exe.config file found here:

C:\Program Files\Microsoft CRM Email\Service

After creating the file, we set the following information within the file:

<configuration><system.net><defaultProxy><proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888"/></defaultProxy></system.net></configuration>

Before this can work, you must have Fiddler installed and configured properly otherwise the Email Router service will fail to connect.  It’s important that you either delete or rename this config file after you are done capturing trace data with Fiddler.

Now we have the Email Router service configured to be able to capture traffic through Fiddler, what do we do next?

Configuring Fiddler for HTTPS

The first thing we need to do is install Fiddler.  However, that process is pretty straight forward so we won’t go into that.   After that, we need to configure Fiddler.  The configuration depends on what you did in the previous step.  If you created the config file, then you need to be sure to configure Fiddler to Reverse proxy.  

Everyone then needs to go through this next step.  For standard HTTP traffic, there is no additional configuration.  However, for HTTPS traffic, we need to make sure that Fiddler can decrypt the SSL traffic by being a certificate proxy.  We do that by:

  1. Open Fiddler
  2. Go to Tools > Fiddler Options
  3. Click on HTTPS tab
  4. Ensure “Capture HTTPS CONNECTs” is checked and then check “Decrypt HTTPS traffic”

After doing this, it’s going to prompt you with some interesting pop ups about trusting the Fiddler Root certificate.  Simply click on Yes on each prompt.  

At this point, click on OK to close any remaining windows and close and re-launch Fiddler.

 

Capture traffic using Fiddler

Now that Fiddler is installed and configured, we are ready to capture our HTTP/HTTPS traffic.  When Fiddler is launched, it will automatically start capturing HTTP/HTTPS data for the logged in user.  There are a few things to review about Fiddler that can make it easier to review and correlate the data.  These are:

  • Result – This is the HTTP response code back from the server.  You can review what each response code means in this article.
  • Host – This is the server that the request was sent to
  • URL – This is the actual page that the client is trying to access
  • Process – This is the process making the requests

Unless you are putting in filters in the Fiddler trace capture, you may capture a lot of other traffic that is not relevant to the issue at hand.  Using these fields, we can validate the request is coming from the Email Router and what service is handling that part of the router request.

Request/Response Bodies

After we have isolated a particular line we want to learn more about, we can look at some really good details of the request being made by the email router and then the response back from the server.  We do this in Fiddler within the right-hand pane and by clicking on Inspectors tab.

The messages that are going to be important to us are going to be the ones that have a result of success (2xx) or of server failure (5xx).  If the client is failing, it will have a result of 4xx and that is something like authentication failures or certificate problems.  While we could gain more from those request/responses, the more important things we focus in on are 2xx and 5xx result HTTP codes.

So the important thing to know here is that not all errors are going to be logged as a 5xx result code.  5xx really means that the server was unable to process the request.  However, most of the time, the server is able to process the request and provides a response back to the client as a 200.  We have to actually look into the response body to determine what the failure was when the server handled the request.

 

Request Bodies

The proper request bodies can tell us EXACTLY what was asked of the server.  Since we are connecting to service endpoints for both Exchange and CRM, the request should contain XML details that help quickly parse through the data.

 

We can then take the details we have pulled from the request XML and use it in the next tool we will cover, EWS Editor. 

Response Bodies

So now that we know what the client requested of the server, what did the server give us back in a response.  Now, as long as we got a 200 result, we will see the response from the server within an XML format.  Again, this helps us easily parse through data.

 

Now this is good information when the response result was 200.  However, if we get an error message, it’s possible we may need to look at the raw data to get more details of what may be going on:

EWS Editor

What happens when the email router fails to access a mailbox or it fails to retrieve an email from the mailbox?  The problem is typically an issue with Exchange.  To help confirm the issue with Exchange and to test some configurations without having to make changes in CRM or the email router, we can use EWS Editor.  EWS Editor will allow us to make the same calls to Exchange and see what the response back from Exchange is.  It helps narrow and isolate the issue.

You can get EWS Editor from CodePlex

The part of EWS that is most helpful to us is the EWS POST tool:

At first, this may be overwhelming.  The fact of the matter is that it’s very easy.  Essentially what we need to do is provide some basic information.

Authentication

The authentication details are based off of what you are providing in the Email Router Configuration Manager for the profile using EWS:

Headers

We pull the headers from the Fiddler trace.  Really the only thing we need is the verb which is always a POST:

Request Text

Finally, we enter in the Request text which we get from the Request Headers in Fiddler

Now when we click on Run, we SHOULD get the same response back from the server from EWS Editor that we got back from the Email Router within Fiddler:

If we are not getting the same message back, then we should be focusing on a possible load balance scenario in which one server may be out of date or may be down.

Email Router Demystified – Tools for Troubleshooting - Message Analyzer

$
0
0

Author note: As you’ll notice with most of my blog posts, they tend to have a lot of information and are a bit long.  Instead of sacrificing content, I’ll break up the posts into a series for posts.  This way people don’t get overwhelmed with the amount of content but for those that want the deep technical details, they get that as well.

This article covers Message Analyzer and is the third article within the Email Router Demystified – Tools for Troubleshooting blog series.  To get to a list of the other tools, go HERE.

 

Message Analyzer is such a neat tool developed by Microsoft.  Message Analyzer allows you to capture all sorts of different data at the same time.  For the purpose of this article, we will be using it simply as a network capturing tool.

You can get Message Analyzer here.

The install is pretty straight forward so we are not going to really cover any of the installation parts. 

Network Monitoring Configuration

After installing Message Analyzer, you will need to do the following in order to capture network traffic

  1. Open it up and you will create a “New Session”
  2. Within the New Session window, click on Live Trace
  3. Under ETW Providers, click on “Select Scenario” and go to “Local Network Interface"
  4. Now depending on what type of traffic we want to capture, we can apply filters so that we limit the amount of data we have to review.  In the case of the Email Router, we can define a filter for the port based on the require ports for SMTP and/or POP3.  The default port for SMTP is 25 and POP3 is 110 for non-SSL and 995 for SSL traffic.  However, these will be different based on the email provider.  For instance, Outlook.com uses 995 for POP3 and SMTP is 25 or 587 whereas Gmail uses 995 for POP and 465 for SMTP.  In my test environment, I am using 25 for SMTP and 110 for POP3:
  5. Now we click on Start

Data Analysis

On the surface, the data being shown within Message Analyzer can be a little overwhelming. 

Aliases

What you are going to need are the IP addresses for every server you want to monitor the traffic on.  This can help us figure out the traffic flow between CRM and the email server.

In my test environment, the IP addresses in play are:

Server

IP Address

CRM

192.168.2.51

Exchange

192.168.2.52

 

Knowing that, I can make analysis a little easier by adding some aliases for the IP Addresses.  To do this, I can right-click on the IP address within the Source or Destination column and go to “Create ‘Source’ Alias”:

Now I enter in the alias of my CRM server name (it has the .51 address) and click Save

I do the same thing for the Exchange server and now I can easily see where the requests came from and went to in the trace:

Filters

Next, I need to add filters to get data that is relevant to what I am looking for.  When adding filters, I am going to try and filter the data as much as possible because the traces can end up getting pretty large.  When we started the trace, we added some prefilters but I can do the same thing and add additional filters or if I didn’t add prefilters, I can add the filters now.  In this case, I am only going to take a look at the SMTP traffic:

Packet Analysis

Now that I have the data filtered to the data I want, I can now see the request and the response within Message Analyzer.  Now this is great for unencrypted data but not so great for traffic using TLS or SSL.  However, even if we have to review encrypted traffic, we can get some sense of what is happening if we capture unencrypted traffic just to see what commands are being sent.

Again, we can spend a ton of time talking about the data returned by Message Analyzer and how to get the most out of the data but, for this article, we are simply going to focus in on the traffic.

If I look at the traffic, I can see that we start with the three way handshake and then CRM starts the requests. 

  1. The first request is a simple EHLO request and we are simply looking to get a Hello response back from the email service
  2. Once that is done, we are simply doing basic SMTP commands
    1. MAIL FROM
    2. RCPT TO
    3. DATA
    4. After that is complete, we close the connection by doing a QUIT

So this is helpful to an extent, especially if it’s unencrypted data.  We can simulate the same request by using TELNET.

We start off by establishing a connection to the email server (this should be the same server and port used in your Outgoing profile):

Now I simply do the same things we do as we saw in the trace:

We can get more details of what was the content of the email by looking at the payload from the MailPacket frame:

We can apply that same concept to POP3:

However, TELNET only works with unencrypted connections.  If we are going to try to test an encrypted connection, you’ll have to use something like OpenSSL to test the connection.  The commands are the same it’s just using a different application:

Again, we are using different tools to try and help us figure out where the issue lies.  In this case, we are looking to see if the traffic is making it to and from the POP3 or SMTP server.  If it is, are we able to make the same requests with other tools or is the issue simply with the email router?  Using a combination of these tools allows us to confirm where the issue lies.

Email Router Demystified – Tools for Troubleshooting - WCF Tracing

$
0
0

Author note: As you’ll notice with most of my blog posts, they tend to have a lot of information and are a bit long.  Instead of sacrificing content, I’ll break up the posts into a series for posts.  This way people don’t get overwhelmed with the amount of content but for those that want the deep technical details, they get that as well.

This article covers WCF Tracing and is the fourth article within the Email Router Demystified – Tools for Troubleshooting blog series.  To get to a list of the other tools, go HERE.

 

One of the alternates to Fiddler and Message Analyzer is to be able to use WCF tracing.  WCF tracing allows us to see the WCF traffic in clear text between the router and the email service.  The reason you would use WCF tracing rather than Fiddler is that Fiddler will not show you HTTP, non SSL, traffic.  WCF encrypts the message and Fiddler is not able to decrypt the WCF encryption.  So WCF tracing is the only way you are going to be able to see HTTP traffic and the result from the Email Router.  However, we can see the POP3 and SMTP traffic as well within this trace.

Configuration

To enable WCF tracing, it requires a file to be created and placed within the Service folder (C:\Program Files\Microsoft CRM Email\Service).  You need to create Microsoft.Crm.Tools.EmailAgent.exe.config.  You can use Notepad or some other simple text editor or using Visual Studio if you want to get the rich XML experience.  The config file must contain the following:

<configuration><system.diagnostics><sources><source name="System.Net" tracemode="includehex" maxdatasize="1024"><listeners><add name="System.Net"/></listeners></source><source name="System.Net.Sockets"><listeners><add name="System.Net"/></listeners></source><source name="System.Net.Cache"><listeners><add name="System.Net"/></listeners></source></sources><switches><add name="System.Net" value="Verbose"/><add name="System.Net.Sockets" value="Verbose"/><add name="System.Net.Cache" value="Verbose"/></switches><sharedListeners><add name="System.Net" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\EmailRouterWCFLog\network.log"/></sharedListeners><trace autoflush="true"/></system.diagnostics></configuration>

NOTE: The trace directory (c:\EmailRouterWCFLog) needs to be created prior to setting this up otherwise the log will not be created.

Once you have created the config file and defined the details above, then you need to restart the Microsoft CRM Email Router service:


Log

After enabling WCF logging and restarting the service, we can review the log file that was created in the directory defined with the config file.  The details in the log file are hard to read to the eye and to correlate. 

There are a couple of things you can do to help you parse through the log file

  1. The trace file is broken up into class (System.Net, System.NET.Sockets, etc)
  2. Additionally, it has a thread ID associated to it.   In the screenshot above, you can see there are three of them [1476], [1612], [13880]

Reviewing the log file, let’s say I want to review the traffic incoming traffic for Tamera Lawson.  I know that Tamera has an email address of tamera@contoso.local.  I need to try and find something to search on in the trace files.  You can see in the file details above, we have a lot of line breaks and we are seeing a bunch of hex data.  To the right of the hex data, we can see clear text but it’s possible that my search conditions are going to be broken up into multiple lines. 

Searching for tamera@contoso.local returns nothing.  However, if I search for tamera, I get a hit:

Looking at the screenshot above, I can see that there are two different threads here (1476, 13880) and the data is sort of all over the place.  So what can we do to help extract the pertinent details to the thread ID that is important to us, 13880.

BareGrep

The best thing I have found to parse through these files is a free text searching tool called BareGrep.  When using BareGrep, I define the folder where my file is at, in this case C:\EmailRouterWCFLog, and I can leave the wildcard *.* for the file (will search every file in that directory) or I can define a specific file, network.log.  Now the crux of this is the search criteria that you set in the Text field.  Here I put in [13880], note I unchecked “Regex Syntax” and hit search.

The data, again, is not easy to read but I can do a couple of things:

  1. If you understand how to use Regular Expression, you can define a more detailed search criteria and check the “Regex Syntax”.  However, I know my limitations and I’m not RegEx expert.  I’m willing to learn if someone is patient to teach me.
  2. What I tend to do is export the results to a text file and then use BareGrep again to refine data.  You do this within BareGrep by clicking on File > Export.  Then I simply export the Text column “To File”:
  3. Now I can use BareGrep to do additional searching.  In this case, I searched on StatusCode and found a response that is concerning (StatusCode=500):
  4. Next I go to that specific Line number, 1718, (if you open the file in Notepad, you can use CNTRL+G and enter the line number) and look at the response I am getting back:

You can see the message I get back is similar to what we would see in Fiddler.  Again, this is not an option I use a lot.  However, it is something I have used when I am in a bind and a customer is communicating over HTTP. 

CRM 2011 Install: Windows Identity Error

$
0
0
Recently – I ran into the following error while setting up CRM 2011 error Here are the steps to resolve it Open Server Manager  Select “Add roles and features”             ...(read more)

Email Signatures in CRM2016

$
0
0

CRM2016 Update 1 has introduced email signatures in CRM2016. It is very important if you are using CRM web clients. In the past, CRM users used to copy paste their signatures into CRM emails or used email templates for signatures.

Now you have an option to create one or more personal email signatures.

  1. Go to personal options as shown in the screenshot.

    2016-05-26_16-21-12_thumb2
  2. Navigate to the Email Signatures tab and press New.

    2016-05-26_16-23-37_thumb3
  3. Enter your email signature and press save.

    2016-05-26_16-25-52_thumb5
  4. You have an option to set the email signature as the default by clicking on the Set as Default button.

Testing the email signatures

Create a new email activity and your default email signature will appear automatically.

2016-05-26_16-36-22_thumb5

There is also a button available ‘Insert Signature’, which adds the signature manually or replaces the default signature. These buttons are highlighted in yellow in the above screenshot.

Note:The embedded images in the email signature will not appear in the email unless they are hosted on the internet.

So here you go. Now you have email signatures in CRM2016.


The Return of Investment (ROI) on Microsoft Dynamics CRM Online

$
0
0
Microsoft commissioned Forrester Consulting to conduct a Total Economic Impact™ (TEI) study and examine the potential return on investment (ROI) enterprises may realize by deploying Dynamics CRM Online...(read more)

Dynamics CRM Spring Wave 2016 Release

$
0
0
Microsoft Dynamics CRM Spring Wave update comes with few exciting new features. Microsoft is rolling out a new roadmap page for Dynamics CRM. Check it out here: Dynamics CRM Roadmap Check out all the...(read more)

Web API Enhancements in Dynamics CRM Update 1

$
0
0
Introduction: Microsoft Dynamics CRM 2016 introduced a new concept called Web API which can be used across wide variety of devices, programming languages and platforms. With the release of Update 1 for...(read more)

Hosk’s Top CRM Articles of the week – 27th May

$
0
0

Quotes

if you had more time you could do all the things you wanted. You only have time to focus on one thing you really want to do

#HoskWisdom

Great minds discuss ideas; average minds discuss events; small minds discuss people.

Eleanor Roosevelt

 

Article of the week

Jukka Niiranen has been busted some moves with Sway recently, almost enough to make me want to use it.

Sway is like a cool Powerpoint, I learnt Salesforce has 5 times the market share of CRM (19.7% Salesforce, 4.3% Microsoft).  It’s a great Sway presentation and the information makes you think where the CRM industry is heading in the future

Best of the Rest

Dynamic CRM Salary survey 2016

Thoughts on Microsoft Dynamics CRM Strategy

Three new features of Microsoft social engagement 

Leon Tribe on ADX Portal

Use Machine Learning to Predict Customers You Might Lose (Part 1)

Managing Microsoft Dynamics CRM 2016 online service updates

Data Loader

Dynamics Connector is being discontinued, What does it mean?

Article from technology professional Mitch Milam- summarizing the new features

CRM 2015 – What developers need to know about the activity entity

Project Service and Field Service trials now available as solutions for CRM2016 Update 1 orgs

If Bob Paisley managed a CRM team

Here’s your guide on how to enable and create your first survey with Dynamics CRM 2016 VOC.

How to free storage space in CRM2016 

What’s new with Dynamics CRM 2016 and CRM online.

Field Data Auto-complete  

Create Custom Page Template in Adxstudio

Why Microsoft Dynamics CRM presentation

CRM 2016 – Default CRM mobile app works fully offline and the limitations of previous offline versions

Microsoft Sets the Stage for IoT-Enabled CRM 

The rise of Microsoft Dynamics CRM

{Dynamics CRM 2016 Update 1} Organisation Insights Dashboard in Dynamics CRM

Questions on Microsoft Dynamics CRM solutions and environments

Are you aware about this? Dynamics CRM New Feature – Templates for Email Signatures

Struggling with the implementation phase? Here’s How to implement CRM through Phased Approach

CRM developers tools of the trade – ReSharper

Blog Post: salesforce – Hell Freezes Over

other

Ted Talk – Why some of us don’t have one true calling

US government is spending billions on old tech that barely works, says watchdog

“We no longer talk about the lagging indicators of success, right, which is revenue, profit. What are the leading indicators of success? Customer love,” Nadella says.
Whilst on the train I was reading Microsofts Earnings Release FY16 Q3
There were a few interesting things to note
REDMOND, Wash. — April 21, 2016 — Microsoft Corp. today announced the following results for the quarter ended March 31, 2016:
· Office commercial products and cloud services revenue grew 7% in constant currency driven by Office 365 revenue growth of 63% in constant currency
· Office consumer products and cloud services revenue grew 6% in constant currency with Office 365 consumer subscribers increasing to 22.2 million
· Dynamics products and cloud services revenue grew 9% in constant currency with Dynamics CRM Online seat adds more than doubling year-over-year
 Dynamics CRM Online seat adds more than doubling year-over-year

Salesforce (CRM) Chooses Amazon (AMZN) For Cloud Services In $400 Million Deal

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: CRM 2011

Berechnetes Feld in anderes Feld übernehmen

$
0
0

Wir hatten die Anforderung, das der Benutzer den Inhalt eines berechneten Feldes (Währung) überschreiben können sollte.

Im CRM kann aber ein berechnetes Feld nicht überschrieben werden. Eine mögliche Lösung wäre natürlich ein PlugIn gewesen, es geht aber auch einfacher über berechnete Felder und Geschäftsregeln.

Wir haben zwei Felder angelegt. Ein berechnetes Feld mit dem Namen Feld1 und ein „normales“ Feld mit dem Namen Feld2.

Das berechnete Feld ermittelt den Wert aus einer zugeordneten Datensatz (Lookup) auf dem Formular.

Das zweite Feld wird über eine Geschäftsregel gefüllt, wenn es nicht leer ist.

Jetzt kann ich aber nicht einem Feld direkt den Inhalt eines berechneten Feldes zuweisen, das berechnete Feld wird mir in der Feldliste nicht angeboten.

Lösung:

Berechnete Felder werden für weitere Berechnungen angeboten so das wir einfach unser Feld 2 über eine Formel füllen, in der das Feld1 mit dem Operator + und dem Wert 0 gefüllt wird, siehe folgenden Screenshot.

berechnetesFeld

berechnetes Feld in anderes Feld übernehmen

Und somit konnten wir die Anforderung des Kunden erfüllen, ohne extra ein PlugIn programmieren zu müssen.

 

 

Why Don’t I See Address Fields on the CRM Import Template?

$
0
0
If you are responsible for importing data into CRM, a convenient way to do so is to use the Download Template for Import option. Clicking on this button will yield an XML file which can be opened in Excel, and will display the fields for your chosen entity. Here you

Read More

What’s New in Microsoft Social Engagement (Update 1.4)

$
0
0

Microsoft Social EngagementIf there’s one thing Microsoft has been doing consistently, it’s rolling out updates to fast-improving Social Engagement.  In 2016 alone, we have seen five updates to Social Engagement, offering improved features and increased functionality. With this Microsoft Social Engagement 2016 Update 1.4, Microsoft is continually chiseling MSE into an important tool for social-media-conscious marketers to consider in their marketing strategy.  Today, we’ll be discussing what’s new with the most recent update of Social Engagement and why it could benefit today’s busy marketers!

 

Custom Tags

custom tags MSECustom tags are an extension of intention tags which were rolled out in a previous update.  Intention tags were a result of Social Engagement analyzing the intent of an author’s post and categorizing it into buckets that it created based on the various intentions of posts.  These intentions are then displayed in the Intention Tags widget in the Conversations page of Analytics. Just like all widgets in Social Engagement, this widget is clickable and can be drilled into.  This ability also means that you can click one of the intention buckets and pull out the post tab to view posts of a particular intention.social media marketing

Now, you can take it a step further and create your own tags for posts.  This practice will be useful as you scroll through posts and want to categorize posts based on your needs for your marketing efforts.  For example, you can create a tag for customer complaints and any post that you need to follow up with to address a complaint can be added to the customer complaint bucket to be addressed once you’ve scanned through your recent posts.  Although custom tags may not seem like a big deal, it is yet another way that Microsoft is equipping social-media-conscious marketers with tools to work as efficiently as possible.

 

Forums as a Source

social forumA continual complaint with Microsoft Social Engagement has been its lack of sources as options to monitor.  However, with this update, Microsoft has added forums as a source that can be included in search topics, streams, analytics, activity maps, etc.

This is an important addition because forums include discussions of various products, services, etc. and allow you to cast a wider net in your social media monitoring efforts.  You can monitor the questions people are asking on forums centered around your brand, product, or service which allows further consolidation of monitoring activities to one place – and who doesn’t love being able to do more job functions in one place!  Additionally, it seems that Microsoft is putting a good chunk of effort into developing more sources.  With Instagram also on the horizon of becoming an integrated source in Social Engagement, Microsoft definitely seems to be channeling resources into integrating more platforms into Social Engagement.

 

Respond to a Public Tweet with a Private Message

twitter monitoringSometimes, a conversation needs to be moved to a private means when you’re helping resolve customer issues.   Now, instead of needing to tab over to your company or brand’s Twitter account, you can send a link to start a private message conversation from within Social Engagement.  This allows you to resolve issues quickly and privately when a problem arises, which in turn better serves your customers!

 

Want Additional Help?

31295141_sIf you’re interested in learning more about Social Engagement, feel free to request our free download on how to listen, understand, connect, and know using Microsoft Social Engagement or check out our upcoming webinars to learn more about how you can leverage Microsoft Dynamics products in your organization. 


Microsoft Dynamics Partner Roundup: Advanced Payroll for AX in Canada; Lead-to-contract CRM Partnership; Dynamics GP for Beer, Wine, Spirits & Specialty Foods; Dynamics NAV for UK Museum

$
0
0

In this week's Microsoft Dynamics Partner News Roundup:

  • Loki Systems Secures First Advanced Payroll AX Sale
  • PROS Partners with Icertis on Dynamics CRM
  • Dynavistics Rolls Out Industry-Specific Solutions for Dynamics GP
  • UK Museum Taps Dynamics NAV as Its New ERP System

Loki Systems Secures First Advanced Payroll AX Sale

LOKI Systems recently completed its first sale of Advanced Payroll AX for Microsoft Dynamics AX on the Azure cloud to Westbrook Floral, a Canadian floral wholesaler with 450 employees.

Westbrook's in-house ERP solution was no longer able to support the needs of its growing business. Impressed with the ca...

read more

Use Microsoft Azure to Create a Mini Data Warehouse

$
0
0

Usually when you hear the words “data warehouse” you think of big database servers and huge costs.  But with Microsoft Azure, you can easily set up a very simple data warehouse for very little cost and make that data available from just about anywhere.

Most companies do not deal with billions of records and transactions in their CRM or other databases.  Therefore, it does not make sense for companies to purchase huge servers and pay enormous licensing, consulting and administration fees for a database server to store simple transactional and summary data.  Now with Microsoft Azure, you can forget about hardware and licensing fees altogether while you are getting started with data warehousing.

Use Microsoft SQL Server Integration Services (included with Microsoft SQL Server) to send data to your Azure database.  Use Microsoft Power BI to visualize your data from anywhere in the world.

TopLine Results specializes in CRM solutions and data management.  Contact us today at info@toplineresults.com to find out how we can help you efficiently and cost effectively manage your data.

About TopLine Results

TopLine Results Corporation is a full-service consulting firm specializing in customer relationship management (CRM) solutions using industry-leading CRM software. Our approach ensures success for our clients' CRM initiatives by helping select and formulate the right tool based on their needs. Implementing these solutions help tie together sales, marketing and customer service to provide a 360° view of customer-facing interactions to better manage, maintain and service every customer or prospect.

Founded in 1999, TopLine Results has successfully implemented CRM solutions for hundreds of satisfied clients. Our company is headquartered near Milwaukee, Wisconsin, with satellite locations in Chicago and St. Louis.

y TopLine Results

The post Use Microsoft Azure to Create a Mini Data Warehouse appeared first on CRM Software Blog.

3 Important Factors to Consider When Replacing Your Legacy CRM System

$
0
0

If you're like many organizations, you installed a CRM system many years ago. It has served you well, but it is beginning to show its age. It doesn't integrate well with your newer hardware and software systems. It cannot be upgraded easily, if at all, and there aren't many partners that can help with that issue, regardless.

However, it is handling all your CRM data, which has grown quite large and complex. You want to replace it, but your entire company relies on this system. All your processes have been built around it, and any disruption will result in lost business, missed transactions, and, in some cases, regulatory problems.

This is what happened recently with a large investment advisory firm managing tens of billions of dollars, 25,000+ clients, and more than 100 institutions including Fortune 500 corporations, governments, foundations, and endowments.

Businessmen Using Tablets

All operational activity interacted with the firm's legacy CRM system in some way, including financial applications and document management. Plus, the system was key to 2,000 users and functioned as the system of record for compliance and served internal departments for regulatory and audit purposes. At the same time, the system showing its age: It was not flexible enough to handle the firm's plans for growth, it was difficult or impossible to customize, and it posed security and compliance risks.

Determining that the risks of remaining on the aging CRM system outweighed the risks of changing, the firm looked for an alternative. They found a solution that fit the three major criteria they needed to meet with a new system:

Knowing it's the right time

While there is never a good time, this firm realized that remaining on the legacy CRM system not only posed a risk to their growth, but also posed genuine risks to them and their clients in the form of system security and regulatory compliance.

Finding the right software

As the replacement for the legacy system, the firm chose Microsoft Dynamics CRM because of its power, flexibility, and dependability. The software would be able to handle all the issues the legacy system could not, and it was able to grow with the company.

Finding the right partner

Choosing the right partner ensures that your software selection will be implemented properly, with minimal impact and maximum benefit to your business. In the end, the firm selected Green Beacon as its partner, largely because of Green Beacon's expert knowledge of Microsoft Dynamics CRM, especially in the financial services industry. Green Beacon is also known for planning, coordinating, and implementing large-scale CRM projects with no downtime or loss of data.

Success Story: Wealth Management Company Moves Off Legacy CRM System

To learn more about how Green Beacon was able to help this wealth management company move off its legacy system and use Microsoft Dynamics CRM to handle its growth, manage its security and regulatory concerns, and function as the backbone of the entire business, read their success story.

by Green Beacon Solutions

The post 3 Important Factors to Consider When Replacing Your Legacy CRM System appeared first on CRM Software Blog.

1 Totally Unexpected Tip to Improve Sales Team Performance

$
0
0

“Ever since I started having my team re-key data before sales meetings, sales performance has improved” … said no Sales Manager ever.

Or at least not until a few weeks ago when I was on a ride-along on sales meetings for a client.

One of the cardinal sins of a CRM project is requiring your sales team to re-key data. In fact, many organizations make big investments into data integration to save their teams from the hassle of re-keying data.

CRM Sales Performance Improvement

So when this Sales Manager told me about the improvement his team had seen since starting to re-key data, I was more than a little bit skeptical.

Then he showed me the numbers. And the numbers were good! He pointed to a specific point in time where the number of won opportunities and completed activities began a sudden and steady incline.

Here is his counter-intuitive secret to improving results.

First of all, his company did focus a lot of time and energy on eliminating re-keying. Their CRM solution has a great view of extensive customer and prospect data without requiring re-entry of data.

But after years of sales meetings to review call reports, track completed activities, and discuss open opportunities, he made one simple change.  He created an Excel report of weekly metrics and he required each member of the sales team to find their metrics in a CRM dashboard, and re-key them into the spreadsheet.  It took about an extra 2 minutes each week.

CRM Sales Dashboard

The rules he followed:

The metrics were few and simple. In his case, they were 5 key metrics having to do with opportunity and activity management.

The metrics were in CRM. The only way his team could capture their metrics was if they were keying the right things into CRM already.

The metrics were in dashboards. The team didn’t have to hunt around to find the metrics – they went to a single place each week to find their metrics.

So how did this change behavior? Why not just open the dashboard where they were getting the numbers and use that for the sales meeting each week?

Well, as a matter-of-fact, that’s exactly how the Sales Manager had been running his meeting for nearly two years. But when he started to require that each member of the team find and re-key their own number, it created a psychological impact. Suddenly they started paying closer attention to their number. When activities or opportunities slipped through the cracks, they began to proactively fix the problem on their own.

Now the Manager spends less time holding people accountable in meetings – they hold themselves accountable. More activities are completed, fewer opportunities slip through the cracks.  And reps are spending more time thinking proactively about the week ahead. The Manager spends time more helping to advance opportunities, and meetings are shorter.

Apply it: This is far from a proven approach. Give it a try on your own or with your team and let me know how it works for you.
For more tools to streamline your sales process, check out our free resources.

What Companies are the Best Fit for Microsoft Dynamics CRM Online?

$
0
0

According to research provided by Microsoft, what companies are the best fit for Microsoft Dynamics CRM Online?

The answers to these three questions provide some clues:

1)What size companies are the best fit for Microsoft Dynamics CRM Online?

Typically companies with 50 – 300 employees. Typically between 10% - 20% of employees have customer facing roles and can make use of a CRM solution.  This means the company would need 10 to 60 CRM seats (licenses). Note, the minimum seat count is 5.

An exception to this would be if your company has below 50 employees but 5 or more of them are in “customer facing” roles such as sales, customer service, executives/owners/partners, etc.) you would still be a good fit for Microsoft Dynamics CRM Online. For example, a brokerage or wealth management firm.

2) What industries are the best fit to use Microsoft Dynamics CRM Online?

Commercial businesses with product or services portfolio are a great fit for Microsoft Dynamics CRM Online. As of 2013, Manufacturing, retail and consumer goods, professional service organizations made up nearly 60% of Microsoft’s current CRM Online portfolio.

On the other hand, Government and Financial Services tend more toward on premise solutions and/or can require significant customization.

3) What are some common characteristics of companies that benefit from Microsoft Dynamics CRM Online?

Although many types of companies are a great fit for Dynamics CRM Online, here are a few things they have in common:

  • Company revenue comes from both new business and repeat business from existing customers. For example, Dynamics CRM Online can help this organization with building customer loyalty and cross selling.
  • Company may have a small IT staff or perhaps just a single individual.
  • Company has a sales team and/or a service team that either reaches out to or receives inbound customer inquiries/calls. Dynamics CRM Online especially benefits people in “customer facing” such as outbound sales, field service teams, telesales, inbound customer care.
  • Company is passionate about ensuring a positive customer experience.

Is your company a fit for Microsoft Dynamics CRM Online? We’d like to give you a more specific answer to this question.

Contact AbleBridge at AbleBridge at 877-600-2253 or info@ablebridge.com.

By AbleBridge, Microsoft Dynamics CRM Gold Partner, www.ablebridge.com

728X90

The post What Companies are the Best Fit for Microsoft Dynamics CRM Online? appeared first on CRM Software Blog.

Viewing all 13977 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>