Thursday, 3 January 2013

EDI for MSD Ax

We have seen a few facts about Microsoft Dynamics CRM these days, Lets loop the Axapta too, so that we can have the knowledge of all Microsoft Dynamics Platforms.

There are few Facts which are Trending EDI for Microsoft Dynamics Ax.

Here’s What’s Trending:

#1 – End to end automation
Pushing a button to integrate a transaction used to be great as it saved time over manual entry. But now users are asking, “Why do I have to push a button and who is going to do it at 2am?” They want automation of key EDI process that gives them the flexibility and security they’re looking for.

#2 – Manage EDI by exception
Dynamics users don’t want to deal with every transaction, only the issues that need attention. Managing by exception lets the transactions without discrepancies continue without interruption and eliminates unnecessary manual touch points.

#3 – Leverage standard Microsoft integration framework
Writing directly to tables and bypassing business logic is not best practice. By leveraging integration tools such as Microsoft’s e-Connect, Application Integration Framework(AIF) and XMLports/Web Services, users can avoid custom routines that populate data and bypass standard business logic.

#4 – Deeper and broader integrations
Users need more advanced logic, such as touching specific values in a sales order or handling advanced three-way matching logic. They also need broader document integrations so they can get new documents integrated quickly and easily to avoid jeopardizing trading partners relationships.

#5 – Avoid transaction fees
EDI data is a lot like email – would you pay to send an email? Right, then why pay for transactions when you don’t need to, especially when your trading partners support direct connect?

#6 – Audit the transactions
Too many companies complain about the lack of tools available that can identify issues before they become problems. They wonder why they can’t find out that an invoice was not transmitted and/or received by a partner before it is overdue. They would rather receive an email alerting them when a document has failed.

#7 – Guaranteed support turn-around times
In the world of EDI where delays and errors in transacting data can result in unnecessary and costly expense, organizations don’t have the flexibility of waiting for support responses.

Answering the Trends Responding to these trends is an innovative EDI technology model that Dynamics users are rapidly adopting. Users are looking to an EDI solution that is based on leveraging the native integration framework of the ERP platform while providing all of the EDI transaction functionality outside the application¸ not inside like other EDI technologies. With this approach, companies can:

• Implement a plug-and-play, truly integrated solution that doesn’t utilize 3rd party translator tools;
• Leverage a fully-automated EDI solution with predictable ownership costs; and
• Benefit from a non-embedded design and XML data storage within SQL that avoids ERP requirements and customizations, simplifying daily use and providing flexibility when managing ERP update/upgrade projects.

The Next Step with EDI Learn more about this growing trend in Dynamics EDI and what your EDI solution should deliver. Read how other companies have successfully implemented a new strategy to increase the impact EDI has on their business and how they have exceeded their expectations in simplifying EDI integration and compliance.

Tuesday, 25 December 2012

CRM 3.0 Performance Story

CRM 3.0 Performance Story

Microsoft CRM V3 was designed with performance in mind. We dedicated significant resource bandwidth and timeline to ensure that we tackle performance issues early and reliably. We laid out a performance plan during the engineering cycle, followed it closely, reviewed it frequently, revised it as and when necessary and adhered to it as part of our overall release criteria. In this blog, I will highlight some of the key aspects of this plan.

Performance Plan
With previous version of our product, we had a few known areas for improvement therefore our performance plan required dedicated attention to these areas. However that alone wasn’t sufficient, we needed to ensure that we could reliably measure key performance indicators and ensure that we don’t falter as product goes through engineering cycle. We also wanted to make sure that our partners and customers could benefit from our investments and plan their deployments with reliable performance characteristics.

With these broad goals in mind, we incorporated following elements to our overall performance plan.

  1. Depth Test – Address known problem areas
  2. Breadth Test – Establish a repeatable performance benchmark
  3. Stress Test – Identify and address product limits under stress
  4. Performance Toolkit – Leverage in-house work to help our partners & customers plan their deployments
Depth tests included targeted projects that addressed well established product areas where performance was a suspect and where key team members – program manager, developer(s) and tester(s) had targeted on-going investigations. A key element of the revised performance plan was to incorporate a breadth element – A CRM Performance Benchmark that exercised product features against a well known configuration and that provided results with-in acceptable degree of variance each time. The benchmark would allow us to measure product performance repeatedly, build over build and ensure that our performance did not worsen with any code changes.

The benchmark also would allow us to put product in severe conditions (low memory, high transaction rates, large databases, low network bandwidth….) and identify its limits.

We wanted to make sure that our performance investments were not adhoc but strategic that we could use ourselves in future releases and that we could share with our partners and customers so that they can plan their deployments with predictable and reliable performance characteristics.

The Benchmark
We set out to build a performance benchmark that reflected not only our product features but also how we envision our customers using our product on a regular basis. We engaged a third-party with expertise in performance benchmarking to help us establish such a benchmark. The end result was a measurement model that included following elements.

  1. Real world scenarios
  2. Organization profiles for test data-set and transaction rates
  3. Target response times and acceptance criteria

To model real world usage, we profiled our users in to various personas from Business Executives such as VP of Sales/Marketing who is primarily interested in reports; Sales / Marketing / Support Professionals who is working with Accounts & Contacts on various day-to-day activities; Receptionist who is primarily dealing with appointments; Administrator who is updating settings, customizing product etc… To identify scenarios we incorporated third party research data (partially gathered from our existing customers and partially from industry research) and we engaged each of our product feature area engineering unit team to estimate usage of their newly identified features and validate third party research data. As a result we had a collection of scenarios that had usage statistics across all personas.

A scenario consisted of end to end operation such as create an opportunity – that involved navigating to leads, opening a lead, updating the lead, converting it to an opportunity, updating it, attaching a note to it and saving it. Each discrete operation was identified as individual web test. Thus scenarios consisted of one or more web tests and they shared common web tests such as navigating to a page, looking up a particular record, etc…

We profiled our organizations and broadly classified them in three categories – small business customers who purchase our Small Business Server Edition and have very small concurrent user base (10 or less), medium size businesses who have 100 or so concurrent users and departments in large organizations who have 1000 or so concurrent users. We specified distinct deployment topology for each organization profile (a single small business server for the first, a dedicated CRM Server, dedicated SQL Server for the second and high-end SQL Server (64-bit edition) for the third). We also built the data set for our scenarios that provided depth of data that was realistic. For example an Account had to have a few contacts, a few activities, notes and account hierarchy (sub accounts, parent accounts…). Our performance test team built data population tools that could generate the random data samples as well as the depth based on specifications in an XML file (more details later in how you benefit section).

We set target response times for the scenarios (i.e. for each of the individual web test with-in the scenario) and were mindful of organization profiles, their transaction rates and the hardware topology. As the tests ran from build to build and the observed response times were not expected to be identical each time (network, I/O, number of times each web tests ran etc as contributing factors for the variance), we specified acceptance band that allowed a small degree of variance as below.

  • Green – 10% variance or 1 second absolute value
  • Yellow – 50% variance or 5 second absolute value
  • Red – anything worse than yellow
With all necessary elements in place, we had a credible benchmark that all we had to do was to implement and put it in regular use.

Putting it all together
We experimented with performance and load simulation tools that we could use. An important aspect of our overall performance plan was to make sure that we could allow our partners and customers to reuse our work for their own configurations therefore an expensive off the shelf performance tool was ruled out. We looked in-house for available tools and found the Visual Studio Performance Tool to be a good starting point. Our test team had already built great data generation tools (tool also accommodated time element for appointments so that service scheduling scenarios had resources with pre-existing appointments in their calendars far more in number in near future than in distant – much like our real life work calendars). Our test team then diligently implemented all the web tests to mimick our scenarios. We brought scenarios on-line in groups first simple web tests, then we incorporated Outlook Client synchronization (simulated at the server), we then brought in reporting, service scheduling, marketing automation, bulk imports, workflow… Slowly and slowly we had entire benchmark online. We encountered issues for sure. Each time we hit a snag, we had corresponding feature team engaged closely. Reporting feature team, Service Scheduling feature team, Marketing Automation feature team, Workflow feature team all had their fair share of woos when we brought all these elements together and much to their credit, they identified and resolved issues timely and across feature boundaries to keep the benchmark up and running.

We published results on weekly basis and had the team excited about making the lights go green. Below is the screenshot of the actual report we published before the release of the product where we ran over 100 tests and most passing in green band.


Scenario (Test Script)
Goals
Build 5289
Build 5294
Build 5300
AccountActivityRollup
2000
897
3144
2602
… 
CreateEmail
10000
2677
8862
7492
CreateList
3000
228
377
408
DeleteContact
50000
1117
28313
7430
… 
DisplayAppointments
20000
9871
14301
17727
SalesHistoryReport
30000
0
29309
11192
SalesPipelineReport
30000
2609
21235
8201
SearchAvailability
10000
3352
0
12299
SyncToOutlook:DoPrepareSync
30000
11977
24837
22434
SyncToOutlook:SyncItemByTypeForContact
10000
712
728
900
SyncToOutlook:SyncItemByTypeForTask
10000
189801
4486
5679

How you benefit?
We have already released the performance toolkit. You can download it and start customizing it for your topology and project usage. For example you may choose to have lighter or heavier data set than we used in our benchmark. You may choose to alter the transaction rates and frequencies for different web tests. This allows you to model the environment to your taste. In our case, we chose to model Sales, Service, and Marketing activities evenly but your organization may be sales or service centric and therefore may choose transaction rates accordingly. With appropriate scenarios, their frequencies and dataset in hand, you can next determine your target hardware and run the tests to see the response times. With new generation of hardware machines you can enable/disable processors to see if a dual proc would suffice or you would rather have a quad proc. You can do the same to identify the optimal memory size.

Carrying over the work in future
We started the performance work as a planned milestone in V3 and therefore went through early fits and starts. It took us a while to get all elements – the plan itself, the scenarios, the tools, the reporting etc… in place. As we start building next generation of our product, we have incorporated this process in our engineering milestones. With V3, we have laid a good foundation that we continue to use and refine further. We are in the process of improving our benchmark to incorporate new scenarios, identify new topologies and workloads. We are improving our tools. Our product team is excited and fully on board with getting us all green builds.

Customization Prefix

Many people often forget to set the Customization Prefix when they customize CRM. When you create new entities and attributes CRM automatically creates tables and columns for you in its SQL Server database. It adds the Prefix to the names of those tables and attributes. CRM’s Web Services and underlying platform also uses these ‘schema names’ when referring to entities and attributes. The Prefix is designed to ensure a level of uniqueness amongst customizations and to help System Administrators understand the source of a customization. I highly recommend that all customers and partners set the Prefix of their CRM systems to something unique (like an abbreviation of their company name).

To set the prefix simple navigation to Settings > Organization Settings > System Settings. Then in the customization tab there is a single text box allowing you to set the Prefix.

Related Entity Data in Excel Spreadsheet

Related Entity Data in Excel Spreadsheet

The grids in Microsoft CRM 3.0 don’t have related entity information.  You can’t for example look at a list of opportunities and see the account rating or account territory of the opportunity’s potential customer on the same row. 

With the export to dynamic Excel feature in 3.0, you can actually edit the spreadsheet query in Excel and bring in information from related entities.

Here is an example.  Say you want to analyze your open opportunities by account territory.  Navigate to Sales > Opportunities > Open Opportunities in Microsoft CRM 3.0 and click on export to Excel button on the grid toolbar.  That will bring up the following dialog, choose Dynamic Worksheet.

Open the Excel spreadsheet (choose “Enable Automatic Refresh”). Now right click on the data and choose Edit Query:

Click OK to this dialog and then OK again to the dialog afterwards.


That should bring you to the Microsoft Query editor.  Now click on the SQL button on the toolbar to bring up the SQL statement editor.

Notice that you can modify the SQL statement to bring in more data into the spreadsheet.  So for example, to bring in the Account Territory information of the Potential Customer, edit the SQL to be the following:

SELECT         opportunity.name as 'name',
opportunity.estimatedvalue as 'estimatedvalue', opportunity.estimatedclosedate as 'estimatedclosedate',
opportunity.customeridname as 'customeridname',
opportunity.opportunityid as 'opportunityid',
account.territoryidname as 'territory'
FROM             FilteredOpportunity as opportunity JOIN FilteredAccount as account
ON opportunity.accountid = account.accountid
WHERE          (opportunity.statecode = 0)
ORDER BY   opportunity.name asc

Click OK and OK again to the dialog that pops up.  You should now see the added account territory column (territoryidname) in the query editor:

Now click on the Return Data button which will return you to your spreadsheet.  Note that you will also get the opportunityid column appearing which isn’t there before.  Feel free to delete this column and label the territoryidname column in the spreadsheet.  The result should look something like this:


Now you’re ready to analyze your opportunities by the territory of the potential customer.  For example, the following chart created from the data in the spreadsheet shows how much estimated revenue is in each of the sales territories:


(Here I created a pivot chart on top of the data in the spreadsheet list).

Monday, 24 December 2012

Simple Sales Process

Simple Sales Process

Scenario

Bikes Corp has implemented MSCRM 3.0 in order to ensure profitable customer relationships and happy customers. Bikes Corp. sells all kind of bikes to institutional buyers like government, schools etc. Charlie is the owner of the business. Kevin is the sales manager and Nancy is the super salesperson.

Business Process

Bikes Corp has implemented the following sales process:

Step1 à Assign all bigger than 5 million dollars opportunities to Kevin and all remaining opportunities to Nancy.

Step2 à Automatically apply the following sales methodology to each new opportunity:
           
First Stage: The owner of the opportunity makes a phone call to the customer to gather requirements and buying intent. At this time probability of sale is expected to be 25%. All activities for first stage need to be completed within 2 days.

Middle Stage: The owner of the opportunity submits an RFP to the customer. At this time the probability of sales is expected to be 50%. All activities for middle stage need to be completed within 5 days.

Final Stage: The owner of the opportunity closes the deal. At this time the probability of sale is expected to be 75%. All activities for final stage need to be completed within 5 days.

Opportunity Closed: The owner of the opportunity logs the deal into the system. At this time the probability of sale is expected to be 100%. All activities for this stage need to be completed within 1 day.

It should be noted that the opportunity might be lost in middle of any of the sales stages specified above. In that case, the salesperson closes the opportunity as lost. That pushes the opportunity out of sales pipeline.

Step 3 à Notify the opportunity owner each time a new opportunity is assigned to them.

Step 4 à Notify the task owner each time a new task related to the opportunity is assigned to them.

Step 5 à Charlie wants to ensure that things happen on time and owner’s manager is notified each time an activity is not completed by due date.

Workflow Configuration à

Please download the salesprocess_v1.zip file. Unzip it on your machine and follow the instructions in readme.txt.

Ensure that the following workflows are activated:

  • Step 1 à Opportunity Assignment (opportunity entity, workflow rule)
  • Step 2 à Sales Methodology (opportunity entity, sales process)
  • Step 3 à Assignment Notification (opportunity entity, workflow rule)
  • Step 4 à Task Assignment Notification (task entity, workflow rule)
  • Step 5 à Incomplete Task Escalation (task entity, workflow rule)

Process Visibility à

MSCRM 3.0 UI makes the sales process related information available to people in the following manner:

Status of an opportunity à
Click “Sales” on main menu and select “Opportunities” in left navigation pane. A list of opportunities shows up in the right pane. Select the opportunity of interest and double click on it. The opportunity form opens up. Click on the “sales process” tab in left navigation bar. The sales process shows up as follows:
 
Sales Pipeline Report à
Click “Sales” on main menu and select “Opportunities” in left navigation pane. A list of opportunities shows up in the right pane. In the right pane click on reports icon and choose sales pipeline report. The sales pipeline report shows up as follows:
 

NOTE

·        The sales process described above is for illustrative purposes only. Sample rule example in the attached zip file can be extended to address more sophisticated business requirements using MSCRM 3.0 Workflow Manager.
·        The rules related to notification/ assignment and escalation are shown for opportunities. Similar rules can be created for other entities (e.g. – leads, cases etc.) as well by following the examples in the attached zip file.
·        It is recommended that you test the workflow rules in a test environment before you put it in production.

Why You Should be Using Leads

Why You Should be Using Leads

The CRM Lead entity is a transactional style entity which contains individual, organizational and sales pipeline information. One of the advantages of combining these three types of record into a single entity is: de-normalization (ie. All the table is together in one ‘flat’ table – like a single Excel sheet). The advantages of this approach are simple: It’s super easy to import an excel spreadsheet of leads into CRM and sales process efficiency.

The Import advantage is obvious: take a sheet of leads from an event/survey/promotion etc and upload into CRM.  It’s critical that ordinary users can conduct this import without worrying about complex data relationships (eg. Accounts/Contacts/Opportunities). If you have to send your leads to a data analyst to upload then you run the serious risk of lead ‘aging’. CRM’s lead upload functionality is essentially ‘idiot proof’ and I highly recommend to CRM administrators to open it up to their sales staff or at least their sales managers.

The process efficiency advantage is more interesting in my opinion. By keeping the lead entity extremely simple it is much easier for sales qualification teams (eg. Telesales) to work these records.  By not having to worry about full scale Contact, Account and Opportunity records you can quickly sort through the leads to find those which have real potential. In most sales cycles the most drastic ‘drop off’ occurs during lead qualification. This is an area where CRM Customizers need to avoid the temptation to overcomplicate things. The easier it is for leads to be created, uploaded and worked the more likely it is for sales people to participate in the leads process.

The leads entity does contain Personally Identifiable Information (names, emails etc). Many companies are becoming increasingly concerned about the management of such sensitive data (from big data warehouses to Access databases stored on desktops). Consider making lead data anonymous after your qualification process is complete (ie. After the lead has been converted or closed). Over on my personal blog I’ve posted a sample CRM Workflow Rule to manage such a process:  http://www.philiprichardson.org/blog/post.aspx?id=30 

CRM Content Alert for Sandbox

CRM Content Alert for Sandbox

Lets discuss about a feature we have in our Microsoft CRM Sandbox so that those of you who haven’t discovered it, will be able to leverage this capability of the Sandbox to your benefit.

What’s Microsoft CRM Sandbox?

It is a GotDotNet project created for Microsoft CRM users to share knowledge with other Microsoft CRM administrators, customizers, users and developers.

Here you’ll find unique downloads that you can only get here, posted by members of the site which includes members of Microsoft CRM Team! You’ll also find a well managed message board where members of the community share information plus an array of other useful functionalities.



What feature am I introducting today?
The “New Content Alert” feature on the Sandbox. See highlight below:

What does it do?
1.        We, the Microsoft CRM Team, will post to this message board whenever there is new content pertaining to Microsoft CRM.
2.        By subscribing to the topic of interest to you (i.e. you want to know whenever a new whitepaper is released for MS CRM), you’d receive email alerts.
3.        That way, you will ALWAYS be up to date on the LATEST information and updates for Microsoft Dynamics CRM!

Where is it?
1.        Go to http://codegallery.gotdotnet.com/crm
2.        If you scroll all the way down, you’d see in the box labeled “Messages”, a list of all the message boards we have.
3.        Announcements New Content” is the one we want.

What do I need to do?
1.        You’ll see several threads on that page (i.e. Downloads, Marketing, Whitepapers)

2.        Click on the topic that you’d like to be alerted about.
3.        Click Subscribe.
4.        You’re DONE!
5.        Now sit back, relax and get ready to receive alerts.