Changelog 6.4 PATCH 2
This page contains information about the following patch published for Sense/Net ECM Enterprise Edition:
- version before the patch: 18.104.22.16860 or 22.214.171.12426 (this cumulative patch applies to both versions)
- version after the patch: 126.96.36.19963
Release date: 14 September, 2015
Please note that patches, upgrades and other packages are published only for the Enterprise Edition. Community customers may perform the upgrade manually after the next community release.
Installing the patch
To install this patch, please follow the following steps.
In this release the Task Management component has significantly changed. You will need to install a separate web application for the task management component to be able to work. Please check how this works in the following articles:
- Task Management - about the feature
- Task Management - for Developers - about installation and development opportunities
SnAdmin folder and configuration
Make sure that you have a complete SnAdmin folder in your web folder and the configuration (connection string, paths of other web folders in NLB system) is correct (especially for the SnAdminRuntime.exe tool in the Tools folder). Please read that article carefully about executing a package - for example when to stop and start the web site, how to configure the tool.
Before executing the package, please copy the new SnAdmin.exe and SnAdmin.pdb files from inside the package's Admin folder to your web\Admin\bin folder. This tool must be refreshed manually as of now.
Execute the package
This patch contains the following package. You should copy it to the SnAdmin folder and execute it:
It is highly advisable to make a complete backup before executing a patch to make sure that no information gets lost.
- In case of an NLB environment you have to configure MSMQ for the security component (separately from the main Sense/Net ECM MSMQ provider and channel setting!). Please create new channels dedicated to security messages the same way as you created ones for the core product. Then please configure these new channels as security channels in all your configuration files where MSMQ is already configured:
<add key="SecurityMessageProvider" value="SenseNet.Security.Messaging.Msmq.MsmqMessageProvider, SenseNet.Security.Messaging.Msmq" /> <add key="SecurityMsmqChannelQueueName" value=".\private$\security1;.\private$\security2" />
- After restarting the portal you will need to connect your Sense/Net ECM installation to the newly installed Task Management application.
Check the results
You can review the log files created for the execution or - after restarting the website - you may open the new Version Info page accessible from the Root Console.
In this article we list all the important new features, bug fixes and breaking changes that were made in the product since the release of the previous patch. To check previous change logs, please visit the following article:
- Edit in MS Office implementation was modified to use a modern protocol instead of a browser plugin. This makes the feature work in all modern browsers.
- Document viewer
- From now on users can save page orientation (rotation) information permanently. Single pages or whole documents can be rotated from the document viewer. Print feature also takes rotation into account.
- The portal is able to serve rotated images based on a simple URL parameter.
- Scrolling behavior changed: from now on you can scroll only to the last available preview image to make the UI more consistent and robust. When the rest of the preview images are generated, you can scroll further downwards.
- Task management decoupling: Task management became a separate component, Sense/Net ECM connects to it using a client library.
- Security component integration
- a completely revamped security component makes sure that permission changes are really fast even in a huge content repository.
- Every content has an Owner user and it is possible to change the owner or take the ownership of a content if the current user has the appropriate permissions (Take ownership is a new built-in permission).
- There is a new built-in special group called Owners that you can set permissions to. The permission setting will be applied to the owners of content items (works similarly to the retired Creators group).
- Speedup and maintenance
- Indexing activity queue is a new architectural element designed to make NLB environments more robust and reliable when many content operations are happening at the same time.
- Delete operation got a lot faster: binaries are not deleted from the database immediately, only detached from their version row. A new background service monitors the database and deletes orphaned rows from the binary table. Execution period is one minute.
- Cached binary size is configurable separately from chunk or buffer size (see configuration changes above).
- Long-running transactional operations are rolled back after a configured timeout. A detailed log entry is written to the event log in these cases.
- Indexing activities are not created for content that will not be indexed (e.g. preview images). This lessens the load on the database server and makes indexing faster for other content.
- A non-clustered index has been added to the Nodes table for the NodeTypeId column to make type queries faster.
- Take ownership
- On the Edit permissions page you can change the owner of a content.
- A new OData action named TakeOwnership is also available for developers.
- The Task Monitor user interface has been refreshed and polished.
- A new Version Info admin page was added to the Root Console that displays all the information related to the currently installed version of both the Sense/Net ECM core product and the applications. For more info about packages please visit the SnAdmin article.
- For developers
- It is possible to import content with explicit version information (e.g. import a document that has version 2.5D).
- A list of existing preview images is available for client side developers.
- The new BinaryData.CopyFromStream API entry point lets you save large files on the server side without having to worry about chunking.
- It is possible to configure the size of cached binaries in the web.config using the following key in the 'sensenet/dataHandling' section:
- Lucene activity execution timeout is configurable.
- New OData actions added for modifying group membership: Add members and Remove members.
- It is possible to create a custom skinmanager class in case developers need to customize how the appropriate skin is found for a request.
- A new entry (ContentMoved) is added to the audit log when a content is moved.
- New install steps were added:
- for adding and modifying field properties in a CTD.
- for modifying a field type in a CTD.
- for adding and modifying string resources.
- for starting and stopping an IIS website.
- Workflow developers may use the RelatedContentProtector feature in an activity to be able to modify the related content without aborting the workflow.
- Security component integration
- The Creators and Last modifiers built-in groups were removed. Their permissions are granted to the Owners group.
- Namespace change(mainly because of the PermissionType class):
- from SenseNet.ContentRepository.Storage.Schema
- to SenseNet.ContentRepository.Storage.Security
- 3rd party permission editor code (SetPermissions calls) should make use of the AclEditor.Set (or Allow/Deny) method instead of the old SecurityHandler API.
- The AclEditor.SetPermission method previously expected a 'propagates' parameter that is now changed to 'localOnly' which has a totally opposite meaning!
- Permission type indexes have changed. All Application .Content files that contain the RequiredPermission field need to be updated (in the file system) to contain permission type names (e.g. Open, Save) instead of indexes.
- Task management:
- Namespace change (will cause build errors): from SenseNet.BackgroundOperations to SenseNet.TaskManagement.Core
- Document preview provider:
- OData request stream URL decoding is removed. This means that you have to change all your OData POST requests and remove the encodeURIComponent method call when defining the 'data' property of the ajax call. See the entity creation request as an example.
- Site menu URL handling: Link and Content link items will correctly navigate to the given referenced content or external URL.
- Retry logic added to the ForceDelete method to make sure that unnecessary errors do not bubble up to the user.
- Tag admin fixes: it is possible to edit/delete a tag, and the blacklist can be also managed from the user interface.
- Downloading a pdf version of a document containing rotated pages works correctly: landscape pages are generated when necessary.
- Content list views display an empty string if a date field does not exist on a content item instead of an error message.
- LINQ fix: from now on it is possible to use the OfType method on Content.All without calling any other filter method (e.g. Where or Any).
- From now on a site content cannot be saved with an invalid URL.
- Context bound portlets correctly display the display name of the bound context content instead of the global requested content.
- A field import error does not block permission import.
- Document viewer
- When creating a print preview, images are loaded in a correct order, even if the images are freshly generated.
- Preview generator overwrites existing preview images instead of throwing an error.
- Preview image generation will terminate (and skip subsequent images) if 404 or 500 status error comes with the response.
- Aspose Word API gives only an estimation for property values through the BuiltInDocumentProperties API. We use document.PageCount directly to get the correct page count of a document.
- Task management
- If an error occurs during event log write, task agents will not crash.
- Date picker
- The DatePicker Field Control handles special date formats and time zones correctly. The control also registers the script for the neutral language (e.g. ), if the specific one (e.g. 'de-DE') does not exist.
- Date and time values are presented, converted and saved correctly in date mode. A hidden time text box contains the necessary time value, because converting to and from UTC happens on the client side.
- The notification configuration parsed the 'Group by user' configuration value incorrectly.
- Notification module is able to handle deleted users.
- Set notification is possible in case of a non-admin user.
- Content Repository database creator script uses a template for db name so a database with a custom name can be created using the source install package.
- The Sense/Net filestream class contained an unnecessary type cast that caused an argument out of range exception in case of large file streams.
- Direct copy from stream in SQL provider saves a correct number of bytes to the database.
- Concurrent content list creation and modification does not cause "Schema is out of date" error. We retry the operation in the background instead.
- The parent id constraint is switched ON on the Nodes table to prevent the creation of orphaned rows. A new index was also added to this column.
- Fulltext search fix in Parametric search Portlet
- Error handling and logging has been improved on background threads.
- Memory and speedup
- A possible memory leak was eliminated by adding a using block for stream handling during text extraction.
- We have rewritten the Windows IFilter loader mechanism to avoid COM errors in case of text extractors.
- Index populator loads index documents in smaller blocks instead of working with one long command.
- If a setting file was not yet loaded into the settings tree cache, we add it manually to the parent chain that is used for building the field metadata from JSON. This will refresh the partially loaded field list of settings files.
- Content fields are reloaded when developers try to access a dynamic field coming from JSON that is not yet cached on the content.
- Import operation avoids scanning the whole database for empty index documents.
- Date and time conversion is performed using the neutral culture in case of password salt and audit log generation to avoid format differences.
- Office Save as dialog has been updated to let users navigate the content repository structure.
- Workflows are not aborted if the 'Abort on related content changed' flag is not set and the workflow waits for the related content to be changed.
- OData request stream URL decoding is removed. This lets you pass parameters in the request body that contain special characters.
- CSV export/import
- CSV export/import works correctly in case the last field value is empty.
- Import from CSV can handle Reference fields by path or by id too.
- SurveyItem EvaluatedBy and EvaluatedAt values are set during evaluation.
- It is possible to delete a string resource file without getting a cache dependency exception.
- Choice field texts may contain &, >, < characters.
- A field's default value does not overwrite the value if the field is bound to another property. This also makes aspect field default values work correctly.
- During system startup Lucene index writer commits changes frequently to handle many unprocessed indexing activities.
- Default MsmqIndexDocumentSizeLimit is decreased to 200,000 bytes to avoid MSMQ message size errors.
- The unnecessary 'Cannot update a deleted Node' event was removed.
- Checking backurl works correctly when the url contains accents or spaces.
- Site relative path computing works correctly if a site name has another site's name as a prefix. This error produced incorrect action urls previously.
- For developers:
- Node.GetStoredValue returns the correct stored values even if the property is changed in memory.
- Key duplication is eliminated in the dynamic data dictionary of NodeData when text properties are preloaded into a cached (shared) instance.
- When we throw NodeIsOutOfDateException, we clear the L2Cache immediately.
- TreeCache behaves correctly if an invalid or unknown path is passed to its methods.
- Node's and Content's InTree methods are merged into a single method that works correctly, taking the path separator into account.
- LongText field behaves correctly when the value is exactly 4000 characters long.
- SQL fixes: Delete physical stored procedure is more robust and a couple of new indexes were added to speedup database operations.
- OData: in case of an unknown action exception the faulty action itself is being logged too.
- SnAdmin copies all files from bin folders instead of filtering the list by the ".dll;.exe;.pdb;.config" extensions.
- When rebuilding the index, we use NodeQuery.QueryNodesByPath instead of NodeEnumerator to avoid too long SQL connections.
- Updating a User does not trigger membership regeneration if the user was not renamed.
- For the Task Management component to work, you need to open the task management website url to the internet, because the task monitor UI connects to the task management web application directly through SignalR.
3rd party plugins
For the list of 3rd party plugins used in this release, please visit the following article:
Differences between Community and Enterprise editions
For the list of the differences between Community and Enterprise editions in this release, please visit the following article: