S4S Sitecore for Salesforce Release Notes
The development of S4S in ongoing. The following release notes detail the key improvements of each release.
S4S Release 1.5.2012.4
[cs21172] Improved equality operators in Id class when dealing with null and other object types.
[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.
[cs21145] Added GetSubQuery method to InternalFields to return the entire sObject from a SOQL subquery.
[cs21168] Changed QueryResultPager method to return QueryResult with queryLocator if page size is an exact match. No longer parses an empty SOQL query.
[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.
[cs21354] Included the Salesforce OrganizationType in info logging.
[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.
[cs21236] Added System.Web.UI.WebControls.LoginView to typesThatShouldNotBeExpanded.
S4S Release 1.5.2011.963
[cs20539] Modified eval date method to use same date format as countries like US.
[cs20662] Make the field search case insensitive.
[cs20793] Handle missing settings.
[cs20966] Add SOQL parsing support for additional constructs such as GROUP BY, HAVING, LIMIT, WITH.
[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.
[cs20631] Added SalesforceConnector Services reference for S4S build.
[cs20636] Updated reference to SalesforceServiceWrapper.
[cs20688] For generic data source add WHERE clause as a filter in the constructor.
[cs20785] Removed error message if SalesforceEnvironment is missing from connection string.
[cs20842] Add more logging about how the Salesforce Session is set.
[cs20981] Expose APEX web services from the SalesforceSession.GetApexService().
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 remaing 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.