We ran into a fascinating issue when creating Routing Rule recently.

Here is the rule:

image

This is fairly straightforward, but for some reason, we had an issue where the rule was not firing as we expected.

I turns out that behinds the scenes, CRM actually creates a workflow to handle the magic required to route the email.

Normally, you never really see these workflows run because they have the flag set to delete the history if the workflow was successful

But unfortunately, in our case, something was not configured correctly in this workflow and it was failing:

image

We modified the rule slightly and everything seemed to work fine after that. (I wasn’t the one doing the modification so I an not exactly sure what was changed.

Anyway, the moral of the story is that if you ever see strange workflows, that you did not create, failing, see if they are Routing Rules.

SCOM Pack for Dynamics CRM 2013 is out.

The views, monitors, rules, and knowledge specific to Microsoft Dynamics CRM 2013 that comprise this Management Pack provide the means for System Center Operations Manager users to centrally manage the server application, its component services, and the computers on which they run. The Monitoring Pack for Microsoft Dynamics CRM 2013 also contains monitoring for the Microsoft Dynamics CRM 2013 E-mail Router and Microsoft Dynamics CRM 2013 Reporting Extensions.

By managing these Microsoft Dynamics CRM components in System Center Operations Manager, the administrator can respond quickly to critical events and key performance indicators, and take action to prevent service outages, reduce the resolution time for alert conditions, and increase the overall availability and performance of the Microsoft Dynamics CRM system.

Feature Summary

  • Monitors the availability and heath of the following components
    • Microsoft Dynamics CRM Server 2013
    • Microsoft Dynamics CRM 2013 E-mail Router
    • Microsoft Dynamics CRM 2013 Reporting Extensions
  • Monitors the availability and health of the following component services:
    • Microsoft Dynamics CRM Asynchronous Processing Service
    • Microsoft Dynamics CRM Asynchronous Processing Service (maintenance)
    • Microsoft Dynamics CRM Sandbox Processing Service
    • Microsoft Dynamics CRM E-mail Router Service
    • Microsoft Dynamics CRM Unzip Service
    • World Wide Web Publishing Service
    • Indexing Service
  • Monitors the availability and health of the following application components and functionality:
    • Operability of ISV plug-ins
    • Web application requests processing, SOAP exceptions, and unexpected failures
  • Monitors the performance metrics of the following components:
    • Web application requests processing
    • Database query processing
  • Monitors the system for configuration-related failures

Here is a small method to help you determine if a User is a member of a specified Team:

Just a reminder that today is the last day to register for next week’s workshop:

JavaScript Development with Dynamics CRM

http://www.xrmcoaches.com/2014/08/upcoming-webinar-javascript-development-with-dynamics-crm/

Join while you can.

This turned out to be a very valuable article.

Error: 

Email Router configuration error "Incoming Status Failure: No results were found"

In our case, it was because the mailbox was hidden.

 

Configuration:

  • Dynamics CRM 2013
  • Exchange 2007

Hi Everyone,

Just wanted to send you a reminder that next month we are holding two workshops for Dynamics CRM developers:

Plugin Development with Dynamics CRM

JavaScript Development with Dynamics CRM

This may be the last offerings of these workshops for the remainder of the year.

Let me know if you have any questions.

Thanks, Mitch

Just wanted to send everyone a final note about the CRM Architect class that starts next week.

You may register using the following link:

https://www.eventbrite.com/e/becoming-a-dynamics-crm-architect-tickets-12744514185

Registration ends at 1:00pm CDT on Monday, August 25th.

The purpose of this class is to discuss the basic technical areas of expertise and skillsets that must be developed on your path to becoming a Dynamics CRM architect. In part, if not in full.

Much of the class involves group discussions for scenarios based on the requirements of real–world Dynamics CRM customers. We will discuss the requirements, the options, and finally the proper solution.

Finally, we will actually design, from scratch, a Dynamics CRM system for two separate customers.

 

Dates

Week 1: August 26th and August 28th

Week 2: September, 2th and September, 4th

Week 3: September, 9th and September, 11th

Week 4: September, 16th and September, 18th

Week 5: September, 23rd and September, 25th

Week 6: September 30th and October 2nd

Times

8:00am–10:00am CDT (UTC -5)

 

Cost

$2,495 per student

 

Agenda

 

Week 1: Introduction to the Dynamics CRM tools and technologies.

The two sessions of the first week will be exploring the tools and technologies that an architect needs to know and understand in order to properly select solutions for a given problem or requirement. The Tuesday session will focus on server–based technologies while the Thursday session will be focused on client technologies.

 

Week 2: Feature–based scenarios.

Week 3: Feature–based scenarios.

Week 4: Feature–based scenarios.

These sessions will consist of scenario–based training where we will review the requirements for a specific aspect of a customer’s CRM system, discuss the alternatives, and select what we feel is the proper solution to the problem. Each session will usually cover four scenarios but that will vary depending on the breadth of the requirement.

 

Week 5: Case study and system design. Scenario #1: Sarah’s Personal Concierge Service

Sarah has been a personal concierge for the past five years and would like to grow her business, bring on additional employees, while maintaining the personal feel that has made her in such demand.

 

Week 6: Case study and system design. Scenario #2: Billy Joe’s Oil and Gas Works

Billy Joe is an up and coming wildcatter who wants to build an oil and gas exploration company using cutting–edge technology and processes so he can get the most productivity with the lowest overhead possible.

Please let me know if you have any questions

I was trolling the Xamarin.Forms forum when I saw this question:

Can you limit a Slider to only allow integer values? (Hopefully snapping to the next integer)

I dug around a bit I found this solution on StackOverflow.  I did a quick and dirty conversion to Xamarin.Forms, but wanted to make it a little better, more Xamarin.Formy.

So, here is the answer to this question:

 

ExtendedSlider Class

The first thing we need to do is create a new Slider class that has our “stop” value, which we do using the following code:

public class ExtendedSlider : Slider
{
    public static readonly BindableProperty CurrentStepValueProperty = 
           BindableProperty.Create<ExtendedSlider, double>(p => p.StepValue, 1.0f);

    public double StepValue
    {
        get { return (double)GetValue(CurrentStepValueProperty); }

        set { SetValue(CurrentStepValueProperty, value); }
    }

    public ExtendedSlider()
    {
        ValueChanged += OnSliderValueChanged;
    }

    private void OnSliderValueChanged(object sender, ValueChangedEventArgs e)
    {
        var newStep = Math.Round(e.NewValue / StepValue);

        Value = newStep * StepValue;
    }
}

All this really does is converts the current slider value from a double, into an integer.

 

Demonstration Page

Here is a fully functional demonstration page:

public class SliderDemo : ContentPage
{
    public SliderDemo()
    {
        var sliderMain = new ExtendedSlider
        {
            Minimum = 0.0f,
            Maximum = 5.0f,
            Value = 0.0f,
            StepValue = 1.0f,
            HorizontalOptions = LayoutOptions.FillAndExpand,
        };

        var labelCurrentValue = new Label
        {
            HorizontalOptions = LayoutOptions.CenterAndExpand,
            BindingContext = sliderMain,
        };

        labelCurrentValue.SetBinding(Label.TextProperty, 
                                        new Binding("Value", BindingMode.OneWay, 
                                            null, null, "Current Value: {0}"));

        var grid = new Grid
        {
            Padding = 10,
            RowDefinitions =
            {
                new RowDefinition {Height = GridLength.Auto},
            },
            ColumnDefinitions =
            {
                new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)},
                new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)},
                new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)},
                new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)},
                new ColumnDefinition {Width = new GridLength(1, GridUnitType.Star)},
            },
        };

        for (var i = 0; i < 6; i++)
        {
            var label = new Label
            {
                Text = i.ToString(CultureInfo.InvariantCulture),
            };

            var tapValue = i; // Prevent modified closure

            label.GestureRecognizers.Add(new TapGestureRecognizer
            {
                Command = new Command(() => { sliderMain.Value = tapValue; }),
                NumberOfTapsRequired = 1
            });

            grid.Children.Add(label, i, 0);
        }

        Content = new StackLayout
        {
            Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 10),
            Children = { grid, sliderMain, labelCurrentValue },
            Orientation = StackOrientation.Vertical,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand
        };
    }
}

If anyone has a better way of doing this, then please let me know.

I’ll probably add this to the Xamarin.Forms Labs project sometime this week.

,

I am holding another Dynamics CRM Plugin Development workshop next month. The goal of the class is for me to teach you everything I know about plugin development.

When:

Monday, September 15th through Thursday, September 18th. 1:00pm – 5:00pm CST each day.

 

Where:

Online using GoTo Meeting

 

What:

This is a hands-on workshop with each student provided their own virtual development environment for the duration of the class

 

Cost:

$895 per person (multi-student discounts available)

Note: Due to the interactive nature of this workshop, it will be limited to 10 students.

Eventbrite - Plug-in Development with Dynamics CRM (September)

 

Agenda:

  • Plugin architecture and design
    • The Dynamics CRM execution pipeline
    • The how, why, and where of plugging into Dynamics CRM
    • Performance considerations
    • Working in the sandbox
  • The development environment
    • Setup
    • Source control
    • Working in teams
  • Deploying plugins
    • To CRM
    • In a solution
    • To CRM Online (if applicable to the student population)
  • Debugging plugins
    • Synchronous vs. asynchronous
    • Full-trust vs. sandboxed
  • Custom activity architecture
  • Design features
  • Deployment
  • Asynchronous process monitoring
  • System job cleanup and maintenance
  • Open-lab time
  • Upgrade scenarios
  • Code-recovery of lost source plugin code

Thanks to our virtual development environments, the majority of our time will be spent actually designing and developing real-world plugins. Think labs. Lots and lots of labs.

Students will also be asked to bring one project with them that they would like to create while additional resources are available to them. This is strictly optional, but it is available.

In addition to the workshop materials, each student will receive additional tools and code templates to help increase their productivity as a Dynamics CRM plugin developer.

Finally, all students are free to keep any work produced during their lab-time as well as the tools and templates used in class.

Eventbrite - Plug-in Development with Dynamics CRM (September)

I am very excited to announce that my workshop on Dynamics CRM JavaScript Development is now ready. The goal of the class is for me to give you a very thorough introduction to using JavaScript within Dynamics CRM.

When:

Monday, September 8th through Thursday, September 11th. 1:00pm-5:00pm each day.

Where:

Online using GoTo Meeting.

What:

This is a hands-on workshop with each student provided their own virtual development environment for the duration of the class.

Cost:

$895 per person (multi-student discounts available)

Note: Due to the interactive nature of this workshop, it will be limited to 10 students.

 

Eventbrite - JavaScript Development with Dynamics CRM (September)

 

Student Prerequisite Knowledge:

  • Each student must have working knowledge of Dynamics CRM 2011.
  • Knowledge of JavaScript is also required.

Note: For those students that have not worked with JavaScript previously, a short introduction webinar will be conducted the week of September 1st (actual date TBD). Students attending this webinar will be expected to have completed the accompanying self-study materials before Monday's class begins. Everyone must be ready to run on Monday for the main class.

Agenda:

Each classroom day will run from 1:00pm to 5:00pm (CST) with the virtual environments available for student use until midnight of September 4th.

And thanks to our virtual development environments, the majority of our time will be spent actually developing JavaScript solutions for Dynamics CRM.

Think labs. Lots and lots of labs. And homework. There will be homework.

We'll cover the following topics:

  • Creating a development environment
    • Setup
    • Source control
    • Working in teams
    • Working with Visual Studio
  • Working with Web Resources
  • Working with Solutions
  • Working with Forms
    • JavaScript libraries
    • Form events
    • Form Event Handler Execution Context Reference
  • Working with the Xrm.Page Object Model
    • Working with Collections
    • Data operations
    • Tabs and Sections
    • Working with Controls
    • Working with iFrames
    • Working with Navigation Items
  • Ribbon button and JavaScript connection
  • Opening Dynamics CRM Forms and Web Resources via JavaScript
  • Using the XrmSrcToolkit to CRM-related data operations

We will be using about 75 of the methods found in the Xrm.Page object model so you should leave class with a fairly good understanding of where things are and how to access them.

If we have time, we will also cover some of the freely available JavaScript components that can be used to aid in your development efforts and to increase your user's productivity.

Students will also receive a draft copy of my upcoming book on Dynamics CRM JavaScript development along with sample code and utility web resources that should help you kick start your CRM JavaScript development efforts.

Please email me if you have any questions: mitch at crmaccelerators dot net

Eventbrite - JavaScript Development with Dynamics CRM (September)

Sign up for our new KnowledgeBits service and get news, tips and tricks and more, delivered straight to your inbox.