55 votes

Umbraco Courier

Umbraco Courier 3 redefines the Umbraco deployment process giving you the power to deploy your website changes using only a right click.

Courier 3 compares and transfers your content, document types, templates, media, media types, macros, CSS, images, and scripts, without you having to lift more than one finger.

Right-click is all your need

Courier lets you deploy content directly from the context menu. All you need to do is right click the content you want to transfer and select "Transfer to Staging". Courier will validate all dependencies and package everything that is needed to make the transfer.

Detects all dependencies and resources

Without any configuration needed, Courier will automatically discover any dependencies associated

with your content such as document types, templates, data types, media, media types, macros and the associated files and transfers them without you needing to think about it. It even knows about any variations of the images you use and makes sure that the correct sizes and thumbnails are transferred.

Comprehensive API

The full version of Courier comes with an API that enables a developer to create their own custom data resolvers to handle any content that is not standard to Umbraco.   The deployment possibilities are endless.


To Install on Umbraco 7 (7.0, 7.1, 7.2, 7.3+) Recommended

Either install directly from the Umbraco repository, or install the Courier.v*.zip as a local package under developer / packages in the umbraco backoffice.

To Install on earlier Umbraco versions

Use the most recent version from the Archives section.  Note that new installations of Courier for v4/v6 are not supported.

To Upgrade

Download the hotfix file corresponding to your Umbraco version (Courier.v*.hotfix.zip) and make sure to unblock, then XCOPY all files to the corresponding location in your Umbraco instance - overwriting the older files. 

Upgrading from Courier v2 to v3 follows the same process. Courier v3 is completely backwards compatible with v2 so the upgrade will be nice and easy.
Note: for v3.0.0 and higher you might need to add some assembly bindings to your web.config following our update to a newer version of NHibernate.

Release notes

Changes in 3.1.9

  • Adding support for cmsMedia table in CMS 7.8+ (fixes https://github.com/umbraco/Umbraco.Courier.Issues/issues/14).
  • Fixing issue preventing transfer due to a null reference on a node ID.

Changes in 3.1.8

  • COU-650 — Courier gives a 404 when attempting to transfer a file being to too large to be handled through the webservices
  • Inserted null check on CmsPropertyTypeGroup when removing a property from a tab.
  • Macros are resolved using unique IDs if available.
  • Using NHibernate session instead of Core services to prevent database timeout.
  • Fixing SQL errors when trying to update member type guids
  • Better error handling for missing content type.

Changes in 3.1.7

  • COU-627 — Gives timeout error when transferring content.
  • COU-636 — Update Courier to deal with cmsMedia table and new media lookups in 7.8.
  • COU-655 — Files are not committed to git (Cloud).

Changes in 3.1.6

  • COU-628 — Getting media paths query results in SQL timeout when there is lots of data

Changes in 3.1.5

  • COU-563 — Cannot install Member Type via Revision
  • COU-625 — Disabling meta providers in the rebuild method
  • COU-622 — UrlPicker fails to get data when a picked item no longer exist
  • COU-626 — 3.1.4 Won't sync Umbraco.DropDown datatype within a grid editor
  • COU-623 — UI bug causing restore to happen from baseline
  • COU-620 — Processing relations will result in an SqlCeException: A duplicate value cannot be inserted into a unique index.
  • COU-375 — Changing a property alias does not get deployed.
  • COU-511 Courier UserType only admins have the right to deploy

Changes in 3.1.4

  • COU-375 — Changing a property alias does not get deployed.
  • COU-588 — Relations are not handled
  • COU-597 — DeserializeObject of invalid JSON in Grid JSON
  • COU-600 — The CourierWebserviceRepositoryProvider allocates a ton of RepositoryWebservice objects
  • COU-601 — The creation of multiple CourierWebserviceRepositoryProvider is not possible with one ExecutionContext
  • COU-602 — Right clicking on a document type folder causes an error so the context menu cannot be shown
  • COU-603 — Many implementations of ItemTaskProvider.GetItemIdentifier use old and slow APIs
  • COU-607 — Cloud: Macro properties all get the same GUID
  • COU-610 — addApplication method is no longer available
  • COU-593 — Update Courier.Contrib to support Nested Content in Core
  • COU-604 — Links in dashboard are not https
  • COU-608 — Update Courier to pre-fetch all media path + Id entries instead of running the SQL query each time
  • COU-591 Update Courier to deal with new Blueprints
  • COU-612 When transfering a revision, the courier files will show up empty which means the revision doesn't transfer correctly and it will not restore correctly
  • COU-611 When editing a revision you will get a YSOD if you try to add new items
  • COU-609 When an error occurs in the revision installation only a blank screen is shown - no error message at all

Changes in 3.1.3

Changes in 3.1.2

Changes in 3.1.1

  • COU-525 Exception: The underlying connection was closed

Changes in 3.1.0

  • COU-545 Courier 3 showing all items have changed even though they haven't
  • COU-542 Updates Courier to support 7.6 changes
  • COU-547 Courier doesn't refresh Relation Type caches when they are extracted
  • COU-551 When sorting on the source, then deploying the item and it's children, the children properties will be empty on the destination
  • COU-104 User Auth fails with LegacyEncoding = false in u6.2+
  • COU-531 Blank description can show up as difference

Changes in 3.0.8

Changes in 3.0.7

Changes in 3.0.6

  • COU-519 In some rare cases Courier seems to create cmsDocument entries that have duplicate newest/published flags

Changes in 3.0.5

  • COU-482 Better errors on OutOfMemory exception on transferring large files
  • COU-518 Following redirects not working anymore
  • COU-517 Log which path is too long when there's a PathTooLongException

Changes in 3.0.4

  • COU-497 Datatypes are restored with an incorrect path
  • COU-499 Unscheduled  Courier throws exceptions without the CacheHandler dll
  • COU-315 Courier token based authentication

Changes in 3.0.3

  • COU-480 When using Load balancing, Courier does not send the instructions to refresh media
  • COU-489 Allow a parent content type to have an empty tab for older Umbraco versions
  • COU-473 Courier v3 blanks out member property data in some occasions
  • COU-486 Restore dialog hangs - Umbraco Cloud
  • COU-474 Some projects have duplicate Courier files - Umbraco Cloud
  • COU-490 deploy markers not changing from deploy-progress - Umbraco Cloud
  • COU-491 Battle of the Transactions

For more info, dig into the list of issues fixed for v3.0.3.

Changes in 3.0.2

  • COU-460 Courier doesn't follow redirects making calls to webservice fail
  • COU-458 Courier fails while restoring with a duplicate key exception - Umbraco Cloud
  • COU-461 Error if mapGraph is true and ~/App_Data/courier/revision doesn't exist
  • COU-464 Very high CPU usage when resolving media items from RTE body content
  • COU-463 Request timeouts may occur when processing large batches (i.e. PackageBatch)
  • COU-359 Syncing document type with empty tab via revision does not delete target empty tab
  • COU-451 Pre-values aren't updated on restore - Umbraco Cloud
  • COU-465 On Umbraco Cloud when extracting non-schema types (i.e. content and media) Courier will still extract all of the schema items which is unecessary - Umbraco Cloud
  • COU-448 Allowed Doctypes are not stored in courier files when installing a package - Umbraco Cloud
  • COU-468 When performing a content restore there is no filter applied to the graph to exclude all schema types - so they will also get processed - Umbraco Cloud
  • COU-478 Add support for custom user creation rules in back office for Cloud Team Members - Umbraco Cloud
  • COU-452 Restore dialog never closes - Umbraco Cloud

For more info, dig into the list of issues fixed for v3.0.2.

Changes in 3.0.1

  • COU-440 Courier CommitItem.aspx/GetTask 500 Error

Changes in 3.0.0

  • COU-363 Fix performance with NHibernate AutoFlush type
  • COU-406 Memory leak with resource transfers
  • COU-441 Media and Content pickers should not output integer/guid Ids that they cannot find
  • COU-364 Make Restore work by bulk packaging and downloading - Umbraco Cloud
  • COU-437 Circular dependency causing problems during restore in Courier v3 - Umbraco Cloud
  • COU-423 Tag data does not hash correctly/consistently
  • COU-365 Better handling of errors in the UI - both in back office and in the restore (nonodes) screen - Umbraco Cloud
  • COU-378 On local restore of a site we need to clean up the default Umbraco data (content types) to ensure they are not in conflict with the courier data - Umbraco Cloud
  • COU-368 Macro property sort order and editor alias is not persisted/updated/transferred
  • COU-425 Courier does not transfer property data by their Unique IDs (GUID) and instead transfers based on alias
  • COU-418 No document versions are created when transferring content unless it's brand new on the destination
  • COU-370 MemberGroup name is not updated
  • COU-374 When packaging a media item, the TransferContentTypesByUniqueIds config flag is ignored for media type dependencies
  • COU-387 Media Types dependencies are not packaged up with their GUIDs when TransferContentTypesByUniqueIds is true
  • COU-372 Antlr3 DLL Overwritten on Courier Package Install
  • COU-148 Use TypeFinder in Umbraco.Core instead of duplicating it
  • COU-382 Re-configure all NH models and mappings
  • COU-383 Global execution context timeout needs to be refreshed when there is ExecutionContext activity
  • COU-385 Fixes SOAP web service to return real entities instead of Base64 encoded serialized entities and save lots or memory/overhead
  • COU-408 Hashing is not hashing what it's supposed to be doing
  • COU-417 Fix hashing - large files, timestamps, userids, performance
  • COU-381 Default hashing of all entities should be in a smaller SHA1 hash
  • COU-432 Allowed doc type hashing should ignore sort order
  • COU-369 MemberGroup serializes, hashes and uses unnecessary values like User, Level and Sort Order
  • COU-433 Hashing for doc types and property types should ignore null whitespace values for Description + Validation fields
  • COU-362 Update NHibernate
  • COU-392 Fix GET requests on Deploy Controller that should be POST - Umbraco Cloud
  • COU-390 The DeployController does not set the Session Id correctly and will result in improper session handling and session issues - Umbraco Cloud
  • COU-391 Deploy dashboards will send multiple endpoint requests and open multiple sessions at once since the logic is flawed that based on polling events - Umbraco Cloud
  • COU-428 The 'Deploy' button on the 'Save and Publish' drop-up button doesn't launch the dialog correctly - Umbraco Cloud
  • COU-400 Retry button on dashboard doesn't work when there are data mismatches - Umbraco Cloud
  • COU-449 Blocking changes details aren't shown - Umbraco Cloud
  • COU-455 Check how there might be an Object Reference error in the ThrottledUiRunnerTask.Run - Umbraco Cloud
  • COU-447 Rename "Umbraco as a Service" to "Umbraco Cloud" in dialogs - Umbraco Cloud
  • COU-389 calling Umbraco.Courier.RepositoryProviders.Local.CloseSession doesn't set the _sessionOpen flag

For more info, dig into the list of issues fixed for v3.0.0.

Changes in 2.52.15

  • COU-428 The 'Deploy' button on the 'Save and Publish' drop-up button doesn't launch the dialog correctly
  • COU-422 When using Dependencies.ConvertIdentifier on a destination that doesn't have the entity an Exception is thrown
  • COU-419 RoutesCache is not refreshed when deploying
  • COU-401 When comparing pre-values they need to be sorted
  • COU-431 Courier Rebuild doesn't generate .courier files for datatypes located in subfolders
  • COU-402 Do not include empty properties in the hash
  • COU-403 File exist checks missing when clearing a revision
  • COU-404 When Access Rules in db cannot deploy a new document with a rule attached
  • COU-399 Data type pre-values do not get transfered correctly because the comparison in DataTypeItem.Persist item compares on Value not Alias
  • COU-412 Media Type Compositions are not resolved/extracted
  • COU-411 Add new environment, leaves a deploy-progress marker hanging - Umbraco Cloud
  • COU-366 Authorization has been denied for this request - Umbraco Cloud
  • COU-413 Empty Image Editor in Grid prevents content deployment - Umbraco Cloud

Changes in 2.52.14

  • Performance update for data integrity check
  • Updates text and links for Deployment dashboard (Umbraco Cloud)
  • COU-394 Local deploy broken when creating a revision
  • COU-388 Update Courier to work with Umbraco 7.5 301 redirect data
  • COU-375 Changing a property alias does not get deployed.

Changes in 2.52.13

  • Deployment dashboard updates (Umbraco Cloud)

Changes in 2.52.12

  • Deployment dashboard updates (Umbraco Cloud)

Changes in 2.52.11

  • Fixes a problem on Umbraco Cloud where the first run would not succeed

Changes in 2.52.10

  • COU-349 RTE images do not get added as dependencies
  • COU-358 DropdownList with comma in the prevalues will not transfer
  • Deployment dashboard updates (Umbraco Cloud)

Changes in 2.52.9

  • COU-354 Ignoring the access.config courier file if it isn't used anyways
  • COU-340 Expose environment through Courier
  • Deployment dashboard updates (Umbraco Cloud)

Changes in 2.52.8

  • New deployment dashboard (Umbraco Cloud)
  • Fixes an issue where duplicate media nodes might have been created

Changes in 2.52.7

  • COU-341 Data loss when deploying changes to Member Types

Changes in 2.52.6

  • Fixed a small javascript bug (Umbraco Cloud)

Changes in 2.52.5

  • COU-327 Fixes XPath on MNTP are not been transferred (Umbraco Cloud)
  • COU-330 Get deploy overview UI headers from provider instead of it being hardcoded in the deploy files (Umbraco Cloud)
  • COU-324 Fixes Ids in macros not being resolved
  • COU-331 Ensure providers can be added to allowed providers (Umbraco Cloud)
  • COU-304 Fixes remaining issues with Compare UI (Umbraco Cloud)
  • COU-310 and COU-323 Fixes transfer of Public Access settings (Umbraco Cloud)
  • COU-321 DataTypes using string PreValues like dropdownlists doesn't transfer correctly
  • COU-319 Allowed DocType can be null

Changes in 2.52.4:

  • Fixes to the Courier UI dashboard
  • Fixed a bug causing memory issues on sites with large media libraries
  • Fixed a bug when packaging protected content with multiple member groups
  • Fixed a bug when renaming tabs on document types
  • Fixed a bug causing duplicate insert errors on persisting items
  • Added detailed compare messages for failed deployments
  • Changes to ease the development of external grid resolvers
  • Changes for flexibility on environments (Umbraco Cloud)
  • Improvements to failed restore process (Umbraco Cloud)  


Changes in 2.52.3:  

  • Adds functionality for upgrading (only affects Umbraco Cloud)


Changes in 2.52.1 and 2.52.2:

  • Fixes oversights in 2.52.0 that affected Umbraco Cloud


Changes in 2.52.0:

  • This release is compatible with 7.4 (also with all older versions, but specifically supports new 7.4 features)
  • Fixes an ObjectDisposedException


Changes in 2.51.5:  

  • Improved handling of items in the Grid (grid control settings and row/cell settings now get transferred and media items in the Grid are now transferred correctly)
  • Deleting documents, media and document types no longer gives a "Failed to retrieve data" error
  • Fixed transferring prevalues with the multi node tree picker datatype
  • Items that were seemingly deployed but only visible after recycling the app pool now will be shown without having to recycle the app pool


Changes in 2.51.4:

  • Fixed errors when inserting some document/media/member types, the error was "A duplicate value cannot be inserted into a unique index"
  • Fixed: Settings on Row and Cells in GridLayout were not transferred
  • Fixed problems with transferring updates to content that is created from nested/inherited document types - read the details about this here


Changes in 2.51.3:

  • Fixed problems with transferring member types and media types
  • Fixed media items not being transferred when they were included in the Grid
  • From now on Courier will verify that both source and target use the same version of Courier
  • Fixed issues where sometimes cells in the Grid didn't transfer items with an id
  • Fixed a problem where hostnames sometimes would make a transfer fail
  • Fixed a problem with the TypeFinder erroring on types in the App_Code folder


Changes in 2.51.2:

  • Courier has been updated to work with the updated API and database in Umbraco 7.3. It retains backwards compatibility with previous versions of Umbraco.
  • Bugs related to content packaging, transfer and restore tasks have been resolved.
  • Error handling has been improved to ensure more useful errors are displayed if something is not working.
  • Event bindings have been updated to work with the new events in 7.3+.
  • The whole packaging and comparison process of a deployment has been optimized to improve performance.



Archived files

Source code

Package owner

Umbraco HQ

Umbraco HQ

Umbraco has 7882 karma points

Package Compatibility

This package is compatible with the following versions as reported by community members who have downloaded this package:
Untested or doesn't work on Umbraco Cloud
Version 8.18.x (untested)

You must login before you can report on package compatibility.

Previously reported to work on versions: 7.12.x, 7.11.x, 7.10.x, 7.6.x, 7.5.x, 7.4.x, 7.3.x, 7.2.x

Package Information

  • Package owner: Umbraco HQ
  • Created: 27/05/2011
  • Current version 3.1.9
  • .NET version 4.5
  • License Umbraco purchasing terms
  • Downloads on Our: 102K

External resources