Extended Color Palette for Xamarin.Forms

Way back in 2006 I write an article, Cascading Style Sheet Color chart, with a link to a site that created a set of colors that matched the Behr Premium paint swatches.

I thought that might be valuable in my Xamarin.Forms work so I converted their work and created an Extended Color Palette structure using those colors.

There are 760 total colors in this palette.

You can find the source on my GitHub Repro:

https://github.com/MitchMilam/PaletteEx

Microsoft Windows Tip of the Day: Copy a Dialog Box Text

I find it very helpful to have a textual copy of error reports found in dialogs such as the one below:

image

 

If you didn’t already know it is actually possible to get the text of a dialog in Microsoft Windows, in any version that I have ever used, up to and including Windows Server 2012.

Just press Ctrl+C and all of the text, buttons included, will be copied to the clipboard.

Open your favorite text editor and just paste the text into a document like you would any other.

I hope that saves you some time.

Happy Holidays–Celebrate with an End of the Year Product Discounts

Happy holidays everyone!

In celebration for another great year working with Dynamics CRM. I would like to offer everyone a discount on all new product purchases. 

From now until December 31st, 2014, enjoy 25% off of any of our productivity products for Dynamics CRM.

 

Check them out:

Transformer! upgrades your JavaScript from the Dynamics CRM 4.0 object model to a more supported 2011+ object model.

 

SnapShot! is the ultimate documentation tool for your Dynamics CRM organization.

 

Explorer! helps you answer questions about your Dynamics CRM data including:  “Do I really show my users the data they need to see” and “Are my forms properly designed, showing the most important information first?”

 

Thanks again for a great year and may you and yours have a happy and safe holiday season.

Thanks, Mitch

SnapShot! 3.5 for Dynamics CRM Released

A new version of SnapShot! for Dynamics CRM is now available.  See the product page for more information.

 

Enhancements

The following enhancements have been made:

 

Security Privilege Raw Data Report

The Raw Security report now includes the entity name which should better allow you to filter the data to examine the data that is being report back from Dynamics CRM.

 

Empty JavaScript Event Handlers

This may be an edge-case for most people, but for some it might be fairly useful.  Here is the scenario:

You are upgrading your Dynamics CRM system from CRM 2011 to CRM 2013 or 2015 and you have a lot of JavaScript still in the Dynamics CRM 4.0 object model.  That means that you cannot upgrade to CRM 2013 because it will not pass the pre-upgrade checks.

You need to verify the physical upgrade process in your test environment to make sure that everything will work in production, but you have not fully completed the JavaScript upgrade. ( Something that Transformer! is really go at.)

This new feature will create empty JavaScript functions for each Event Handler found on a form.  This allows you to temporarily replace the actual web resources with a web resource consisting of these empty functions, commonly called “stubs.”

This will allow you to verify the upgrade process because you have removed all of the CRM 4.0 JavaScript, and since the functions actually exist within the web resources, your forms will function as they always have and you will not receive “object not found” messages as you would see had you just removed the contents of the web resource entirely. (which is the other option).

 

 

Issues Corrected

The user-security report was not always reporting the correct information in the Custom Entities section, so I spent some type to track down the issue and correct the report. While I was in that area, I also enhanced the report to make it better resemble the Security Role display. The entities are now sorted alphabetically and when no security privilege is found, the white circle is displayed.

Reviewing the Dynamics CRM 2013 LegacyFeatureCheck Logs

image

Here is the detail of that error:

Some plug-ins or custom workflow activities in your system appear to be using the Microsoft CRM 4.0 SDK. Use of the Microsoft CRM 4.0 SDK is not supported in this release. For information about how to upgrade custom code, refer to the Microsoft Dynamics CRM 2011 SDK topic "Upgrade Your Code from Microsoft Dynamics CRM 4.0 to Microsoft Dynamics CRM".
We have detected the presence of legacy component(s) during upgrade, these components are not supported in Dynamics CRM 2013. Please refer to upgrade log file C:\Users\crmadmin\AppData\Roaming\Microsoft\MSCRM\Logs\LegacyFeatureCheck.xml for more information.

When you look at that XML file you will see the following:

<DeploymentVerificationResults xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Result>
    <OrganizationName>***Deployment***</OrganizationName>
    <OrganizationId>00000000-0000-0000-0000-000000000000</OrganizationId>
    <Issues>0</Issues>
    <Results>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>General</Component>
        <ComponentId>00000000-0000-0000-0000-000000000000</ComponentId>
        <Message>Checking for the ISV folder when running on the web server.</Message>
      </VerificationResult>
    </Results>
  </Result>
  <Result>
    <OrganizationName>TestOrg</OrganizationName>
    <OrganizationUniqueName>TestOrg</OrganizationUniqueName>
    <OrganizationId>00000000-0000-0000-0000-000000000000</OrganizationId>
    <Issues>4</Issues>
    <Results>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>General</Component>
        <ComponentId>00000000-0000-0000-0000-000000000000</ComponentId>
        <Message>Checking for Microsoft Dynamics CRM 4.0 plug-ins</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>PluginAssembly</Component>
        <ComponentId>6674346c-b91b-4083-9867-47ca9b0b0dd7</ComponentId>
        <Message>Name: MainPlugin, Version: 1.0.0.0, Length: 21164, Location: 
                 Database, Is V4: True.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Warning</Severity>
        <Component>PluginAssembly</Component>
        <ComponentId>6674346c-b91b-4083-9867-47ca9b0b0dd7</ComponentId>
        <Message>Assembly "MainPlugin" with version '1.0.0.0' 
                 references the CRM 4.0 SDK.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>PluginAssembly</Component>
        <ComponentId>28c70061-56d3-4ec3-a62d-8fb83743a1b3</ComponentId>
        <Message>Name: ISV.MSCrm.Tools.Plugin.Crm40, Version: 7.0.0.0, Length: 98304, 
                 Location: Database, Is V4: True.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Warning</Severity>
        <Component>PluginAssembly</Component>
        <ComponentId>28c70061-56d3-4ec3-a62d-8fb83743a1b3</ComponentId>
        <Message>Assembly "ISV.MSCrm.Tools.Plugin.Crm40" with version '7.0.0.0' 
                 references the CRM 4.0 SDK.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Error</Severity>
        <Component>Plugin</Component>
        <ComponentId>41d526ec-0be1-4b46-84a9-695cc10ff248</ComponentId>
        <Message>'ISV.MSCrm.Tools.Plugin.Crm40.EntityConversionMonitor' 
                  registered for 'Create' of 'quote' appears to be using CRM 4.0 SDK.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Error</Severity>
        <Component>Plugin</Component>
        <ComponentId>41d526ec-0be1-4b46-84a9-695cc10ff248</ComponentId>
        <Message>'ISV.MSCrm.Tools.Plugin.Crm40.EntityConversionMonitor' 
                  registered for 'Create' of 'salesorder' appears to be using CRM 4.0 SDK.</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>General</Component>
        <ComponentId>00000000-0000-0000-0000-000000000000</ComponentId>
        <Message>Checking for web resources accessing the 2007 web service endpoint</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>WebResource</Component>
        <ComponentId>00000000-0000-0000-0000-000000000000</ComponentId>
        <Message>Checking 55 web resources</Message>
      </VerificationResult>
      <VerificationResult>
        <Severity>Info</Severity>
        <Component>WebResource</Component>
        <ComponentId>00000000-0000-0000-0000-000000000000</ComponentId>
        <Message>Did not find any web resources that contain calls to 
                 the 2007 web service endpoint</Message>
      </VerificationResult>
    </Results>
  </Result>
</DeploymentVerificationResults>

 

What you have in this list is the results of a series of tests performed by the validation process.  These tests check various components, such as plugins and web resources, for code that would cause a problem with a function Dynamics CRM 2013 system.

The Severity of the result will dictate if it passes or fails.  Here are the options:

Info is just an FYI message.

Warning contains warning information about a potential problem.  It is not enough to stop the upgrade, but it is something that needs to be reviewed and addressed.

Error conditions will actually cause the validation process to fail and keep you from performing the upgrade.

 

As you can see within the XML, the Error condition exists because one of the plugins is using the Dynamics CRM 4.0 endpoint (what they refer to as the 2007 endpoint).

The solution, in this case, was to remove the plugin assembly and associated steps from the database before proceeding with the upgrade.  That was fine in this case since it was a third-party plugin that we are upgrading anyway.  But, had it been a plugin that was actually used in production, it would have to be written.

Announcing Twenty-One Squared: Self-Study Training for Dynamics CRM

 

Twenty-One Lessons in Twenty-One Days

xRM Coaches

 

I have conducted a lot of training over the past two years but found that I was always missing connections to new students, mostly due to scheduling conflicts or just by them having too busy a schedule to take off work for a couple of days.

Even after I moved most of my training to the half-day model, I still had people who had interest, but no time.

That led me to explorations of other training solutions, one of which is a series of self-study courses I call Twenty-One Squared.

 

The Twenty-One Squared Concept

I wanted to break things into bite-sized chunks of content that anyone could consume in their own time, at their own pace, while also enabling them to get fairly immersed in a topic.

Each lesson is designed to take between 15 and 60 minutes to complete, depending on the subject matter.

These will be hands-on exercises where you not just read about what to do, you actually do it.  Much like the design of my instructor-led courses.

 

Topic Areas

I am working through the final processes of the following topic areas:

  • Dynamics CRM Administration
  • Introduction to Dynamics CRM JavaScript
  • Advanced Dynamics CRM JavaScript
  • Introduction to Dynamics CRM .NET Development

 

Training Format

Each course consists of a training and exercise guide and each lesson is mostly self-contained, though some lessons build on previous topic areas and concepts.

Additional supporting materials are provided as is needed by the course.

 

Need Additional Information?

If you would like to sign up to be notified as the courses become available, the please complete the following survey:

http://www.xrmcoaches.com/21-squared-training-survey

My goal is to make these available in the next few weeks, depending on availability and interest.

 

Please let me know if you have any other comments or thoughts on the concept or the materials.

Just Released: Transformer! 2.9 for Dynamics CRM

My Dynamics CRM JavaScript converter, Transformer!, has been updated to version 2.9.

Visit the Transformer! product page for more information about the product and the conversion process or download the documentation.

 

In This Update:

We have added several additional JavaScript object model conversions:

document.getElementById("tab1Tab")
converts to:  Xrm.Page.ui.tabs.get(1)

document.all.crmFormSubmitId.value
convets to: Xrm.Page.data.entity.getId()

crmForm.all.name.parentElement.parentElement.parentElement.style.display="block";
converts to:  Xrm.Page.getControl("name").getParent().setVisible(true);

crmForm.all.name.parentNode.parentNode.parentNode.parentNode.style.display = "none";
converts to:  Xrm.Page.getControl("name").getParent().setVisible(false);

 

As always, if you find something that did not convert in the way you expected, please let me know so I can perform an investigation and hopefully reach a solution.

New License Available for SnapShot! for Dynamics CRM

I have been working on several upgrade scenarios lately and have decided to offer a new license for my documentation utility, SnapShot! for Dynamics CRM.

SnapShot! is designed to give you a complete snapshot of your Dynamics CRM organization.  Since things change over time, it is normally licensed on an annual basic

But what if you only need to run it once?  That is the question I have always asked myself.  So…

 

Announcing the 7-Day SnapShot! License

This is mainly geared toward situations where you just need to run SnapShot! one time and will not need to use it again for that organization.  This can happen in an upgrade situation, or maybe when you are trying to get a feel for the current state of an organization, etc.

Regardless of the requirements, I hope you find the new license type useful.

 

Visit the SnapShot! product page for more information.

Sharing information and lessons learned with other developers

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