Friday, March 23, 2012

Release: Service Pack 2 of SSIS Integration Toolkit for Microsoft Dynamics CRM


Today, we are happy to announce that the second service pack of SSIS Integration Toolkit is now available for download. The release includes the following updates and fixes.
  • Update: We added a few social buttons to the Connection Manager Editor interface, including an email button, to make it easy for you to reach us
  • Update: We added an icon to the head cell of CRM Destination Component's grid, when Upsert action is selected, and Manually Specify option is chosen as Upsert Matching Criteria. This provides an indication of the column's importance (Thanks Scott for the advice)
  • Update: We disabled the ability to change CRM Connection Manager's service endpoint after it has been created. The reason is, different service endpoint has incompatible metadata. Making change to service endpoint often causes problems to the CRM Source Component or CRM Destination Component that uses the connection manager
  • Update: There is a small change to the License Manager program, so that it now prompts you to save the requested (or activated) license to a file if the attempt of saving the license to Windows registry fails because of insufficient privileges on the system. This gives you the possibility to later install the license file using a different user account in the system
  • Fixed: You might experience the following error message in some environment when you are using SOAP 2011 service endpoint for CRM Source component. "System.ServiceModel.FaultException`1[KingswaySoft.DynamicsCrmServices.Soap2011.CrmOrganizationService.OrganizationServiceFault]: Paging cookie is required when trying to retrieve a set of records on any high pages. (Fault Detail is equal to KingswaySoft.DynamicsCrmServices.Soap2011.CrmOrganizationService.OrganizationServiceFault)." (Thanks to Myles for reporting this issue)
  • Fixed: You might experience the following error message when you are using "Manually Specify" option for Upsert action, with a complex type field (i.e. lookup) selected as the matching field. "There was an error while trying to serialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:query. The InnerException message was 'Type 'KingswaySoft.DynamicsCrmServices.Soap2011.CrmOrganizationService.EntityReference' with data contract name 'EntityReference:http://schemas.microsoft.com/xrm/2011/Contracts' is not expected. Add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'.  Please see InnerException for more details." (Thanks to Jean for reporting this issue)
A new build is now available for download at our product download page.

In order to install the new build, you will need to uninstall the previous version first.

Thank you for reading. 

Wednesday, March 21, 2012

Quick Summary: Microsoft Convergence 2012, Day 4

It's the final day of the event.
Richard Knudson has a nice blog post which summarized the the following four important things from the event. 
  • Big data
  • Cloud
  • Social
  • CRM Anywhere
Richard mentioned that he will host a webinar on Wednesday April 4 to share some more details about the event.

Before we conclude the post, here are three more notes from myself. 
  • Metro and Windows 8 will have some big impacts on the future changes of Microsoft Dynamics CRM platform from user experience perspective. 
  • We might have a robust database engine that is big data ready, but CRM is not really there yet, which is a challenge ahead of us, in my humble opinion. 
  • Another thing that you should watch out is, we all know that we are going to have the cross-browser support in R8. What this brings to us is, we need to write JavaScript code that works for different browsers.  This is not an issue if we only use SDK API, however there are always cases that we need to do a little magic which is not achievable using the SDK API. This is where your talent comes into play.  
This concludes my notes of the event. It was definitely a fascinating event even I was not at the scene. I look forward to being there myself next year. 

Tuesday, March 20, 2012

Quick Summary: Microsoft Convergence 2012, Day 3

It's the third day of Convergence 2012, the event went to its way for more technical details. It might be a pouring weather there, so are the sessions.
The event wraps up tomorrow with a number of technical sessions on their way. 

Monday, March 19, 2012

Quick Summary: Microsoft Convergence 2012, Day 2

Although I am not at the scene, I can smell all the heats, passions at Microsoft Convergence 2012 in Houston, Texas.

In case, you are in the same situation as me that you weren't able to make to the event, here's some fresh juice for you to taste what the event looks like on its second day, which I think is the actual beginning of the show.
  1. Microsoft Dynamics CRM has been mentioned more times than any other Dynamics products in the key note delivered by Kirill Tatarinov (President, Microsoft Business Solutions Division) and Kevin Turner (Chief Operating Officer, Microsoft). 
  2. A lot of details of the upcoming Dynamics CRM R8 release have been revealed in the Microsoft Dynamics CRM key note session delivered by Dennis Michalis (General Manager, Microsoft Dynamics CRM), Craig Dewar (Director - Product Management, Microsoft Dynamics CRM), including cross-browser support, mobile client, social enhancements, SQL Server 2012 support, snapshot of data, Office 365 integration, etc.
  3. There was a demo of upcoming Dynamics CRM metro-style interface, it is very impressive. I suspect that this is not coming with R8, it is most likely something for R9, which is scheduled for the second half of this year (Novemberish). 
  4. A LinkedIn connector/solution for Microsoft Dynamics CRM was announced today, and is coming next week
  5. Microsoft Dynamics CRM Online and Office 365 provides better value together by offering streamlined business process, and integrated user experience, etc.
  6. Snapshot of data could be something very beneficial to CRM online customer. 
  7. There were two analytics sessions for Microsoft Dynamics CRM today which demonstrated some advanced scenarios of business intelligence development for Microsoft Dynamics CRM. 
The list is based on the twits that I read from twitter, which was composed based on my interpretation and speculation, I make no warranties of any kind for the accuracies of the information. Also it is very possible that I could have missed something important in the list, please do let me know if so.

Tomorrow, there are some great sessions coming, including a few sessions that focus on integration, which you shouldn't miss if you are a technical person. If you are more business-focused, you will find a lot of sessions that specifically talk about how you leverage Microsoft Dynamics CRM platform to realize your business values through sales, marketing and service automation.

Monday, March 05, 2012

Release: First Service Pack of SSIS Integration Toolkit

Following our release of SSIS Integration Toolkit for Microsoft Dynamics CRM, we have received a warm welcome by the community. Thanks everyone.

Today, we have released our first service pack for the toolkit which includes the following bug fixes.
  • Fixed: CRM destination component throws error when writing data to currency fields, if SOAP 2011 endpoint is used (Thanks Les for reporting this issue)
  • Fixed: When CRM Source Component Editor is re-opened, the SSIS metadata of CRM fields are always repopulated. If you click OK to dismiss the window without making any changes to the source component, it invalidates the mappings for all the downstream components
  • Fixed: CRM destination component does not handle writing activityparty fields properly for SOAP 2011 endpoint
  • Fixed: You might experience expired token error if your data flow task runs for hours, when SOAP 2011 endpoint is used for CRM Online or IFD deployment
A new build is now available for download at our product download page.

In order to install the new build, you will need to uninstall the previous version first.

Thanks for reading. 

Sunday, February 19, 2012

CRM2011: Get the Right Server URL (Silverlight Version)

After my previous post about how to get the right server URL in CRM JavaScript code, I was asked to provide a translation of the code to C# so that it can be used in Silverlight web resource. So here is post along with the translated code.
public static string GetServerUrl()
{
    var context = GetContext();
    var isOutlookClient = (bool)context.Invoke("isOutlookClient");
    var isOutlookOnline = (bool)context.Invoke("isOutlookOnline");

    var documentUri = HtmlPage.Document.DocumentUri;

    var localServerUrl = string.Format("{0}://{1}:{2}", documentUri.Scheme, documentUri.Host, documentUri.Port);
    if (isOutlookClient && !isOutlookOnline)
    {
        return localServerUrl;
    }

    var baseServerUrl = (string)context.Invoke("getServerUrl");
    var serverUrl = Regex.Replace(baseServerUrl, @"^(http|https):\/\/([_a-zA-Z0-9\-\.]+)(:([0-9]{1,5}))?", localServerUrl);
    return Regex.Replace(serverUrl, @"\/$", string.Empty);
}

// This is the same code that comes from CRM SDK in its SoapForSilverlightSample project.
private static ScriptObject GetContext()
{
    var xrmProperty = (ScriptObject)HtmlPage.Window.GetProperty("Xrm");
    if (null == xrmProperty)
    {
        //It may be that the global context should be used
        try
        {
            var globalContext = (ScriptObject)HtmlPage.Window.Invoke("GetGlobalContext");

            return globalContext;
        }
        catch (InvalidOperationException)
        {
            throw new InvalidOperationException("Property \"Xrm\" is null and the Global Context is not available.");
        }
    }

    var pageProperty = (ScriptObject)xrmProperty.GetProperty("Page");
    if (null == pageProperty)
    {
        throw new InvalidOperationException("Property \"Xrm.Page\" is null");
    }

    var contextProperty = (ScriptObject)pageProperty.GetProperty("context");
    if (null == contextProperty)
    {
        throw new InvalidOperationException("Property \"Xrm.Page.context\" is null");
    }

    return contextProperty;
}
If you are talking to CRM SOAP endpoint, you may get the complete URL using the following code.
Uri serviceUrl = new Uri(GetServerUrl() + "/XRMServices/2011/Organization.svc/web");
If you need to talk to CRM REST endpoint, you may get the complete URL using this one.
Uri serviceUrl = new Uri(GetServerUrl() + "/XRMServices/2011/OrganizationData.svc");
Hope this helps.