Version 8.0 - January 27, 2017

As of this release the SSIS Integration Toolkit for Microsoft Dynamics CRM became part of the SSIS Integration Toolkit for Microsoft Dynamics 365. For release notes for v8.0 and up please see SSIS Integration Toolkit for Microsoft Dynamics 365 Change Log.

Version 7.4 - October 24, 2016

This release comes with the following important bug fixes:

  • New: We added a new option to Text Lookup feature which allows to skip the record if lookup fails.
  • New: We added an ApiVersion option to CRM connection manager which can be used to overwrite the default API version (or SdkClientVersion) used when communicating with CRM server. This option is not on the UI, but can be set using SSIS Properties window or through ConnectionString.
  • Update: We removed ACS dependency when establishing connections to CRM servers (applicable to CRM online server connections).
  • Update: The license manager now supports co-termed subscription license.
  • Update: We have lowered the minimum requirement of SQL Server editions when using our software.
  • Fixed: For some very unique CRM online instance(s), the auto-refresh of security token can fail which can cause the authentication to fail after the initial token becomes expired.

Version 7.3 - September 15, 2016

This release comes with the following important bug fixes:

  • Fixed: When there is a field in CRM destination component which is not mapped to an input column but is selected as a manually specified Upsert/Update matching field (either through some special UI routines or manually entered), it can cause the Upsert or Update matching lookup to fail, consequently it can result in either creating duplicate records or failing to update the records that actually match.
  • Fixed: When createdby or modifiedby field is mapped in the CRM destination component with a batch size (greater than 1) specified, the CRM destination component may set the first record in the batch to be created or modified by the current user instead of the provided input user.
  • Fixed: In a highly-raced situation when many CRM source components start simultaneously, there is a chance that one of the components fails during the authentication.

Version 7.2 SR-1 - August 18, 2016

This release comes with the following updates:

  • Update: We updated the handling of lookup type fields when the input is not provided.
  • Fixed: CRM destination component throws an exception for Update action when it is using manually specified fields, but no matching record is found, and the destination component's Error Handling is set to "Redirect rows to error output".

Version 7.2 - August 10, 2016

This release comes with the following updates and enhancements:

  • New: Update action in CRM destination component now support all four matching options in the same fashion as we do for Upsert action. Support for the following two matching options was added: CRM Duplicate Detection, Manually Specify.
  • New: We added support of writing to custom Customer type field in the destination component.
  • New: We added a new option to the CRM connection manager - IgnoreCertificateErrors, which can be used to ignore any SSL certificate errors.
  • New: When using the CRM destination component to close an incident, opportunity, quote, or salesorder record, we now support writing to its corresponding close entity, including incidentresolution, opportunityclose, quoteclose, and orderclose.
  • Enhancement: Updated support for CRM 2016 Update 1, including a fix that CRM connection manager might fail for some CRM online instances.
  • Enhancement: When createdby or modifiedby field is mapped in CRM destination component, we now support a Batch Size which can provide some significant performance improvement when it is required to retain values for those two fields.
  • Fixed: When aggregation function is used in FetchXML query, the CRM source component only returns the number of records as specified by the "Batch Size" field. (Thanks to Jason for reporting this)
  • Update: We upgraded the JSON library (Newtonsoft.Json.dll) to the latest version (v9.0.1)

Version 7.1 - May 5, 2016

This release comes with the following updates and enhancements:

  • New: We added support for using Alternate Key for lookup purpose. This enables using more than one key fields for lookup purpose.
  • New: We added column/field filtering capabilities in CRM source component editor window.
  • New: We added support of writing to roleprivileges entity.
  • Enhancement: When reading data from CRM server using the FetchXML option, the virtual fields (such as lookup or picklist name fields) no longer have to be explicitly specified in order for the CRM source component to include those fields.
  • Enhancement: When using FetchXML option in CRM source component, if a linked entity does not have an alias specified, the component will report a warning message. Having a linked entity without an alias specified can cause the Source Component to return empty values for those fields from the linked entity even though there are actually values.
  • Enhancement: Updated support for the latest SQL Server 2016 release candidate builds.
  • Enhancement: CRM source component supports reading more entities when SOAP 2011 service endpoint is used.
  • Enhancement: Running the 32-bit installation package on a 64-bit operating system is now blocked, as doing so makes our connection manager unrecognizable in 64-bit runtime.
  • Enhancement: We removed the requirement of .NET Framework 3.5 SP1 for SSIS 2012 and later.
  • Enhancement: We raised the default connection limit to 100 per host, this eliminates the need of using .config file to overwrite the default .NET framework limit of 2 connections per host.
  • Breaking Change: The entity type code field now has a different CrmFieldType property to describe it in CRM destination component if you work with SOAP 2007 / 2006 service endpoint which is for CRM 4 or 3. An earlier version of our software would not recognize the new metadata. If you have an existing SSIS package targeting a CRM 4 or CRM 3 organization, please make sure you click the “Refresh CRM Metadata” button for each destination component.
  • Breaking Change: If you are using SSIS script component to make service calls to CRM server using our assembly, you need to make a small change when instantiating the CRM service proxy object.
  • Fixed: When using the ExecuteWorkflow action in CRM destination component, if the chosen workflow is a custom action, and the CRM server is 2016 or later, you may find duplicate parameters in the Columns page (Thanks to CRM MVP David Yack for reporting this issue)
  • Fixed: With configuring text lookup feature for many-to-many relationship entity, you may receive an error message saying "'new_xxx' field has an invalid text lookup setting for lookup entity 'new_yyy'" where new_xxx is the lookup field in the intersect entity, and new_yyy is the lookup entity (Thanks to Srinivasulu for reporting this issue).
  • Fixed: In some unique situations, you may receive an error message saying " An input for 'new_xxxtype' field is not necessary, as the allowed type for 'new_xxx' lookup field has already been defined by CRM metadata as 'new_lookupentity'", where new_xxx is a lookup field, and new_xxxtype just happens to have a name collision with the lookup by coincidence.

Version 7.0 - January 22, 2016

This release comes with the following updates and enhancements:

  • New: We added support for SQL Server 2016 (Visual Studio 2015 SSDT for design time).
  • New: The new release is now officially supporting Microsoft Dynamics CRM 2016.
  • New: We added support for AuditLogs Source Type in the CRM Source Component.
  • New: We now support CRM custom actions when using ExecuteWorkflow action in CRM destination component.
  • New: We added a new option in CRM destination component, called 'Remove Invalid Characters'.
  • New: We added a new option in CRM destination component, called 'Change Flag Field(s)'.
  • New: Support of writing to activitypointer entity.
  • New: Support of multi-lingual optionset label values in CRM destination component.
  • Enhancement: We have introduced an aggressive retry mode when reading data or metadata from CRM server, which helps recover from some more intermittent error situations.
  • Enhancement: Improved error handling in CRM destination component when 'Redirect rows to error output' error handling option is used.
  • Enhancement: Some UI enhancements including a more detailed reporting when 'Refresh CRM Metadata button' is clicked, and resizable checkbox column for both CRM source and destination components
  • Enhancement: When working with lookup type fields using SOAP 2006 or 2007 service endpoint, the destination component now also accepts  entity name as the input which was not possible with prior versions. The entity's integer type code is still supported.
  • Enhancement: "Ignore Unchanged Fields" feature is enhanced to support comparison of partylist fields.
  • Enhancement: Significant code refactoring for better performance and improved error handling.
  • Fixed: When writing to the goalrollupquery entity, you may get the following error: 'queryentitytype'.
  • Fixed: When using EntityChanges Source Type in the CRM Source Component, you may get the following error: "Failed to process CRM field 'xxx_fieldname' or one of its related field(s). Microsoft.SqlServer.Dts.Pipeline.ColumnIndexOutOfRangeException: PipelineBuffer has encountered an invalid column index value" (Thanks Sean for reporting this issue).
  • Fixed: When creating salesorder and setting the statecode to invoiced, record was created but its statecode may not be set accordingly (Thanks Michael for reporting this issue).

Version 6.1 - September 15, 2015

This release comes with the following updates and enhancements:

  • New: CRM Destination Component now supports using Alternate Key for Update action.
  • New: We have enabled activitymimeattachment entity for Upsert action in CRM Destination Component.
  • New: We have enabled attachment entity for writing in CRM Destination Component.
  • Enhancement: CRM Destination Component editor automatically sets the Batch Size option to 200 when we detect the server supports CRM bulk data load API.
  • Enhancement: When switching CRM Connection Manager or Action Type, no column mapping is lost unless the entity does not exist in the new connection or not applicable to the newly selected Action Type.
  • Enhancement: The license manager program now works in the system that has FIPS compliance policy enabled.
  • Enhancement: Better handling of empty entries in activityparty (partylist) fields.
  • Enhancement: Some minor UI adjustments including positioning UI windows in the center of parent screens upon initialization.
  • Enhancement: When using EntityChanges as the source type in a CRM source component, we are providing a warning message to indicate that lookup name fields are not returned by CRM server (Thanks to CRM MVP Scott Sewell for the suggestion).
  • Enhancement: Revised error message when there is an error processing the input value for a partylist field.
  • Enhancement: When using a batch size greater than 25 for CRM attachment entities (annotation, activitymimeattachment, attachment) in CRM destination component, you will receive a warning message.
  • Enhancement: When using any action type other than Upsert in CRM Destination Component, the Createable and Updateable custom properties are no longer save in the SSIS package which make the package smaller and load faster.
  • Fixed: When using EntityChanges as the source type in a CRM Source Component, if the Secondary Output is not attached to any subsequent SSIS components, you would receive the following error - 'Value does not fall within the expected range' when trying to run the data flow task or SSIS package (Thanks to Frank for reporting this issue).
  • Fixed: In some cases, when trying to update the statuscode field, and the statecode is not having a value of the default statecode, the record's status is not properly updated when the 'Ignore Unchanged Fields' option is selected (Thanks to Michael for reporting this issue)
  • Fixed: In some special case, when updating the state of a record using a Batch Size greater than 1, you may receive the message "unrecognized request parameter: EntityMoniker" (Thanks to Saran for reporting this issue).
  • Fixed: CRM destination component errors out when createdby and modifiedby fields have been mapped, but their input values are NULL (Thanks to John for reporting this issue).
  • Fixed: When trying to change states of certain entities (ex. salesorder, quotes), CRM destination component may report an error, if the CRM server version is v7.1 or greater.
  • Fixed: With CRM source component, when one field appears twice in the FetchXML query, the CRM source component creates two SSIS columns with identical name (Thanks to Francisco for reporting this issue).
  • Fixed: CRM connection manager may create some undesired behaviors at design-time due to the cache that it is using, such as listing the same organizations even the discovery server URL has been changed.

Version 6.0 - June 9, 2015

This release comes with the following updates and enhancements:

  • New: We added support for CRM Upsert action introduced in CRM 2015 Update 1 release by adding a new Upsert matching criteria – Alternate Key in CRM destination component.
  • New: We now support utilizing the new Update capabilities introduced in CRM 2015 Update 1 release
  • New: We now support the change tracking capabilities introduced in CRM 2015 Update 1 release, our source component now has a new source type - EntityChanges, when selected, there will be an additional output which contains the deleted records since previous pull.
  • New: The toolkit now reports an error when no password is detected during runtime to remind possible deployment-related problems.
  • New: We added support for SSIS Integration Toolkit - Ultimate Edition, you can now license all our SSIS Integration Toolkit products using one single license key.
  • Fixed: CRM connection manager used to save connection information when Test Connection button is clicked regardless of whether the changes are accepted by clicking the “OK” button.
  • Update: SDK Client Version option is now deprecated in CRM connection manager.
  • Update: When no proxy information is entered, IE default proxy is now used.
  • Enhancement: CRM connection manager supports using alternative discovery service URL when the full URL is entered.
  • Enhancement: Empty string input is now treated as NULL when working with non-string type CRM field.
  • Enhancement: Text Lookup accepts null as Optional default value

Version 5.4 - March 26, 2015

This release comes with the following updates and enhancements:

  • New: We introduced a new field called impersonateas which helps support impersonation when working with principalobjectaccess (POA) entity.
  • New: We now support writing to managed property fields.
  • Enhancement: Improved email address support when working with partylist field.
  • Enhancement: More regional URLs are added when Online Federation authentication type is used in CRM connection manager.
  • Fixed: CRM destination components fails to utilize the corresponding type field when working with some special lookup fields.

Version 5.3 - February 26, 2015

This release comes with the following updates and enhancements:

  • New: We added support of integer fields for the Text Lookup feature.
  • Fixed: Text Lookup always uses the first lookup value when it is configured to use Partial Cache mode for SOAP 2011 service endpoint (Thanks to Ilya for reporting this issue)
  • Fixed: With some system regional settings, CRM source component may output incorrect decimal values when SOAP 2007 or 2006 service endpoint is used (Thanks to Alves for reporting this issue)
  • Update: CRM connection manager can now handle special characters in its connection string (Thanks to Xavier for reporting this issue).
  • Update: Text Lookup feature now shows 5 entities instead of 2 in previous version for email entity's "from" field (Thanks to Steeve for reporting this issue to us on Twitter).
  • Update: We have further relaxed the limitations of changing CRM source component's field metadata.
  • Update: Windows Identity Foundation installation is no longer required any more.
  • Enhancement: CRM OptionSet Mapping component is now a semi-blocking component instead of a fully-blocking component in previous versions when "Create Option" is used, which should now have a much more efficient memory usage.

Version 5.2 - December 12, 2014

This release includes the following updates:

  • New: We added support for CRM 2015.
  • New: We added a new Authentication Type in CRM connection manager called OnlineFederation to help simplify the selection of CRM online URLs.
  • New: CRM destination component's output columns (CrmRecordId, IsNew) in its Default Output can now be disabled or enabled.
  • New: We added an "Output Timezone" option in CRM source component, which can be used to specify the timezone of datetime fields' output.
  • New: We added field filtering capabilities in CRM destination component, which include Hide Mapped Fields, Hide Unmapped Fields buttons, and a textbox that accepts a search string (Thanks to CRM MVP Scott Sewell and Andre Margono for the suggestion and feedback).
  • New: We added a Default Value option to Text Lookup feature, so it can default to the value specified if lookup has failed.
  • New: We added a new column in CRM destination component's editor window which can be clicked to map/unmap the field.
  • New: Text Lookup feature is now enabled for Merge action.
  • Update: We have disabled the use of SSL v3 due to its associated security risks.
  • Enhancement: CRM source component has the support for the new FetchXML condition operators introduced in CRM 2015, such as "under", "above", etc.
  • Enhancement: Improved handling of CRM lookup type fields in CRM destination component, particularly "objecttypecode" field (Thanks to Sriharsha). 
  • Enhancement: CRM source component now supports using SSIS variables in its FetchXML query in whichever way you would like to, including using a SSIS variable as the entire query.
  • Enhancement: Improved concurrency management (Thanks to Brian, Steve, Alex and Rama).
  • Breaking Change: The output of "objecttypecode" field is now nvarchar(64), its output value is now the entity's name instead of its integer type code in previous version.

Version 5.1 - October 9, 2014

This release includes the following updates:

  • New: We added a new "Retry on Intermittent Errors" option in CRM connection manager.
  • New: We make the "CRM Server URL" option available for editing in CRM connection manager's editor window.
  • Enhancement: Improved handling of default statecode (Thanks to Sridevi and Sujoy for suggesting this enhancement)
  • Enhancement: You can now set a systemuser record's parentsystemuserid to NULL.
  • Enhancement: We now support reparenting team records (Thanks to Bob for suggesting this enhancement).
  • Enhancement: Improved FetchXML support in CRM source component which now supports aggregate FetchXML queries (Thanks to Lester).
  • Enhancement: We added the capability to remove the extra columns (CrmRecordId, IsNew) from CRM destination component's default output.
  • Enhancement: We added support for a tiered enterprise license.
  • Update: The software's license agreement has been updated.
  • Fixed: In some special cases, you might run into an error saying "System.ArgumentException: Stream was not readable." with either CRM source or destination component if SOAP 2007 service endpoint is used (Thanks to José for reporting this issue).
  • Fixed: In a unique situation, you could run into an "Invalid type For entity id value" error with CRM destination component (Thanks to Bob and Daniele for reporting this issue).
  • Fixed: When using an optionset field for Upsert matching purpose, you could run into an error saying "An exception System.FormatException was thrown while trying to convert input value 'XXX OptionSet Value' to attribute 'YYY_OptionSetField'. Expected type of attribute value: System.Int32. Exception raised: Input string was not in a correct format", where 'XXX OptionSet Value' is your input value for the optionset field, and 'YYY_OptionSetField' is the optionset field's name (Thanks to James and Shiv for reporting this issue).
  • Fixed: In some special case, you might receive an error saying "Cannot access a disposed object" (Thanks to Berel and CRM MVP Scott Sewell for reporting this issue).
  • Fixed: When using Primary Key upsert matching option in a CRM destination component, if "Ignore Null-Valued Fields" option is enabled and the input value of the primary key field is indeed a NULL, you will receive any error message saying "Error: Failed to get value for CRM field 'xxxid' or its value is NULL", where xxxid is the primary key field of the target entity (Thanks to CRM MVP Scott Sewell for reporting this issue).
  • Fixed: When using SSIS 2012 or 2014 project level connection manager, you get an error saying "'Salt' attribute for Password is missing in the project manifest" when the password is stored using EncryptSensitiveWithPassword option (a recent SQL Server cumulative update or service pack is required to work with this fix, thanks to Renato for reporting this issue).

Version 5.0 SR-1 - July 23, 2014

This is a service release which contains the following updates and bug fixes.

  • Fixed: When bulk data load API is used, the default output may contain those records that have failed (Thanks to Patrick for reporting this issue). 
  • Fixed: Under some unique circumstances, you may run into an intermittent error saying "System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.ServiceModel.Security.TransportSecurityProtocol'" (Thanks to Scott and Berel for reporting this issue).
  • Fixed: HomeRealmUri option of CRM connection manager is not respected properly (Thanks to Peter for reporting this issue).
  • Fixed: CRM destination component may fail to list your CRM workflows if any of your workflows has an empty name.
  • Enhancement: Improved login session management.
  • Enhancement: Improved stack trace print.

Version 5.0 - June 10, 2014

This release includes the following updates:

  • New: SQL Server 2014 is now supported
  • New: We added a new action called Convert in CRM destination component which supports converting lead, opportunity, quote, salesorder, and team entity records
    • Lead - Qualify a lead by converting it to CRM account, contact and opportunity records
    • Opportunity - Convert an opportunity record to a quote
    • Quote - Convert a quote to a salesorder
    • Salesorder - Convert a salesorder to an invoice
    • Team - Convert an owner team to an access team
  • New: We added support for createdby, and modifiedby field in CRM destination component
  • New: An Impersonate As option is added to CRM source component
  • New: We added a new output for CRM destination component (Dynamics CRM Destination Default Output), which contains two columns- CrmRecordId to provide the ID of newly created CRM records and IsNew to indicate whether it is a new record or an existing record when Upsert action is used
  • New: Text Lookup feature is now available for PartyList fields
  • New: We added a new option in Text Lookup feature which you can use to Opt Out from using Text Lookup for a particular lookup entity
  • New: We added a new option in CRM OptionSet Mapping Component that allows you to specify the internal integer value field. This can be used as the input of the internal integer value of new CRM OptionSet/picklist option
  • New: We added two new options to Text Lookup feature. The Ignore case option allows case-insensitive lookup and the Report error on duplicates option will report an error when a duplicate is found within text lookup cache
  • New: We added support for isdisabled field of businessunit entity
  • New: We added support for revisionnumber field of quote entity
  • Enhancement: When Enable Stack Trace option is turned on, we now report error messages in the same way in UI forms
  • Enhancement: Improved cache implementation
  • Enhancement: Improved startup time with CRM destination component
  • Enhancement: Significantly re-engineered CRM OptionSet Mapping component with better design-time support
  • Change: The output column of partylist fields is now NTEXT
  • Breaking Change: The Id column in the destination component’s Error Output is removed (it has moved to another output as indicated above)
  • Breaking Change: In CRM source component, the output of partylist field is now in JSON format
  • Fixed: Under a unique situation, you may receive an error "CRM service call returned an error: Cannot insert duplicate key.CRM service call returned an error: new_myentityname With Id = 00000000-0000-0000-0000-000000000000 Does Not Exist", where new_myentityname is the primary entity's name of the CRM destination component
  • Several other enhancements and optimization

Version 4.1 - January 3, 2014

This release includes the following updates:

  • New: We added a new virtual entity called accessteammember, which can be used to add user to access team for CRM 2013 (Thanks to CRM MVPs Scott Sewell and Joel Lindstrom for suggesting this feature)
  • New: We added a "Clear All Mappings" button to CRM destination component, which you can use to reset all your mappings in the destination component (Thanks to Sebastian for suggesting this feature)
  • New: We added a new configuration to CRM connection manager called HomeRealmUri (Thanks to John for suggesting this feature)
  • Fixed: CRM Source component, Destination component, or OptionSet Mapping component editor has a misaligned layout when your Windows system uses a non-default DPI setting (Thanks to Urs)
  • Enhancement: We turned on PreAuthenticate option for CRM connection when SOAP 2006 or SOAP 2007 service endpoint is used (Thanks to Urs)
  • Enhancement: Our retry implementation is now covering the scenario when a ReceiveFailure exception is encountered (Thanks to Thomas and Henry)
  • Update: We have relaxed the technical restriction on how many system transfers can happen to a license key, we removed the restriction on the total number of system transfer
  • Update: We have made corresponding updates to our license agreement in order to reflect the above license restriction change

Version 4.0 - October 16, 2013

This release includes the following updates:

  • New: We added SDK Client Version option in CRM connection manager which enables support for CRM 2013 fall release
  • New: CRM 2013 entityimage field is now supported in both CRM source and destination components
  • New: We added an auto-updater feature to the toolkit so it now checks for updates when the software is used in an IDE (Visual Studio, BIDS, SSDT). The auto-updater feature is also added to KingswaySoft License Manager program
  • Change: In CRM source component, we removed the feature which automatically updates your source component metadata while you type in CRM FetchXML query (Thanks to Peter for the suggestion)
  • Enhancement: New FetchXML capabilities in CRM 2013 are now supported
  • Enhancement: Some performance improvement when CRM Bulk API is used

Version 3.3 - September 24, 2013

This release includes the following updates:

  • New: We added a new Merge action for CRM destination component, which allows you to merge two CRM records (Thanks to CRM MVP Scott Sewell for suggesting this feature)
  • New: We added Text Lookup support for primary key field when Update, Delete, ExecuteWorkflow action is used (Thanks to Stefan for suggesting this feature)
  • New: We added Text Lookup support for foreign key fields for many-to-many relationship entities including listmember entity (Thanks to Phil for reporting an issue related to listmember entity when Text Lookup is used)
  • New: Text Lookup is enabled for CRM 3.0 (SOAP 2006). Text Lookup is now offered for all 3 service endpoints
  • Enhancement: Improved FetchXML support
  • Enhancement: Enhanced retry implementation, and it now retries for both source and destination components should there be an intermittent networking problem
  • Change: We have changed the release format from .msi files to .zip files

Version 3.2 - August 8, 2013

This release includes the following updates:

  • New: We added a configurable option called Enable Stack Trace, once enabled, it will report any exception encountered with stack trace included
  • New: When switching Source Type from Entity to FetchXML, CRM source component will automatically generate a FetchXML query based on the fields that have been selected in Entity mode (Thanks to Chris for the suggestion)
  • New: We added support of HTTP compression (Thanks to Angel for the assistance in validating this feature)
  • Change: CRM Source component now respects the count(page count) and page (page number) attributes that you have specified in FetchXML query
  • Fixed: When reading data from CRM memo fields (such as account's description field), you might run into an error "The value is too large to fit in the column data area of the buffer" (Thanks to Mel for reporting this issue)
  • Fixed: When using CRM components in a Foreach Loop container, CRM connection manager is always connecting to the same CRM server even though its ConnectionString has been changed (Thanks to Mel for reporting this issue)
  • Fixed: CRM OptionSet Mapping Component doesn't work properly for SSIS 2012 (Thanks to Phillip and Joost for reporting this issue)
  • Fixed: You might run into an error "System.ArgumentNullException: Value cannot be null. Parameter name: key" with CRM OptionSet Mapping component
  • Fixed: When writing data to userquery entity, you might encounter an error "Attribute 'returnedtypecode' cannot be NULL" (Thanks to John for reporting this issue)
  • Fixed: You might run into an error "System.ArgumentException: Value does not fall within the expected range" when writing to CRM (Thanks to John for reporting this issue)
  • Fixed: When executing a script component using CRM connection manager, you might run into a serialization error (Thanks to Urs for reporting this issue)

Version 3.1 - June 12, 2013

This release includes the following updates:

  • New: We added support for isdisabled field of systemuser entity. (Thanks to Adrian for the suggestion)
  • New: We added support for Enterprise License, which allows unlimited installations within an organization
  • Enhancement: We have overcome the limitation of CRM metadata service when working with lookup name field which reports inaccurate string length. The enhancement is made to CRM source component. (Thanks to Scott for the suggestion)
  • Enhancement: In CRM Destination Component, if you set Error Handling option to Redirect rows to error output, we now report the actual error code returned from CRM server for ErrorCode column, should CRM server return an error. We used to always return a constant value of 1 in previous versions. (Thanks to Daniele for the suggestion)
  • Enhancement: It is now possible to write script component by utilizing CRM connection managers that are available in SSIS package, which provides full SDK capability that allows talking to CRM server. (Thanks to Artem for the suggestion)
  • Enhancement: CRM Connection Manager now accepts Password and ProxyPassword parameters in its connection string
  • Fixed: When working with self-referenced many-to-many relationship entity, you might encounter the error: System.Exception: CRM server returned an error: Entity role must be specified for reflexive relationship 'xxx'. xxx is the relationship name that represents the self-referenced many-to-many relationship entity. (Thanks to Kevin for reporting this issue)
  • Fixed: CRM Connection Manager stores your password in plain text for your SSIS 2012 project if you set the project's ProtectionLevel to EncryptSensitiveWithPassword when you use Project Deployment Model. (Thanks to John for reporting this issue)
  • Fixed: You receive an exception when you use Text Lookup feature for a lookup field and at the same time you choose to use the field for Upsert matching (Thanks to Jing and Raj for reporting this issue)
  • Fixed: In CRM Destination Component, if you enable the component's Remove Unresolvable Reference option, it has no effect on the fields that you have Text Lookup configured. (Thanks to Rex for reporting this issue)
  • Fixed: When writing to some specific CRM entities, you might encounter the following error: "System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'KingswaySoft.DynamicsCrmServices.Soap2011.CrmOrganizationService.EntityReference'." (Thanks to Bart for reporting this issue)

Version 3.0 - February 27, 2013

This release includes the following updates:

  • New: We added Bulk Data Load API support introduced in Microsoft Dynamics CRM December 2012 Service Update and Update Rollup 12 (UR12) release.
  • New: We added a new data flow component called CRM OptionSet Mapping component, which allows managing the translation of option set text values. Also it provides a capability to let you create new option when no match is found for the target OptionSet/Picklist field.
  • New: We added a new action to CRM destination component called ExecuteWorkflow, so you can now use SSIS to run your CRM workflows at scheduled time.
  • New: We added a new option to CRM destination component called Handling of Multiple Matches, which allows you to perform different action when multiple matches are found with Upsert action. The available options include Update All, Update One, Ignore, Raise an Error.
  • New: We added a new option to CRM destination component called Send datetime values in UTC format.
  • New: We added a new button to CRM destination component's editor window so that you can click it to map any unmapped fields by matching names.
  • New: We made the Input Column sortable in CRM destination component
  • Breaking Change: All typecode fields (such as owneridtype, partyobjecttypecode, objecttypecode, etc.) in CRM source component will be changed to a nvarchar(64) column instead of int, when SOAP 2011 endpoint is used.
  • Breaking Change: In CRM destination component, empty string will be treated as NULL when used for Upsert matching.
  • Update: CRM Source Component's metadata version has increased to 2 to accommodate the above breaking change for typecode fields. 
  • Update: Some rewording of error messages.
  • Bug Fixes: Some UI bug fixes for CRM connection manager. 
  • Enhancement: Text Lookup feature has been enhanced, which now allows you to perform lookup to CRM records using text values against any text fields. Additionally, text feature will not report an exception when duplicates are encountered, it will simply pick the first match.
  • Enhancement: When creating new record using CRM destination component, we try to not submit an extra SetState request when the provided statecode is the default statecode for the entity.
  • Enhancement: We added a retry mechanism to CRM source component, so if an error is encountered when querying CRM system, the component will make two retries using the same query. Each retry will be logged as a warning message.
  • Enhancement: Improved equality handling when Ignore Unchanged Fields option is selected for Update or Upsert action in CRM destination component.
  • Enhancement: We removed the dependency of Windows Identity Foundation when you are only using Active Directory authentication.
  • Enhancement: Significant code refactoring and optimization for better performance and maintainability.

Version 2.0 SR2 - December 20, 2012

This release includes the following updates and bug fixes:

  • Update: We made improvements with equality handling when "Ignore Unchanged Fields" option is used for CRM destination component.
  • Update: CRM source component now allows you to change the output column length using Advanced Editor if it is a string type column (DT_STR, or DT_WSTR), you can also change a string type column to a text type column (DT_STR -> DT_TEXT, or DT_WSTR -> DT_NTEXT) or vice versa.
  • Fixed: You might run into an error on the screen that says "Object reference not set to an instance of an object. (KingswaySoft.IntegrationToolkit.DynamicsCrm)" with CRM connection manager within Visual Studio environment.
  • Fixed: You might run into an intermittent error in CRM source or destination component that says "An error has occurred when retrieving CRM entity metadata. Invalid URI: The hostname could not be parsed" or "Error: Organization was not provided".
  • Fixed: When connecting to CRM online, you might run into an error that says "System.IO.IOException: The file 'C:\Users\YourName\AppData\Local\LiveDeviceID\LiveDevice.xml' already exists".

Version 2.0 SR1 - November 20, 2012

This release includes the following updates and bug fixes:

  • Update: We made some improvements so the toolkit handles concurrency better now.
  • Update: There were some minor updates to the installation program.
  • Update: CRM connection has been optimized to cache CRM metadata for each connection instead of each data flow component, this would help avoid some unnecessary service calls to CRM server.
  • Fixed: When you have a NULL value for CRM statecode field in CRM destination component, you will receive an error indicating "Object reference not set to an instance of an object".
  • Fixed: When you have CRM destination component's Error Handling option configured as "Redirect rows to error output", you might still receive the following error message "Error: Failed to set attribute 'new_fieldname' value to 'myvalue' for entity 'new_entityname'". (Thanks to Joost for reporting this issue).
  • Fixed: If your CRM organization name contains space(s), when you try to connect to CRM server, you might receive the error message "An error has occurred when retrieving CRM entity metadata. CRM server returned an error: Access is denied."  even though you have entered all credential information correctly. (Thanks to Sebastian for reporting this issue).
  • Fixed: There was a problem when entering proxy server port greater than 600. (Thanks to Patrick for reporting this issue).

Version 2.0 - September 25, 2012

  • We added "Refresh CRM Metadata" button in both CRM Source Editor and CRM Destination Editor, so that you can refresh CRM metadata without having to delete and re-create the component when you have CRM metadata changed at the server side.
  • We added "Data Type" column to both CRM Source Editor and CRM Destination Editor.
  • We now display friendly CRM organization name in CRM connection manager.
  • We now allow selecting fields when FetchXML option is used in CRM Source Editor, so that you can unselect virtual fields which would give you better performance.
  • We added a Text Lookup feature to CRM destination component, so that it can perform lookup based on text values of the target entity. For instance, for ownerid lookup field, you can provide systemuser's full name instead of the actual systemuserid value (GUID), the component will find out the systemuser's primary key value (systemuserid) based on the provided primary field value (systemuser's full name in this case).
  • We added a new feature called "Ignore Null-Valued Fields" to CRM destination component, so it can ignore any null-valued fields without posting them to CRM server. (Thanks to CRM MVP Scott Sewell for suggesting this feature)
  • We added a new feature called "Ignore Unchanged Fields" to CRM destination component, so it can ignore any unchanged fields in the target CRM system. This is useful when you have workflow or plugin listening to the changes of certain fields in CRM system, with this feature, you can avoid firing unnecessary plugins or workflows if nothing has changed for the particular fields. (Thanks to CRM MVP Scott Sewell for suggesting this feature)
  • We added support for writing data to "principalobjectaccess" entity. (Thanks to CRM MVP Scott Sewell for suggesting this feature)
  • We added support for writing data to "connection" entity.
  • Change: when writing data to many-to-many relationship entity, we made a change to the implementation so Create will do a straight create (associate), and Upsert will first check if such association exists, it will only create association when the association doesn't exist.
  • We added support for CRM3 (SOAP 2006 endpoint).
  • In CRM connection manager, we added support for proxy server.
  • In CRM connection manager, we added a timeout option.
  • Some performance tuning in the code, which leads to some performance improvement.
  • We added one new license management feature so that you can move license from one server to another.
  • New license model, new license agreement.

Version 1.1 SR 4 (Service Release 4) - July 5, 2012

  • Update: CRM Source Component now supports reading from partylist fields when SOAP 2007 service endpoint is used. (If your CRM source component was created with a prior version with partylist fields included, in order for them to work, you will have to re-create the source component in order to populate CRM metadata properly. You only need to do so if SOAP 2007 service endpoint is used.)
  • Fixed: When connecting to CRM IFD environment using SOAP 2007 service endpoint, you receive an error "Sever was unable to process request (System.Web.Service)" although you have provided correct login credentials. (Thanks to Richard for reporting this issue)
  • Fixed: When writing data to a N:N relationship entity if SOAP 2011 service endpoint is used, you get the following error message: "CRM server returned an error: Input field type 'String' does not match expected type 'Relationship' for field 'Relationship' (Error Code: -2147220715, Detail Message: Input field type 'String' does not match expected type 'Relationship' for field 'Relationship')"" (Thanks to Adrian for reporting this issue)
  • Fixed: In CRM destination component, if Upsert is used as action while Primary Key is selected as the Upsert Matching Criteria option, when the primary key value from the upstream component is of a NULL value, the destination component will report "Error: CRM field was not found: xxxxx", where xxxxx is the primary key field name. (Thanks to Scott for reporting this issue)

Version 1.1 SR 3 (Service Release 3) - May 31, 2012

  • Update: When FetchXML option is used in CRM source component, virtual fields are now shown and populated. The virtual fields include picklist/optionset "name" fields, and lookup "name" fields, etc. (Thanks to Chris for reporting this issue)
  • Update: When Update option is used in CRM destination component, the owneridtype field is now available. (Thanks to Richard for reporting this issue)
  • Update: We have updated the wording of error messages when an exception is thrown by CRM server, the new error message better reflects the nature of such CRM exceptions. 
  • Fixed: When a FetchXML query returns fields from linked entities, the values might show as "KingswaySoft.DynamicsCrmServices.Soap2011.CrmOrganizationService.AliasedValue". (Thanks to Adrian for reporting this issue)
  • Fixed: When Upsert option is used in CRM destination component, you might run into an error "The given key was not present in the dictionary" (Thanks to Maria for reporting this issue)

Version 1.1 SR 2 (Service Release 2) - May 17, 2012

  • Update: The support for writing data to activitymimeattachment entity has been added to CRM destination component. (Thanks to Richard for reporting this issue)
  • Fixed: When connecting to Office 365 environment using CRM Connection Manager, an exception is thrown "? is inaccessible due to its protection level. Only public types can be processed. (System.Xml)". (Thanks to Aidan for reporting this issue)
  • Fixed: In some environments, you might experience the following exception with CRM Source Component:
    System.Runtime.InteropServices.COMException (0xC0047020): Exception from HRESULT: 0xC0047020
       at Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSBuffer90.SetEndOfRowset()
       at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.SetEndOfRowset()
       ...
    (Thanks to Molly for reporting this issue)

Version 1.1 SR 1 (Service Release 1) - May 1, 2012

  • Fixed: When Upsert action is used in CRM destination component, some fields are not shown up for specific action (Create or Update). In order to address this issue, we added two columns in the column mapping grid which indicate whether a field is applicable to Create action or Update action. When a field has been mapped in the grid, the value from the upstream pipeline component might be discarded depending on whether the field is applicable to the action. For instance, if the field is not applicable for Create, then the value will be ignored when Upsert component tries to create a new CRM record. Likewise, if the field is not applicable for Update, the value will be ignored when Upsert component tries to update existing CRM record(s). (Thanks to Maria for reporting this issue)
  • Some other minor updates

Version 1.1.0 - Apr 19, 2012

  • Update: We added support for parameterized FetchXML query for CRM source component, so that you can now use variables in FetchXML query (Thanks to Myles for the suggestion)
  • Update: We added FetchXML toolbar in CRM Source Editor which provides some common functionality including Cut, Copy, Paste, Undo, Redo and the ability to add variables to FetchXML query
  • Update: We added version number information to CRM connection manager's More Info screen (Thanks to Manish for the suggestion)  
  • Update: In CRM connection manager, instead of reporting "Test connection failed", we now provide better detailed message (Thanks to Manish for the suggestion)
  • Update: We updated FastColoredTextBox library from v2.6.7.0 to v2.7.4.0
  • Some other minor changes

Version 1.0.0 Service Pack 3 - Apr 10, 2012

  • Update: We made a minor change to License Manager program, which now prohibits possible duplicate license requests by clicking the OK button more than once in "Enter Product License" window
  • Fixed: In CRM Source Component Editor, when you enter a valid FetchXML, and immediately click "OK" button to save the change, the source component does not properly populate CRM fields due to the lazy-editing feature (for performance reason) used in the XML editor component
  • Fixed: When you update statecode and statuscode for salesorder or opportunity entities, you might run into exceptions
  • Fixed: The CRM destination component doesn't provide correct CRM record's ID in GUID value after the record has been created in CRM (Thanks to Javier for reporting this issue)

Version 1.0.0 Service Pack 2 - Mar 23, 2012

  • 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)

Version 1.0.0 Service Pack 1 - Mar 5, 2012

  • Update: Support for Microsoft SQL Server 2012 has been updated from RC0 to the final release (RTM version) (Mar 12, 2012)
  • 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

Version 1.0.0 - January 20, 2012

First public release with the following features

  • Native CRM 2011 SOAP interface support
  • Support for Microsoft Dynamics CRM 2011 and 4.0
  • Support for On-premise, IFD and Online deployments
  • Support for CRM Entity or FetchXML query as data source in CRM source component
  • Support for Create/Update/Delete/Upsert actions in CRM destination component. 
  • One-click to toggle whether you want all or none of fields from a CRM entity in source component
  • Automatic mapping to the CRM fields in the destination component by matching the names from upstream components
  • You can set a picklist/optionset field value by either its integer value or its user friendly label
  • Native support of CRM many-to-many relationship to associate or disassociate CRM records in CRM destination component by using Create or Delete action