This was a very lengthy and focused release with special attention given to a single new feature (well, 2 related features that amount to a single feature): Exporting and Importing.

Both exports and imports may be found under the site menu and are designed to be flexible in order to accomodate a variety of needs. Given the advanced range of possibilities using these tools, they are only intended to be used by advanced and expert users. Even then, I am sure that we will need additional tutorial and how-to articles for them in the future so I will not try to cover all of aspects of these tools in this summary, but here is a short description of each:

Exports

  • May expire or be persistent
  • May be re-run at a later date to update an existing export file
  • May include 1 or more object types - up to virtually all objects that make up the site
  • For each object type in an export, you may either export all objects on the site, a specific selection of objects, or all objects that match the given filter criteria
  • When exporting to later be re-imported back into the same site, allow exported objects to keep their identifiers (GUIDs). When exporting to be imported into other sites or utilized by other systems, remove all GUIDs from the export and instead replace with object names.
  • Exports may be filtered to only include published objects, unpublished objects, trashed objects, untrashed objects, or all objects.
  • When exporting images and documents, exports may include copies of the actual image or document files - which will result in a zip file containing both the exported data file and all of the image or document files in a sub-directory.
  • Exports may include other object required for the exported objects (eg: if you want to export a series of articles with all related tags, authors, and folders)
  • Exports may include all related pages for exported entities (eg: if you want to export all of your blog posts along with their pages)
  • Exports may include all related custom fields for a given entity or page.

Imports

  • There is a short guided tutorial on creating and running imports
  • Import definitions may be auto-generated and then edited in order to save time trying to figure out and enter all of the correct mappings, which would take a long time without this tool.
  • When importing, particularly from a site with multiple domains, the import may map each domain in the import to a domain on the site being imported to, utilizing the site's default domain if no other domain is specified.
  • All auto-generated mappings may be replaced or appended to with custom mappings (eg: Instead of "SummaryHTML" for Blog Posts you may want to import "Summary" or "Description")
  • You may map multiple (or zero) properties in the import file to a single object property. The first mapped property for the object in the import file will be used. If no matching property is found, you may specify a default value to use instead.
  • If the import finds a duplicate of the object you are importing (typically by name unless your import includes GUIDs), you may instruct the import to either replace the existing item, rename the new item, or ignore the new item and skip importing it.
  • Imports may auto-publish objects - configurable per object type (eg: auto-publish tags, authors, and folders but not articles, blog posts, or pages). Note that any trashed items updated by the import will automatically be un-trashed.
  • Optionally add one or more extra tags, authors, or folders to each imported object - configurable per object type.
  • Configure whether the import should create new tags, authors, and folders present on the imported objects but which do not exist on the site.
  • Optionally trash old objects that are not included in the import file. May be useful for synchronizing objects from another source with objects in the CMS.
  • Optionally import custom fields based on properties in the import file. Note that if an object is updated via the import, no custom fields already present on the object will be removed. They will only be created or updated.
  • Optionally create pages for imported objects that do not already have pages - configurable per object type. Eg: Import blog posts from another source and create pages for them to be viewed on the site.
  • Imports create a report of every object that is created, updated, trashed, or deleted, as well as every object that cannot be imported for any reason. The report may be viewed when the import is complete.

Known Issues and limitations

  • Currently only the json format is supported.
  • Forms and Form Submissions cannot currently be exported or imported.
  • If an import results in an error, no notification emails are sent
  • There is a styling and usability issue with exports - with all items selected for export it is difficult to change any but the last object type to export based on selection or by filter criteria
  • In exports, the advanced options are relatively unintuitive and do not currently include help-text to explain what they do and how to use them
  • The import definition dialog is particularly large and not very user-friendly
  • There are a few properties that cannot utilize custom mappings in imports - namely properties for menu items, template custom fields, and datastore field properties. Additionally custom fields have to include both a valid "FieldID" and a valid "Type" properties in order to be imported correctly.
  • You can either import items as "Unpublished" or "Published", but "Same as Export Status" does not work (it has the same affect as "Unpublished")
  • There is currently no automated way to "Undo" an import once it has been started. That functionality is in the roadmap for future development but at the moment if you make a mistake while importing you will have to manually undo any unwanted affects.
  • There is currently no way to view all of your import definitions other than while creating a new import, and even then there is no way to delete or otherwise manage old import definitions.
  • The import dialog has a few quirks with regards to how it interacts with other dialogs - if you find yourself looking at multiple import dialogs then the easiest workaround right now is to refresh the page after creating your import.
  • Exports and imports are not currently processed automatically. In order to actually run exports and imports after starting them, go to https://rest-api.marketpath.com/ManualPorterOps.aspx and click on the appropriate button.