Sitecore for Salesforce Release Notes
The following release notes detail the key improvements in S4S with each release. More info is included in the release download, in our tech notes in Atlassian, or email support@ for detail on any release item about which you have a question or would like more detail.
Sitecore 6 support Release 1.6.XXXXX
Sitecore 7 support Release 1.7.XXXXX
Sitecore 8 support Release 1.8X.XXXXX
Note that dates are in dd/mm/yyyy format.
Release 1.82.17282.1 - 10/10/2017
Note that this release contains a full core install as well as an update package that brings earlier 8.2 releases up to current.
[cs30212] Analytics: Default bulk update last run time to an hour before current time if the Scheduled Task item is blank
[cs30207] Added Connection String combo to mapping wizard and Connection String aliasing to config.
[cs30206] Setting WFFM mappings to work against different Salesforce orgs.
[cs30205] Multiple S4S session caching and bulk updating analytics to multiple Salesforce Orgs
[cs30197] WFFM/Analytics: Change to check individual save results for success rather than checking for exception
[cs30178] WFFM: Make Mapping pipeline serializable
[cs30099] MetadataServiceWrapper: deploy aura components in packages.
[cs30072] Make SingleFilter public
[cs30071] Add the ability to add a data source filter with a Filter as a parameter
[cs30052] ApexLogService - public methods to convert a debug log to a dataset while filtering the entires. NativeDebugLog to convert the DataSet back to the standard Debug log format.
[cs30051] DataSetConverter - Convert DataTable to CSV. Either directly to file or to StringBuilder.
[cs30017] Add optional allowExistingSObjectsWithoutId="true" to the binding configuration element to allow sObjects to be created with a null Id. Typically this isn't allowed as the ID is used to control insert/update operations and to identify relationship types. This setting can be used for more basic SOQL queries where the results won't be subsequently used for DML.
[cs29991] QueryResultPager - add IsAggregateQuery to identify results for an Aggregrate query with no records. The value is solely in the size.
[cs29975] Updated SalesforceServiceFoundation class to only hide save errors for lists of entities, and not single entities
[cs29953] Wsdl2Apex: Handle case where the Schema TargetNamespace is missing
[cs29951] Crc32 - CalculateHash method from string
[cs29950] SalesforcePod - Add NA18 to NA25, CS65
[cs29922] ApexLogService.LogMessage enum add DUPLICATE_DETECTION_MATCH_INVOCATION_DETAILS
[cs29921] Support for Date fields as DataSource filters via SObjectField (which includes field type metadata)
[cs29901] Analytics: Correct bulk update where multiple contacts/leads have the same Sitecore visitor id
[cs29895] BREAKING CHANGE Stopped the SalesforceCreateException and SalesforceUpsertException from being thrown when saving Salesforce object Ids back to the SaveResults list.
[cs29894] SalesforcePod - Add CS91
[cs29892] SalesforcePod - Add NA64 mapping
[cs29879] WFFM: Update analytics on contact instead of converted lead
[cs29878] WFFM: Process EXM analytics
[cs29876] Analytics: Change method of getting campaign name
[cs29875] SalesforcePod - Added NA59
[cs29874] SalesforcePod: Added CS54
[cs29836] CacheBase - Don't log debug level messages for cache hits.
[cs29834] DataCache for DescribeSObjectResult switched to ConcurrentDictionary internally.
[cs29833] SalesforceChildRelationship, LookupRelationshipCollection, MasterDetailRelationshipCollection, SalesforceDescribeSObjectResult add SerializableAttribute
[cs29832] SalesforceServiceWrapper - Log exceptions when loading cached sObject descriptions.
[cs29830] SalesforcePod. Add AP5, CS66, CS67, CS70
[cs29828] ApexLogService. Add VF_APEX_CALL_START, STACK_FRAME_VARIABLE_LIST, REFERENCED_OBJECT_LIST, FLOW_BULK_ELEMENT_END, HEAP_DUMP Fix FLOW_START_INTERVIEW_END pairing Add Wave LogMessageAttribute
[cs29818] SalesforcePod - Added NA44 and CS49
[cs29809] Analytics: Check for campaign not being found
[cs29799] Update to Summer `17 (v40.0) for Apex, Metadata, Partner and Tooling APIs
[cs29798] Integrating IsActive property into membership provider.
Release 1.82.17163.1 (BREAKING CHANGES) - 12/06/2017
[cs29789] Analytics: Enhance exception handling
[cs29788] Analytics: Fix error in IdentifyAndPushVisitor and BulkUpdateAnalytics with managed/unmanaged package configurations
[cs29757] Analytics: Make Salesforce field/object properties static
[cs29756] Added IsActive property
[cs29752] Added S4SAnalytics.config, S4SAnalyticsManagedPackage.config and S4SAnalyticsUnmanagedPackage.config
[cs29744] Analytics: Rename config items for consistency. Change the way config items are retrieved
[cs29743] Analytics: Move configuration from S4S.config to S4SAnalytics.config
[cs29742] BREAKING CHANGE WFFM and Analytics: Make Salesforce object/field names configurable
[cs29708] LogMessage enum - add VF_APEX_CALL_END
[cs29707] SalesforceSession If the serverUrl is undefined but the sessionID is known and can be resolved to the serverUrl populate...
[cs29706] SalesforcePod: Map cs53 and cs71 pods
[cs29697] Added IdentifyAndPushVisitor Save Action
[cs29691] Added S4SSaveActions.config as location for FuseIT configuration/sitecore/wffm configurations.
[cs29634] Changes for getting paged records.
Release 1.82.17101.1 - 18/04/2017
[cs29630] S4S-Analytics: Bring back additional EXM click event interactions.
[cs29619] S4S-Analytics: Added Scheduled Tasks Items folder and items.
[cs29614] S4S-Analytics: Use Bulk API to update Salesforce entities.
[cs29574] SalesforceSession: Add the NewSalesforceSession to signal when a new session is established automatically.
[cs29573] S4S-Analytics: Process EXM analytics.
[cs29531] SalesforceSession: Update WebRequestWithAuthorizationHeader to include an optional parameter to retry with a new session on a failed request.
[cs29530] SalesforcePod: Identify CS44.
[cs29529] ApexLogService: Identify WF_TIME_TRIGGER and pair FLOW_CREATE_INTERVIEW_BEGIN/END logs.
[cs29528] MetadataServiceWrapper: DeploySingle method added to deploy an apex class by name, API version, and body.
[cs29527] S4S ReportData: Marked class as Obsolete due to lack of support when Lightning is enabled.
[cs29526] BayeuxClient: Extend the waitFor method to identify waiting states where polling should continue.
[cs29509] S4S-Analytics: Improving performance for bulk update of Analytics data to Salesforce.
[cs29502] S4S-Analytics/S4S-Status: Check "web" database then "master database for item definition.
[cs29481] Changed excessive logging of Event Handler to DEBUG.
[cs29447] ApexLogService: Pair CALLOUT_REQUEST and CALLOUT_RESPONSE events. Track the ticks on skipped logs and max debug log messages.
[cs29445] SalesforceDescribeSObjectResult: Expose MasterDetailRelationships and LookupRelationships as properties.
[cs29444] LookupRelationship and MasterDetailRelationship: Update ToString() formatting.
[cs29443] Batcher: Correct logger type. May need to revisit due to logger name length.
[cs29442] SalesforcePod: Include NA17, CS25, CS30.
[cs29441] Update the Tooling API to Spring 17 (v39.0) Update the SalesforceSession to use v39.0 for all APIs.
[cs29439] Update the Metadata API to Spring '17 (v39.0)
[cs29438] Update the Partner API to Spring '17 (v39.0)
[cs29437] Update Apex API to Spring '17 (v39.0)
Release 1.81.17031.1 - 31/01/2017
[cs29421] S4S-Analytics: Exclude interactions created by EXM.
[cs29389] DataSetConverter - Add SaveDataTableAsJson() to export the first DataTable to a JSON file.
[cs29383] ApexLogService - Include Time Elapsed in ticks as a Column. New Static methods for working between log ticks and seconds.
[cs29378] ApexLogService - Pair Validation rules. Revert to pulling the Apex logs via the REST API if traceDownload.apexp isn't working.
[cs29369] Account - update generated standard fields.
[cs29368] ApexLogService - Extend LogMessageAttribute to indicate if the LogMessage is the start or end message. Add VF_EVALUATE_FORMULA_BEGIN and VF_EVALUATE_FORMULA_END.
[cs29362] Updated Tooling API to modified v38.0 WSDL after patches for unsupported types and Coverage lines.
[cs29361] S4S-Analytics: Get page history by interaction id.
[cs29358] S4S-Analytics: Get latest interaction based on start time instead of visit index.
[cs29357] S4S-Analytics: Enable setting of multiple profiles on a visit.
[cs29353] S4S-Analytics: Change GetLatestSalesforceVisit to query XDb.
[cs29348] T4 Code Generation - Only generate subclass for RecordTypes if that are applicable for that sObject type. In CleanName() when creating the enum values, handle the case where no characters in the value are permitted. Handle an sObject picklist that already has an "Unknown" entry. Remove the Database.com generation option. Include the current Salesforce API version in the code generation header.
[cs29343] Entity Code Generator - Exclude ; and : from the enum names. Append @ for invalid identifiers in case they are reserved keywords.
[cs29334] ReportService - Handle the tabularReport record count alternating between int and double.
[cs29333] SalesforceServiceWrapper - Expose DescribeSObjectsBatchSize for the upper limit on how many sObjects can be described in one call.
[cs29303] SalesforcePod - includes NA39 and GS0.
[cs29302] StatusServiceWrapper - Don't check for an existing known domain if the subdomain contains '-'.
[cs29298] ApexMethod - When determining the dependencies - ignore null Request/Response Parameters.
[cs29297] ApexClass.Find() - verify that the apexClassName is not null.
[cs29294] T4 Entity Generator. Use CodeDomProvider to validate identifiers. Exclude commas from generated names.
Release 1.82.16343.1 - 28/02/2017
[cs29282] Improve tracking of REST API callouts. ReportService - add PageCompleteTabularFactMap() method to sort and page tabular report results by a primary key column.
[cs29281] SalesforcePod: Map na42, cs24, cs50, cs62.
[cs29271] S4S-Analytics: Include profile keys with value of zero when sending to Salesforce.
Release 1.82.16340.4 - 16/12/2016
[cs29262] SoqlQuery - Detect if the query contains a SubQuery within the fields.
[cs29261] ApexLogService, add FLOW_ELEMENT_DEFERRED, FLOW_BULK_ELEMENT_BEGIN, FLOW_BULK_ELEMENT_DETAIL.
[cs29259] QueryResultPager - Track the Source SOQL Query.
[cs29256] SalesforcePod - add NA43 and CS87.
[cs29253] Extend ReportService to expose Analytics API. ListRecent() reports, Describe(), ExecuteSync(). Convert Tabular FactMap to DataSet.
Release 1.82.16327.4 - 22/11/2016
[cs29219] MetadataServiceWrapper - Support for deploying sObjects from Metadata.
[cs29218] Expand ApexUpdateException to expose source Apex Class Name and line number if known.
[cs29216] ApexClassService - Add method GetClassBody to get Apex Class body via Class name.
[cs29215] ApexLogService - Add new LogMessage enums for Duplicate detection via the match engine.
[cs29214] FieldService.FieldsForObject use Cached ToolingAPI field metadata to improve performance.
[cs29213] If retrieving a non-nullable DateTime field but the value returned from Salesforce is null return DateTime.MinValue.
[cs29212] SalesforceSession - Add MaximumApiVersion static property to expose the currently supported API version.
[cs29206] ToolingServiceWrapper add describeSObjectCached(). Use this in preference of describeSObject().
[cs29202] Expand SalesforcePod to support NA35, CS52, CS60, CS61, CS63. Extract pod Status via StatusServiceWrapper via GetCurrent...
[cs29198] Make maximum historical interactions to search for Salesforce interactions configurable.
[cs29197] Reimplement LoadPreviousVisit functionality.
Release 1.82.16305.1 (BREAKING CHANGES) - 31/10/2016
[cs29172] Log warning instead of error if LoadPreviousVisit is called
[cs29169] BREAKING CHANGE: Remove LoadPreviousVist and LoadPreviousVisitSalesforce functionality
[cs29140] Upgrade to Winter '17 API (v38.0)
[cs29137] Update the Tooling API to Winter '17 (v38.0)
[cs29134] Update the Partner API to Winter '17 (v38.0)
[cs29133] Update the Metadata API to Winter '17 (v38.0)
[cs29132] Update the Apex API to Winter '17 (v38.0)
[cs29107] BREAKING CHANGE: Added status page aspx file; changed status page to show details for all providers; remove public prope...
[cs29106] Fix typo in SaveAction vistor
[cs29095] SalesforceServiceWrapper - Allow SOAP message tracing per Service class via the TraceSoapExtensionConfigured.
[cs29093] SalesforceField. Use the new "custom" property to identify custom fields.
[cs29079] Handle common SalesforceSettingsSection missing ConfigurationException and just DEBUG log it. Will use default values in...
[cs29078] SalesforceServiceFoundation - Improve UpdateEntities ArgumentOutOfRangeException message if no entities are passed in to...
[cs29077] FieldService - when checking if a field is updatable, check within the current Orgs namespace if defined.
[cs29076] MetadataServiceWrapper - Deployment support for triggers and installed packages
[cs29074] ToolingServiceWrapper - correct paging of describeSObjects to 100 records per batch. Cache DescribeSobject results via d...
[cs29072] Cater for records with an empty billing state
[cs29056] Remove declaration of error label from code behind file.
[cs29019] Changed paged SalesforceDataSource to bring back all available records
[cs29011] Removed 'FuseIT S4S Mapping.xml'
[cs28987] DEBUG in the SalesforceSession Singleton is changed or cleared.
[cs28981] Make the GetByEntityId ObjectType check case insensitive.
[cs28979] Fix Getting a single sObject from the QueryResultPager.
Release 1.7.16263.1 - 19/09/2016
[cs29019] Change to bring back all available records.
[cs29012] Updating S4S Mapping XML to be the same as the 8.1 web project.
[cs29011] Removed 'FuseIT S4S Mapping.xml'.
[cs29010] Corrected assembly name and removed double-click events on Fields List.
[cs29009] Corrected the assembly name.
[cs29006] First check-in.
[cs29005] Add EXM provider information.
[cs28987] DEBUG if the SalesforceSession Singleton is changed or cleared.
Release 1.81.16230.1 - 17/08/2016
Release 1.80.16221.4 - 17/08/2016
[cs28976] Bulk Update Sitecore Analytics in Salesforce - use Lead and Contact SalesforceDataSources to update via the SitecoreVisitorId__c field. Process all matching records via the QueryResultPager. [cs28967] Add new method ClearKeyPrefixCache() to the SalesforceSession.Binding to allow the KeyPrefix Cache to be cleared.
[cs28966] WFFM For the PushVisitorAction, handle the Field Name being the Title rather than underlying Item Name. Map via FieldId. Additional Debug level logging.
[cs28965] When caching the KeyPrefix to ObjectType mappings, include the Salesforce OrgId in the cache key. This will prevent conflicts for custom object key prefixes.
[cs28963] WFFM Resolve the Field Item Name via the Field Id rather than the AdaptedControlResult.FieldName property that can vary between the Item Name and the Item Title.
[cs28961] WFFM - Logging refinements for Execution of form mappings.
[cs28960] Change Logging Levels for "The XML string for this child" and "This node has attributes" from INFO to DEBUG.
[cs28957] Handle Empty Salesforce API batches. e.g. Request to upsert 0 records.
[cs28956] S4S WebToSalesforceSessionSingleton - improve logging message for private constructor to make it clearer that a new SalesforceSession instance isn't being created with every call.
Release 1.80.16202.1 (BREAKING CHANGES) - 20/07/2016
Release 1.81.16202.2 (BREAKING CHANGES) - 20/07/2016
[cs28934] Performance fixes for BulkUpdateAnalytics scheduler.
[cs28910] ApexLogService. Add USER_INFO to LogMessage emum. When parsing a Log, create a Meta DataTable. Include info such as is ...
[cs28892] Don't process WFFM fields that are not mapped to Salesforce SObject fields.
[cs28891] Switch all APIs to use v37.0 of the APIs
[cs28890] Upgrade Metadata API to Summer '16 (v37.0)
[cs28889] Upgrade Apex API to Summer '16 (v37.0)
[cs28888] Upgrade Apex API to Summer '16 (v37.0)
[cs28887] Upgrade Tooling API to Summer '16 (v37.0)
[cs28886] Upgrade Partner API to Summer '16 (v37.0)
[cs28882] Enabling Load Previous Visitor for sitecore MVC
[cs28872] Add new WF_FLOW_* LogMessages
[cs28858] SoslQuery: Support for executing a SOSL query
[cs28857] SoqlQuery: Improve manual parsing of SOQL query to handling missing FROM clause
[cs28855] MetadataServiceWrapper - fix packaging of page types
[cs28853] ToolingServiceWrapper: Add ApexOrgWideCoverage() to get overall PercentCovered. Include triggers in ApexCodeCoverageAggr...
[cs28851] SalesforcePod: Map AP2, CS28, CS41, CS51, NA32
[cs28847] Add SOQL DataSource
[cs28834] Configuring field mapable forms through the /sitecore/system/Modules/S4S/SaveActions item - BREAKING CHANGE.
[cs28812] Rename WebSvcCalloutTestClass Methods and HttpMethods properties to have Callout prefix to avoid conflict with base clas...
[cs28804] SalesforcePod - Map "29" to cs19 and "8A" to cs45
[cs28767] Changed to 4.5.1 .NET
Release 1.81.16098.1 - 7/04/2016
Release 1.7.16078.2 (BREAKING CHANGES) - 24/03/2016
[cs28723] Metadata Service - Add support for deploying Visualforce pages.
[cs28722] Tooling API Apex Class Deployment, include details of the deployment in any Exception that occurs.
[cs28714] S4S Profile Providers - Enforce the "readOnly" attribute on Salesforce profile properties to prevent writing them back to Salesforce.
[cs28694] Upgrade HtmlAgilityPack to v1.4.6 for .NET 4.5 compatibility.
[cs28655] SalesforceServiceWrapper - wrap the SOSL search() method to handle session timeout and auditing.
[cs28653] Convert Salesforce UNSUPPORTED_CLIENT Exception into SalesforceUnsupportedClientException. Extend exception message with support URL for handling TLS 1.0 being disabled.
[cs28616] S4S: Upgrade to .NET 4.5 to meet Salesforce TLS 1.1+ requirements.
[cs28615] BREAKING CHANGE: Upgrade to .NET 4.5 TargetFramework from .NET 3.5 to meet Salesforce requirements to use TLS1.1 or higher. TLS1.0 support is being phased out. Salesforce Update "Require TLS 1.1 or higher for HTTPS connections". Added "securityProtocols" section of config to allow setup of supported Tls protocols. log4net upgraded to 220.127.116.11 .Config update https://fuseit.zendesk.com/entries/107934983-Critical-update-Salesforce-Upgrade-to-TLS-1-1
[cs28610] SalesforceServiceBase - validate GetByFieldEquals() parameters are not null or empty.
[cs28609] Check that WFFM form contains fields. Notify user if it does not contain any fields.
[cs28606] S4S Security providers - Include additional details in logging, such as the providers name.
[cs28605] SalesforcePod - add NA30 mapping to pod identifier 36.
[cs28597] Override ToolingAPI Metadata.ToString to write out reflected property values.
[cs28595] S4S: SalesforceAccountLookupRoleProvider - Improved logging when disabled.
Release 1.7.16048.1 - 17/02/2016
[cs28592] S4S: When establishing a SalesforceSession for a security provider. Include the provider name in the Debug log message.
[cs28591] S4S Log additional details if a provider is disabled (!Enabled)
[cs28590] SalesforceSession. Include the pod identifier in ToString(). Log if the session is created in evaluation mode.
[cs28589] SalesforceSettingsSection. Remove Debug message "config section not specified. Using defaults.". It is common to use the default config settings, making this DEBUG message appear frequently. Removed to reduce the noise when setting up a new session.
[cs28588] S4S: SalesforceAccountLookupRoleProvider - Improve logging if provider is disabled.
[cs28587] S4S: Improve the SalesforceRoleProviderBase logging with the provider is disabled
[cs28582] ToolingDynamicQuery add new keyword to the RunQuery method
[cs28581] Update ApexLog parsing to allow for Spring '16 date formats
[cs28532] S4S SalesforceMembershipProviderLead - Ignore the IsMultiRole membership provider settings as it isn't applicable to this provider.
[cs28520] SalesforceSession - Keep the UserInfo that is returned by the Login call, reducing the API call count by one when establishing a session. Override ToString to include basic session details.
[cs28517] SalesforceField - Add IsEncryptedField property to identify encrypted strings that are only visible with ViewEncryptedData. SalesforceMembershipProviderBase - If the configured password field is encrypted, verify that the current Salesforce API user can View Encrypted Data.
[cs28516] SalesforcePod - Add mapping from NA31 as 37.
[cs28512] Correct masking of SessionId in logging.
[cs28509] SalesforceServiceWrapper - When a Partner API Exception occurs, include the apiMethodName and additionalMessage in the Exception Data collection. E.g. For a query() call, this will include the SOQL query being executed.
[cs28502] S4S Account Lookup security providers - Explicitly disable the providers if there isn't API access to the configured AccountLookupObjectName.
[cs28501] SalesforceMembershipProviderBase - Don't attempt to parse empty userNameFieldCaseSensitive configuration.
Release 1.8.16011.2 - 11/01/2016
[cs28485] EntityBase - When attempting to resolve a related objects Id, first check if the relationship field name ends with __r. If so, try and pull the ID from the source sObject using the __c suffix. Check if the fields are available before attempting to access them.
[cs28484] FieldService - Don't log for fields that aren't avaiable outside of a DEBUG build.
[cs28477] Only complete the SalesforceMembershipProviderAccountLookup Initialize if the base provider is Enabled. SalesforceMembershipProviderBase - Log and disable the provider if the VerificationEntityType can't be accessed via the API. SalesforceAccountLookupRoleProvider and SalesforceContactRoleProvider - Set the underlying SfType.
[cs28459] Add SalesforceProfileProviderAccountLookup to pull profile imformation from a custom object with a lookup field relationship to Account
[cs28455] SalesforceProfileProviderLead: Use base class SetPropertiesList()
[cs28453] SalesforceProfileProvider - Use base class standard Initialize() and SetPropertiesList()
[cs28452] SalesforceSettingsProperty: Add parsing of AccountLookup Profile properties. Raise warnings if not processing the expected number of data elements or prefix.
[cs28451] SalesforceAccountLookupRoleProvider: Use base class methods where possible. Add missing XML comments.
[cs28449] SalesforceContactRoleProvider - Use base class properties and methods where possible. Only retrieve the required Contact fields for roles.
[cs28444] SalesforceProfileProviderBase - SetPropertiesList method to extract properties for the given prefix
[cs28443] RolesCache - Replace the underlying ClearCache implementation to remove the Roles specific CacheKey
[cs28441] S4S ProviderPrefixes are now constants rather than static properties
[cs28436] Remove the "-api" sub domain suffix, it is no longer required. Add a mapping for the CS51 sandbox.
[cs28398] S4S: Ensure the RoleProvider Cache has a unique name.
Release 1.8.15336.1 - 16/12/2015
[cs28388] Move to common base class for Membership providers. In particular, the Initialize from the configuration.
[cs28386] FieldService.FieldFromObject() Use existing ResolveReferenceType() method to find the type referenced by the fieldname.
[cs28369] Added SalesforcePod mapping for AP4.
[cs28339] S4S Profile Providers. Make SetPropertiesList() abstract method. Allow FieldsForProfile() to be overridden by each provider. When deleting a Contact based Profile for users, don't attempt to null fields that aren't updatable. Log warning when retrieving profile properties if the value is blank and current user has API access. Otherwise just log a debug message. Fix the retrieval of Contact based profile field configuration using the S4S prefix.
[cs28338] With T4 Template output for an sObject entity, include code comments for Enum values.
[cs28335] Salesforce EntityBase - When updating an sObject, ensure that any field in fieldsToNull is accessible by the current API user and that it isn't a reference sObject.
[cs28333] SalesforcePod: Register identifiers for NA26 and CS80.
[cs28328] SalesforceMembershipProvider - remove Contact from ContactCache when the Sitecore user is deleted. Improve logging in GetContact and GetLatestContact of the UserNameFieldName being used.
[cs28310] After retrieving a static FieldService instance, verify that it has the expected Org and User ID. Plus that is for the expected object type. If it isn't, remove the stored value and create from scratch.
[cs28273] Salesforce is removing support for API access via www.salesforce.com for production and developer orgs. Switch to login.salesforce.com.
[cs28238] Added new SF Org editions to Org Type DropDownList collection values.
[cs28231] Added generated classes for EventLogFile.
[cs28213] When storing sObjects in the EntityCache, prefix the key with the name of the field that holds the key value. This avoids conflicts when two different fields contain the same value.
[cs28202] Updated status to show the provider names
[cs28200] Allow the MembershipProviders to define a custom userNameFieldName and userNameFieldCaseSensitive attributes to override common S4S.config.
[cs28198] Removed test provider settings
[cs28195] Update the Tooling, Apex, and Metadata APIs to Winter '16. v35.0.
[cs28190] Update the Partner API to Winter 16 v35.0.
[cs28156] Tooling API support for cultures that use, instead of . as the decimal separator.
[cs28140] SalesforceSession. Expose OrganizationName via Metadata API describe.
[cs28139] SalesforceServiceWrapper. Improved handling for exceptions in describeSObjectsCached().
[cs28114] Revert to Summer '15 API until Winter '16 is fully available.
[cs28113] Update to the FieldService to ensure separation of metadata between multiple sessions.
[cs28110] Throw UnknownSalesforceFieldException when field can't be accessed in the Updateable check.
[cs28099] Update the Partner API to Winter 16 (v35.0).
[cs28043] ApexTestQueueItem ExtendedStatusFailed for the number of failed test methods.
[cs28042] ApexClass. New FullName property to format in NamespacePrefix.
[cs28040] ApexTestRunning. When enqueuing all test cases, allow the restriction to just the current namespace.
[cs28035] SalesforceSession: Handle logins to community sites with extra URL segment. Improve parsing of Sandbox Name.
[cs27945] Extend the Campaign Test to pull related Contact and/or Lead fields.
[cs27932] Displaying cache data in status page.
[cs27897] Remove Contact from the cache when deleting with Sitecore User Manager.
[cs27896] Added ability to remove single entities from the cache.
[cs27875] Setting invariant culture when parsing double and float values.
[cs27873] SalesforceServceBase - reject objectType parameter with leading or trailing white-space characters.
[cs27871] Determine if a SalesforceSession is to a Sandbox based on the Organization.IsSandbox field. This will work when using the SessionId and ServerUrl to create the SalesforceSession.
[cs27761] Make the EntityFactory public. The RegisterType method can be used to override the EntityBase type that gets created for each sObjectType.
[cs27758] Run Anonymous Apex in a Testing context.
[cs27756] Support for running individual test methods. Both sync and async.
[cs27753] Update all components to use v34.0 of the APIs.
[cs27750] Update the Metadata API to v34.0.
[cs27749] Update the Apex API to v34.0 Summer 15.
[cs27748] Upgrade Tooling API to v34.0 Summer 15.
[cs27746] Upgrade to Partner API v34.0 Summer 15.
[cs27744] Metadata API: Handle Apex Class names > 40 characters by truncating them before appending the RunSingleUnitTest suffix.
[cs27731] CometD: Expose the header collection so that the Session ID can be verified.
[cs27726] Salesforce Session. Expose the Sandbox name, if applicable. Use a single instance of the MetadataServiceWrapper.
[cs27724] CheckMethodStatus can optionally be focused on a single ApexClassId.
[cs27723] ApexUpdateException. Handle missing saveResult and/or deployDetails.
[cs27722] Tooling API UpdateApexTrigger to update ApexTrigger.
[cs27721] Support 2 character SalesforcePod instances.
[cs27720] Make the SObjectField constructor public.
[cs27719] Convert from Metadata and Tooling API types to eqv. Partner API types.
[cs27718] Raise API events from the Metadata API wrapper.
Release 1.8.15176.9 (BREAKING CHANGES) - 30/06/2015
[cs27660] Auto UDF Mapping MultiLineText support.
[cs27637] BREAKING CHANGE: Only set EntityBase Ids if the ID is defined in the underlying sObject. When creating the sObject for update clone the fieldsToNull.
[cs27636] Extend ApexTestQueueItem with a property indicating if there was a compile error.
[cs27632] SoqlQuery: Improve parsing support for Date Literals in lower case. AddWhereClauseFilter and AddOrderBy both require a parseable SOQL query to work.
[cs27631] SoqlParseException. Additional constructor to capture the underlying SOQL.
[cs27614] Fix ContactService.GetByEmail. Use the defined sObjectFields collection to limit the returned fields.
[cs27606] ApexLogService: Add missing LogMessages. Make Attribute Reciprocal optional. Internal method to get sorted list of LogMessage enum values.
[cs27597] When caching sObject metadata check for conflicts in field names, relationship names, and child relationship names.
[cs27572] ApexCodeCoverageAggregate Add convenience properties for accessing Name, FormattedLinesCoverage, NumLinesTotal, and Percent.
[cs27571] Avoid using Service.GetByEntityId(Id entityId) and GetByEntityId(Id entityId, bool retryOnInvalidField) methods. Instead, use overloads that include the required fields.
[cs27569] Apex Log - Add WF_EMAIL_SENT, WF_EMAIL_ALERT Improve parsing of execution duration.
[cs27568] ToolingService - New ApexCodeCoverageAggregateForClass method to get the CodeCoverage for given ApexClass. Improve conversion to Partner API sObjects with nested fields.
[cs27567] Add ability to deploy destructive changes from single xml file. Creates required package.xml and zips.
[cs27560] When caching DescribeSObjectResult meta data check to see if the type is already cached for the given user. Log an error rather than fail to add to cache. During an Upsert log the EntityType of the first record in addition to the count.
[cs27557] Debug Log when the Caches are cleared for a user using ClearCacheForUser(userId)
[cs27483] Add netSuiteManyNamespaces test case.
[cs27478] Add ISalesforceService interface for Salesforce Service classes to implement. SalesforceServiceFoundation. Add ValidEntityId and GetDataSourceInstance abstract methods. Added ServiceFactory to get an instance of ISalesforceService based on the sObject Type.
[cs27476] SalesforceDataSource Add non-generic EntitysFromQueryResult and EntitysFromQueryResultPager methods for when the sObject type can't be determined at compile time.
[cs27475] Add support for Order By to SOQL Expression.
[cs27472] Add option to Remove fields from InternalFields. This is useful when updating a record with a field that can't be updated.
[cs27470] Upgrade to Spring 15 v33.0 APIs. Expose ApiRequestLimitInfo for the most recent API Request limits.
[cs27469] Upgrade the Tooling API to Spring 15. Version 33.0
[cs27468] Upgrade Metadata API to Spring 15. API v33.0
[cs27464] Update the Apex API to Spring 15. v33.0
[cs27463] Update the Partner API to Spring 15. API version 33.0.
[cs27462] An sObject Date field won't have a Time component when queried via the API. Add the required ISO8601 suffix so that is stays at UTC midnight when converted to a DateTime.
[cs27426] Changed all demo code to use the session singleton.
Release 1.6.15041.2 - 10/02/2015
[cs27399] Modified GetSubQuery to return all available sub query records
Release 1.8.15021.2 - 21/01/2015
[cs27367] Fixed References. Fixed Load Historical visits data from MongoDB for Sitecore 8.
[cs27358] Code Generation - Handler generated Service RegisterKeyPrefixObjectType where keyPrefix is null or empty string.
[cs27350] sObject ToInstance check for Anonymous Types before using subclass of EntityBase.
[cs27290] SoqlQuery allow the Limit clause to be updated or removed.
[cs27278] sObject - Add non-generic version of ToInstance that uses a Type parameter.
[cs27277] ToolingServiceWrapper: Optionally define the logLevels to capture with a trace. Remove TraceFlag records that expired before TODAY.
[cs27268] When parsing SOQL handle the optional AS keyword in the FROM clause alias.
Release 1.7.14351.1 (BREAKING CHANGES) - 17/12/2014
[cs27237] Better exception handling in Push visitor and fixed Analytics Scheduler for Sitecore 7.5.
[cs27212] Added Sitecore Visit Model, changed Push visitor, LoadPreviousVisit, PageHistory, UpdateEnriryAnalytics and WebToEntity for Sitecore 7.5 for MongoDB analytics.
[cs27203] Added hyphen and slash in String literal regular expression for SOQL query parser. Fixed SoqlQuery class to remove extra spaces in the query.
[cs27202] Added SalesforceServiceFoundation class (extracted from SalesforceServiceBase) and DisaparateSalesforce class. SalesforceServiceBase and DisparateSalesforceService inherit from SalesforceServiceFoundation class. Fixed SetupBinding() method in SalesforceSession class to avoid license checking while setting up the session. Added a new public constructor in SalesforcServiceWrapper class to take API version as one of the parameters.
[cs27188] Improve Apex Log parsing where the log contains escaped '\' characters as |
[cs27151] SalesforceDataSource.EntitysFromQueryResult(QueryResult queryResult) now takes an optional boolean parameter returnAll (defaults to false). When false, only the records in the current query result will be converted to entities. When true, all records in the query will be added to the list. This will automatically page through all the QueryResults. This also changes the behaviour of the following methods to now return all the matching records. Previously they only returned the records in the current page.
1. SalesforceDataSource.QueryEntities(params string fields).
2. SalesforceDataSource.QueryEntities(params SObjectField fields).
3. AccountService.GetAccountFromName(string accountName, params SObjectField fields).
[cs27118] Modified load previous visit for Sitecore 7.5 and fixed double clicking the page to load the profile key values set in Salesforce issue.
[cs27108] Added Upload Attachments option using S4S mapping to PushVisitorAction.
[cs27071] Added S4S Mapping Wizard Upload Attachments functionality.
[cs27067] Update the APEX Web Service to v32.0 for Winter 15.
[cs27058] Updated the Partner, Metadata, and Tooling APIs to v32.0 (for Winter 15).
[cs27055] Handle SOQL generation for Date Formula, such as TODAY and LAST_WEEK.
Release 1.7.14295.1 - 22/10/2014
[cs27050] Changed user name format of campaign providers.
[cs27043] Added FuseITLoadPreviousVisit sublayout for Sitecore profile cards.
[cs27041] Added Sitecore scheduler to sync analytics data to Salesforce at a specified time interval.
Release 1.7.14290.5 - 17/10/2014
[cs27030] Added S4S Upload Attachment field. Included the field into FuseIT.Salesforce4Sitecore.Core.xml file.
[cs27029] Updated the S4S Mapping Action to also upload WFFM submitted files as Attachments to selected Salesforce entity. There is a new Checkbox on the Sitecore Mapping template that enables this feature. The S4S Mapping Wizard has not been updated to set this yet.
[cs27025] S4S Mapping supports AssignmentRules when creating Cases and Leads.
[cs27024] Added functionality to retrieve Sitecore Profile cards and patterns.
[cs26802] Allow the initial Salesforce Partner API URL to be passed in the constructor to the SalesforceServiceWrapper.
[cs26801] Debug level logging in SalesforceSessionSingleton around how the session was constructed.
[cs26800] Change the logging level from Info to debug when there are no proxy settings.
[cs26691] Added "Email Form With Attachment" save action to email all the WFFM content include any upload files.
Release 1.7.14230.2 - 18/8/2014
[cs26624] Add a version of S4S WFFM mapping field items to every available language, then publish.
[cs26490] Use v31.0 as the Supported API version. Summer 14.
[cs26489] Update the Apex API to version 31.0 for Summer 14.
[cs26486] Updated the Partner, Metadata, and Tooling APIs to v31.0 (for Summer 14).
[cs26478] Track the ApexLogService.LogMessage category and level via the LogMessageAttribute.
[cs26430] Add support for Enhanced Trialforce Branding custom login domains ending in .cloudforce.com.
[cs26420] Added a class SalesforceOfflineServiceWrapper to create an offline Salesforce session using the data cache and the Salesforce user Id.
[cs26414] Track API Callout if retrying after reestablishing Session.
S4S Release 1.7.14190.1 (BREAKING CHANGES)
[cs26344] Make object type comparison case insensitive when using SalesforceServiceBase.ValidEntityID.
[cs26343] Returns an empty QueryResult for ranges out of the size.
[cs26165] Updated to work with personal account for PushVisitor save action.
[cs26089] Updated the Apex WSDL to v30.0 for Spring 14.
[cs26088] Updated the MetaData API to v30.0 for Spring 14.
[cs26087] Updated ToolingAPI to v30.0 for Spring 14.
[cs26086] Updated Partner WSDL to v30.0 for Spring 14.
[cs25866] Deleted any existing TraceFlag records when capturing logging for a Salesforce User.
[cs25824] Added SalesforceCampaignRoleProvider and fixed bug with user emails not being set.
[cs25768] Implemented Membership Provider functionality for Salesforce Campaigns.
[cs25684] Added Enum values for LogMessage WF_ASSIGN, WF_RESPONSE_NOTIFY, WF_RULE_ENTRY_ORDER.
[cs25683] Added SOQL parsing support for three character Aggregate Function aliases.
[cs25631] Upgraded to HtmlAgilityPack.dll v1.4.6 from v1.4.0.
[cs25590] Added POP_TRACE_FLAGS and PUSH_TRACE_FLAGS to ApexLogService.LogMessage enum.
S4S Release 1.7.14023.1
[cs25558] Added caching for role providers.
S4S Release 1.6.14007.1 and 1.7.14007.1
[cs25482] Added new field 'Page Name' for Salesforce page history popup.
S4S Release 1.6.13297.1, 1.6.13338.1 and 1.7.13344.1
[cs25397] Added persisted login class. Updated push visitor save action to create an auto login cookie when creating a Salesforce user.
[cs25387] Base version of Apex Code Coverage Control. Use SOSL to get the list of ApexClasses containing test cases.
[cs25386] ApexClassService - new methods to get ApexClass Body and List of classes with test cases. Add addtional WF_RULE_ LogMessage enum values.
[cs25374] Add additional LogMessage enum values for VF_*, SOSL_* and WF_RULE_NOT_EVALUATED.
[cs25345] Allow the TraceFlag to be set so that log entries get captured.
[cs25341] Now throws an exception so that WFFM will display an error.
[cs25302] Added different case of key word "Like" for Soql parsing.
[cs25084] Added FuseIT.S4S.WebToSalesforce.
[cs25082] Resolve QuickActionLayoutItem SGEN error with multidimensional array support.
[cs25080] Added PushVisitor action, this action will create a lead or contact in Salesforce and also push visitor analytics data.
[cs25072] Added S4S Status Application page for Sitecore.
[cs25070] Beta support for generating Apex from a WSDL that is compatible with wsdl2apex.
[cs25065] Inital Admin tools to generate Apex from WSDL. Compatible with Salesforces wsdl2apex.
[cs25064] Update supported WSDL version to 29.0 / Winter 13.
[cs25063] ToolingService methods to get the MetadataContainer and SymbolTable.
[cs25061] Update to Apex API 29.0 Winter 14.
[cs25060] Update to Metadata API 29.0 Winter 14.
[cs25059] Update to Tooling API 29.0 Winter 14.
[cs25058] Update to Partner API 29.0 Winter 14.
[cs25041] Add PodIds a, i, j, w for 3 new NA and 1 new EU servers.
[cs24979] Fix off by one error when batch size == max batch size - 1. e.g. 399 Add supporting test cases.
[cs24951] Added metadata to EntityBase for user to defined data.
[cs24940] Allow for the enviroment to be configured to a custom value. Uses the "environment=" connection string parameter.
[cs24885] SoqlQuery - New Method - AddChildRelationship() to inject a sub query.
[cs24884] ApexLogService support for pre-filtering out specific log message types.
[cs24840] Added extra non-alphanumeric characters to string literal parsing regex.
[cs24838] Added correct parsing of '.' and '@' in string literals (for email addresses).
S4S Release 1.5.13186.1, 1.6.13186.1 and 1.7.13189.3
[cs24588] Added Sample scheduled task to S4S Starter Kit.
[cs24586] Update the Tooling API to version 28.0. Created the ToolingServiceWrapper to wrap the SforceServiceService that is generated from the Tooling API WSDL.
[cs24571] Update Apex WebService WSDL to v28.0.
[cs24570] Update MetaData API to v28.0.
[cs24564] Update to Partner API v28.0.
S4S Release 1.5.13165.1
[cs24413] Allow Salesforce Connection strings to be marked as ReadOnly. This will cause a ReadOnlyException if a web method is called that attempts to alter or insert records to Salesforce.
[cs24412] Allow the CallOptions Client Id and defaultNamespace to be specified via a connection string.
[cs24411] Add SalesforceSettingsSection configuration option to set the CallOptions.defaultNamespace. "A string that identifies a developer namespace prefix. Use this field to resolve field names in managed packages without having to fully specify the fieldName everywhere.".
[cs24403] ApexLogService - Improve parsing of the Timestamp from the Apex logs.
[cs24402] Added method - SObjectMetadata.FindValidationRuleNames() - Retrieve a list of all the validation rule names via the meta data api.
[cs24401] DataSource - Fix encoding of CSV data that contains inner double quote characters.
[cs24259] SalesforceMembershipProviderLead - Updated the lead providers to exclude any leads that have been converted.
[cs24168] Update the DataCache for the meta data description dictionary if it is already present in the cache.
S4S Release 1.5.13095.3 (BREAKING CHANGES)
[cs23985] Fix recursion bug with Soql.Operator.OperatorFor. Expose the ContactService and LeadService GetByEmail methods.
[cs23981] Added mapping wizard items.
[cs23939] Handle failure to read SalesforceSettingsSection from config file. Revert to defaults.
[cs23875] On sObject Upsert, default the externalIdField to "Id" if it isn't set. When upserting, the presence of the Id field is the only way to know if you are dealing with an existing object or not.
[cs23871] Prevent the SalesforceExceptionFactory from attempting to convert an existing SalesforceException. It should only covert a SoapException.
[cs23833] Use the Metadata wrapper to retrieve SObjectMetaData for a sObject by name. Automated unpacking from the Zip. [cs23838] Add new SalesforcePod class that can be used to find the instance based on the OrgId or SessionId. Can be used to determine if you are working with a Sandbox or if the ServerURL isn't available.
[cs23830] [cs23831] Don't force an AggregateResult sObject to have the Id field.
[cs23829] Add support for getting and setting double fields via the InternalFields.
[cs23827] Add MetadataServiceWrapper and SObjectMetadata classes. Reference to Ionic.Zip.dll is now required to extract Metadata Zip files.
[cs23824] Wrap the Metadata API to provide additional functionality.
[cs23801] FuseITSalesforceLogin.ascx Layout - Example of logging a user in without the password.
[cs23800] FuseITLoginStatus.ascx Layout - Added example setting Profile Property.
[cs23791] Add the ability to restore the casing of a Salesforce Id if it is 18 characters long.
[cs23786] CacheBase - Stripped out a prefix on the get all method, caused a bug where prefix was added twice.
[cs23773] Support parsing SOQL with whitespace in string literals.
[cs23765] WFFM When a lead that is being updated has been converted to a contact, then the contact record will be updated instead.
[cs23684] Add support for the ToolingAPI. Upgrade API to version 27.0.
[cs23682] If the SalesforceSession is successfully reestablished on encountering an invalid SessionId only log an Info level message rather than an Error.
[cs23676] Fix NullReferenceException when checking for Single and Multi role providers in FuseIDConnectorStatus.ascx Layout.
[cs23675] isMultiRole="true" is required for multirole membership providers.
[cs23674] SalesforceMembershipProvider - When setting the MembershipProvider username the s4s.config UniqueKeyProperty also needs to be set to the same value.
[cs23616] [cs23672] BREAKING: Correct capitalization of isMultiRole on the SalesforceMembershipprovider.
[cs23602] WFFM Fixed error when no active campaigns exist.
[cs23598] In the T4 templates of entities correctly resolve the relationship name where it may be undefined in the metadata.
[cs23546] Add SalesforceMembershipProviderLead, SalesforceProfileProviderLead, and SalesforceLeadRoleProvider so Leads can be used to authenticate with Salesforce as Contacts currently can.
[cs23467] Add IsEvaludation and EvaluationExpiryDate properties to SalesforceSession.
[cs23465] WFFM Mapping Leads and Contacts to multiple campaigns.
[cs23464] WFFM Mapping to Campaigns.
[cs23462] DataSource.SingleFilter - Fixed a bug where returned string was invalid if passed duplicate ids.
[cs23440] Extend the ApiCalloutEventArgs to include the callout duration TimeSpan and the Cumulative API Callout Count.
S4S Release 1.5.2013.2 (BREAKING CHANGES)
[cs23413] Log a DEBUG message starting with "API:" when any Partner API callouts are made.
[cs23343] BREAKING - S4S license keys are removed from the S4S.config and are now in an xml file S4SLicense.xml stored in the Sitecore Data folder next to the Sitecore License xml file. Added Org wide licensing option to license file.
[cs23302] & [cs23303] Added DataSource.AddDataSourceFilter() for a string data filter.
[cs23254] Added /sitecore/shell/Applications/FuseITS4SMapping/FUSE S4S Mapping.xml for mapping tool.
S4S Release 1.5.2012.42 (BREAKING CHANGES)
[cs23238] Added support for users to map Last Password Change Date to Salesforce.
[cs23206] SalesforceServiceBase.UpsertEntities now has inbuilt support for batching collections larger than 200 sObjects, Changed the SalesforceSession.Binding BatchProgress events to use the new BatchProcessEventArgs, Added SalesforceSession.Binding.OnApiCallout to track API usage, Added QueryTimingEventArgs to track timing for running SOQL queries.
[cs23205] Add a protected constructor to SalesforceField for Binary Serialisation support.
[cs23204] Added Multi-Role Provider Status to starter kit connector page.
[cs23202] Fixed a bug to set the correct field mapping name.
[cs23181] Update from the Apex v23.0 to v26.0 WSDL, BREAKING - Namespace changed from SalesforceConnector.SalesforceApex230 to SalesforceConnector.SalesforceApex. Update from the Metadata v24.0 to v26.0 WSDL.
[cs23178] BREAKING CHANGE - The SalesforceMembershipProvider now determines if a multirole provider is use via the dedicated isMultiRole property. It is no longer dependent on the name of the provider, Added additional checks to the SalesforceContactRoleProvider for ReadOnly and Enabled settings.
[cs23175] In Apex Run Test Results show failed tests first and in red. Allow multirow display for showing stack traces and errors.
[cs23173] Only add an Apex log filter event if it isn't already being filtered.
[cs23172] In the login control only use the selected connection string name if the selected tab is for connection string.
[cs23171] Added INSUFFICIENT_ACCESS to SalesforceExceptionCode enum.
[cs23168] Support for setting the logging levels per category when running anonymous apex.
[cs23167] Support for setting the log categories for ApexService.executeAnonymous().
[cs23164] Fixed a bug caused when querying join reports.
S4S Release 1.5.2012.34
[cs23111] Fixed bug where additional filters weren't being applied.
S4S Release 1.5.2012.33
[cs23101] Increased validation and logging.
S4S Release 1.5.2012.31
[cs23080] SoqlQuery and now append additional where clause filters via AddWhereClauseFilter().
[cs23079] T4 entity template update to allow setting internal entity relationship objects. Allows setting the FK on upsert via an external id.
[cs23079] Don't output the RecordTypes in the entity template if they aren't available for the API user.
[cs23079] Excluded '.' from C# names to resolve T4 generation issues.
[cs23073] T4 Generated sObject Entity relationship properties can now be set to allow Foreign Key Resolution via external Ids when creating new entities.
[cs23073] New SalesforceServiceBase.UpsertEntity() method.
[cs23073] New SalesforceCreateException and SalesforceUpsertException are thrown if errors encountered with an Upsert or Save operation.
[cs23071] Added properties to SalesforceSession for the SalesforceOrganizationName, SalesforceUserName, SalesforceUserFullName, and UserInfo (GetUserInfoResult).
[cs23066] Added argument validation for retrieve() to ensure the fieldList, sObjectType, and ids are defined.
[cs23054] SalesforceServiceWrapper - added argument validation for retrieve().
[cs23052] Added additional error checking to EntityBase.
[cs23043] Exposed RunTestsResult total run time as a TimeSpan.
[cs23036] Added specific SalesforceInvalidQueryLocatorException for INVALID_QUERY_LOCATOR SalesforceExceptionCode.
[cs23035] Pipeline functionality for WFFM field mapping wizard.
[cs22997] Support for parsing "MAXIMUM DEBUG LOG SIZE REACHED" message.
[cs22987] Add strongly type LoggingEvent classes. Keep NewLine characters for multiline log messages.
[cs22974] Added Services.Metadata.AccountMetadataService [cs22975] ApexTestRunner supports LogInfo and LogCategoryLevel in preference to the deprecated LogType. Allows for finer tune logging levels.
[cs22967] Added support for the INVALID_QUERY_LOCATOR ExceptionCode.
[cs23051] SalesforceServiceBase - Fixed upsert method when passing in an external ID.
[cs23048] If exception occurs in ApexTestRunner.RunTests() throw SalesforceException rather than SoapException.
[cs22965] Removed namespace prefix from SalesforceSecurityProvider.SitecoreRoleEnabledFieldName.
S4S Release 1.5.2012.29
[cs22956] Fixed bug caused by large numbers of custom fields in the edit screen for users.
[cs22926] Resolve issue where there was only a single CodeCoverageResult.
[cs22925] Add the DesignerSerializationVisibility.Content attribute to the fields collection.
[cs22924] Add ExpandableObjectConverter for SalesforceFieldConverter to improve display in Property Browser.
[cs22923] Handle CodeCoveragePercentage calculation when there are no lines covered.
S4S Release 1.5.2012.24
[cs22634] Add new GetSoqlSubQuery() method that won't add Id fields to the SOQL query. This is required for sub queries that don't include aggregate functions.
[cs22614] Check for the PasswordFieldName and IsEncryptedFieldName in the InternalFields before accessing them in ValidateUser().
S4S Release 1.5.2012.21
[cs22534] Added DataSource Operator support for IN and NOT IN filters. The Operator constructor is now private. Instances can be created with Operator.OperatorFor().
[cs22502] Added SetFields() method to explicitly set the SOQL select fields in SoqlQuery.
[cs22479] Modify T4 templates to ensure the Referenced sobject types are registered with the EntityFactory when using properties.
[cs22478] Added Admin ApexTestRunner class to run Apex Test cases via the API.
[cs22477] Split the CompositeFilter into LogicalConjunctionFilter (AND) and LogicalDisjunctionFilter (OR).
[cs22476] Create the SalesforcePasswordExpiredException when the Salesforce Password has expired.
[cs22472] WFFM - Added track user history class - uses the analytics cookie to track the users history when they submit a form via webform for marketers.
[cs22471] WFFM - Added analytics tracking on submission of form.
[cs22419] Log a debug message if RetryOnInvalidSession is not configured and Salesforce has returned an InvalidSession error.
[cs22418] Added MALFORMED_QUERY (an invalid query string specified e.g. query string longer than 10,000 chars) to the SalesforceExceptionCode enum.
[cs22417] Log warning in EntitysFromQueryResultPager if the sobject ID field is not populated.
[cs22416] Resolve issue with Id equality operator and null comparison.
[cs22400] WFFM - Fix where if an account cannot be found then a new one is created.
[cs22385] Fix for parsing Unknown Salesforce Exception Codes and fix for NativePageSize when previous query result was empty.
[cs22374] Added ApexLogService.ApexLogToDataSet(string) method to do basic Log to DataSet parsing.
[cs22315] Added DateTime SoqlFilter support for SalesforceDataSource.
[cs22292] Added ApexLogService.GetApexLog(id) method to retrieve complete log by Id.
S4S Release 1.5.2012.18
[cs22035] Add Salesforce Contact Multiple Role provider which supports Salesforce fields: multi-picklist, picklist, and checkbox.
S4S Release 1.5.2012.9
[cs21745] Allow Salesforce Services to be created where keyPrefix can't be determined directly via Partner API. In these cases it won't be possible to find the sObject type from an Id.
[cs21616] Fix the Sitecore role provider to handle other domain users.
S4S Release 1.5.2012.6
[cs21546] EntityCache now optionally specifies if key is case sensitive. If not case sensitive it will be converted to lowercase. ContactCache constructor now takes a parameter that indicates if the key field is case sensitive.
[cs21546] SalesforceMembershipProvider: Searches for Contacts by the UserNameField now takes into account if the key field is case sensitive as indicated by the S4S.config S4S.UniqueKeyCaseSensitiveProperty setting (Defaults to false).
[cs21546] SalesforceRoleProvider roles now cached for short durations (600 seconds) so repeated calls to IsUserInRole or GetRolesForUser do not result in calls to Salesforce.
S4S Release 1.5.2012.5
[cs21518] Increase CacheItemPriority on primary cache keys to NotRemovable. If these keys are automatically flushed from the cache all the dependent records are also removed (by design). Increase debug level logging from Security Providers and Caching.
[cs21457] Increase DEBUG level logging in the Caches and Providers to assist with debugging.
S4S Release 1.5.2012.4 (BREAKING CHANGES)
[cs21403] In relation to the DataCache, when adding a new DescribeGlobalResult to the cache, clear out any existing entry. In the SalesforceServiceWrapper, allow batch update of records. In Entities, expose base64 encoded data as byte in .NET. Added Direct SOQL support to SalesforceServiceBase.
[cs21354] Included the Salesforce OrganizationType in info logging.
[cs21329] Updated Salesforce Partner API to version 24.0 and changed namespace to FuseIT.Sitecore.SalesforceConnector.SalesforcePartner. Updated Salesforce Metadata API to version 24.0 and changed namespace changed to FuseIT.Sitecore.SalesforceConnector.SalesforceMetadata.
[cs21236] Added System.Web.UI.WebControls.LoginView to typesThatShouldNotBeExpanded.
[cs21172] Improved equality operators in Id class when dealing with null and other object types.
[cs21168] Changed QueryResultPager method to return QueryResult with queryLocator if page size is an exact match. No longer parses an empty SOQL query.
[cs21145] Added GetSubQuery method to InternalFields to return the entire sObject from a SOQL subquery.
[cs21125] Added SalesforceServiceBase EntitiesFromQueryResultPager methods to retrieve entire result set (previously limited to a maximum of 2000 records depending on the number of fields requested). SalesforceDataSource.QueryEntites method now returns all the matching entities by paging through the query results (previously returned the first query result). SalesforceServiceBase GetAll method now uses the updated SalesforceDataSource methods to return all entities.
S4S Release 1.5.2011.963
[cs20982] Resolve bug where checking Sitecore Version caused an integer parsing exception as the revision element would contain text as well as the revision integer.
[cs20981] Expose APEX web services from the SalesforceSession.GetApexService().
[cs20966] Add SOQL parsing support for additional constructs such as GROUP BY, HAVING, LIMIT, WITH.
[cs20842] Add more logging about how the Salesforce Session is set.
[cs20793] Handle missing settings.
[cs20785] Removed error message if SalesforceEnvironment is missing from connection string.
[cs20688] For generic data source add WHERE clause as a filter in the constructor.
[cs20662] Make the field search case insensitive.
[cs20636] Updated reference to SalesforceServiceWrapper.
[cs20631] Added SalesforceConnector Services reference for S4S build.
[cs20539] Modified eval date method to use same date format as countries like US.
S4S Release 1.5.2011.959
[cs20121] Fix issue where the LastLoginDateFieldDefined property wasn't returning correctly.
[cs20244] Move the parsing of the SOQL into the SoqlQuery class. Fixed WHERE clause issue.
[cs19945] Update to Salesforce Package 1.11 to ensure Testing Contacts have a valid Country Field value. Some Salesforce Orgs are validating these - values.
[cs20004] Add ExistsByFieldEquals method.
[cs20252] Add new EnumHelper helper methods to get the values and a dictionary of values and descriptions.
S4S Release 1.5.2011.950
[cs19843] Reduce logging when testing if an ID is case sensitive or not.
[cs19869] Allow the SalesforceSessionSingleton instance to be cleared.
[cs19891] New Salesforce Enterprise Edition package to install 1.9. Fix issue where the Contact.Name may not be unique within the Org. In which case a numeric suffix will be added to the Sitecore User Name until it become unique. Alternatively, S4S custom settings can be used to indicate that the Email field should be used when setting the Sitecore User Name.
[cs19862] Add the StringBuilderAppender for capturing log messages at runtime.
[cs19868] Add support for the CaseSensitiveID.
[cs19870] Add a DataExportCollector to pull down Weekly Data Exports automatically.
[cs19872] Add a T4 template control to generate Salesforce objects for S4S Diagnostics.
[cs19874] Update the FieldService.ResultsToDataSet method to take a SalesforceSession and optionally fetch the remaning query results.
[cs19875] Remove the DataSet conversion functionality from the Services.FieldService to the DataSource.DataSetConverter class.
[cs19892] Upgrade to package 1.10 to ensure test cases work when the Custom Setting is set to email.
S4S Release 1.5.2011.945
[cs19648] Handle failure to load provider.
[cs19700] Master Details relationships must have a Child Relationship.
[cs19631] Move the SoqlQuery class into the Soql namespace.
[cs19646] Add new Properties to Security Providers to give a basic indication of the Licensing Status.
[cs19649] Add example log4net appender to send error emails.
[cs19693] Add PolymorphicKeyReference property to base Relationship class so that it can be used for Lookups in addition to MasterDetailRelationships.
[cs19697] Add a new DataSource method, RunQueryExists(). Run a SOQL query and check if at least one matching record exists.
[cs19740] Allow establishment of a SalesforceSession using the sessionId and serverUrl.
[cs19747] Switch from ISubmit to ISaveAction. Allow for the creation of new Contacts and Leads. Add a SalesforceSessionSingleton implementation for working with the API session.
[cs19749] Add a WFFM sample Field Type control to create a Drop Down List using Salesforce field picklist meta data e.g. Create a Drop Down List for the Lead Industry.
[cs19773] Move the parsing of the connection string to the LoginDetails. Raise an event from the SalesforceSessionSingleton when a new Salesforce session is set.
[cs19779] Pre-compiled templates to generate S4S entities.
[cs19781] Take the output of the pre-processed T4 template for the core Salesforce objects (no custom fields or objects) and merge it back into S4S. All exposed default objects and fields will have classes now.
[cs19812] Add support for proxy credentials in the ConnectionString/LoginDetails for Salesforce Soap connections.
S4S Release 1.5.2011.941
[cs19521] Resolve parameters issue in SalesforceDataSource.GetPager method.
[cs19562] Add GetAll() method to EntityCache to retrieve all cached entities of that type. Add additional caching examples.
S4S Release 1.5.2011.917
[cs19354] EntityCache constructor to support get by id with defined cache duration.
[cs19372] New methods for MasterDetail Lookup relationships for sObjectType. Methods in FieldService now return SalesforceFields rather than the Partner. API Field object. Calls to these methods will need to be updated.
[cs19384] Resolve issue with Master-Child Relationships through Partner API.
S4S Release 1.5.2011.914
[cs19250] CacheBase.Contains no longer throws ArgumentNullException if no cacheKey.
[cs19348] Resolved bug when parsing a Salesforce number field to an integer. In some cases, the Salesforce Partner API would return the value with a decimal point even though the precision was 0. For example, a value of 5 in a Salesforce Number(10,0) field would return as "5.0". This caused the field extraction to fail. Resolved bug updating DateTime field from Sitecore User Manager. The value could be extracted from Salesforce but not written back via the Profile provider. Add support for reading and writing internals fields as floats.
[cs19268] Add FieldService.HasField(string fieldName) method.
[cs19278] Add support for the ID EmptyKey, which is used to indicate an empty reference in a Data Export.
[cs19285] SalesforceServiceWrapper.ObjectTypeFromId(Id) will now return null when the type for the ID can't be determined. Previously an ApplicationException error was thrown.
[cs19300] Add Example to Starter Kit to create Sitecore Content Items for Salesforce Contacts using a Sitecore Agent job. Add a generic Singleton implementation for the SalesforceSession. Add support for DateTime Soql filters to data sources. Add RefreshSalesforceSchemaOnError option to SalesforceSession control schema refreshes.
[cs19326] Restrict fields returned when retrieving a single Contact. In the membership provider, don't consume all provider keys (throwing exceptions). Just return null as another provider may be able to match the key.
[cs19349] Switch from Hashtables to Dictionaries for caching. Wrap Salesforce Field metadata in the SalesforceField object.
[cs19352] Add optional support to expire a Contacts Membership login using data from Salesforce. Contacts can optionally be locked out and have the approval status toggled. Add support for setting nullable floats, ints and Id field values.
[cs19353] Create EntityCache class for generic entity caching by a given key or the Id. Move cache keys into the constructors.
S4S Release 1.5.2011.912
[cs19239] Restrict the fields retrieved by the S4S SalesforceMembershipProvider to be the minimal required. This should help address issues where other unrelated fields are being added and removed in production while S4S is running with cached data. Fix bug when searching Membership provider by email.
[cs19240] SalesforceServiceBase.DeleteEntities() Allow for bulk delete of entities in addition to current ID only support. SalesforceServiceBase.GetAll() overload to only pull specific fields.
[cs19241] If a query or retrieve API call to Salesforce fails due an invalid field in the request and the G4S/S4S call didn't specify the field clear the cached Salesforce schema data and retry the API call. This will provide some tolerance for schema changes occurring live in Salesforce when G4S/S4S is running.
[cs19206] Add examples to the S4S Starter-kit pulling details from the Profile and Role providers.
[cs19222] Add a new class to represent a Salesforce ID. Allow for SOQL queries against this new class. E.g. Get by strongly typed ID field. Update the T4 generation templates to output the fields for an object using the required type. Allow for Select queries using fields defined for an sObject. Move exceptions into a folder. Add direct support for Opportunities in the Entities namespace.
[cs19224] T4 templates now produce separate files per class and entity.
[cs19243] Return null when attempting to retrieve a string field that doesn't exist from a sObject. Previously empty string.
[cs19246] Handle REQUEST_LIMIT_EXCEEDED exception when establishing session. Disable the Salesforce Membership/Role/Profile providers if a Salesforce session cannot be established.
S4S Release 1.5.2011.0906
[cs19174] Resolved issue with re-establishing Salesforce session from the connection string when it has expired due to inactivity.
[cs19193] ComparisonOperator and Operator moved from FuseIT.Sitecore.SalesforceConnector to FuseIT.Sitecore.SalesforceConnector.Soql namespace.
[cs18626] Updated Salesforce Partner API to 21.0 version. Namespace changed to FuseIT.Sitecore.SalesforceConnector.SalesforcePartner210.
[cs18626] Updated Salesforce Metadata API to 21.0 version. Namespace changed to FuseIT.Sitecore.SalesforceConnector.SalesforceMetadata210.
[cs18571] Generic service updates. Improved field caching per object type. Allow the DataCache to be persisted out. Useful for Winforms. Increase the license period for sandbox users to 365 days.