Portfolio to XML Export


I’ll start with some background. Please see Art & Architecture - About this site. Feel free to browse the site also to see the ‘Advanced Find’ options and metadata details when you select an item. You’ll note from the about page that this site is for the Courtauld Institute of Art and was developed with several different partners and systems. Despite what that site says for who those partners are, things are about to change!

Firstly, they use Museum Plus from Zetcom to manage their Collections information internally. Data from Museum Plus is being fed into Custom fields in a Portfolio Catalog using a ‘connector’ that Zetcom has developed to feed data into Portfolio through our API. Portfolio therefore has replaced the Artesia Teams product that the Courtauld Art Institute were using for their DAM and is working well for them. Portfolio therefore contains data relating to both the digital assets the collections in it, and that data is what should power that above site.

The A&A website, powered by software from Systems Simulation Ltd, uses an XML Importer to import XML files containing image and object cataloguing data into the CMS Production Database. It runs by default every 5 minutes on the CMS Server monitoring for XML files appearing in a known directory. It then imports the data, generates logs and archives each XML file away. So whilst previously the data is coming from two sources, the Zetcom plug-in means all the required data for the site is in Portfolio. So what we are looking to do is have Portfolio create the XML file that we can place in the known folder for the A&A site XML Importer to process.


We’ve been provided a Document Type Definition for how the current ‘Teams2XML’ converter formats the XML output from that system as follows:


And here’s a sample record from the XML file that they get from the Teams export and send to the XML Importer. Assuming they want everything to continue working the same, this is the kind of format we’d need Portfolio data exported to:

<?xml version="1.0" encoding="UTF-8"?>


I think this could easily be accomplished using the API.

It would just be a matter of the following.
[li]Search for assets.[/li]
[li]Extract Metadata from each asset.[/li]
[li]Use extracted metadata to fill in form.[/li]
[li]Save Form.[/li][/ul]

I guess the big question would be how you interact with it. You could place all the items you wish to interact with into a specific gallery. The API script would search for all items in the gallery, export the XML files, then remove the items from the gallery. You could also have the script search for specific keywords in the assets or a custom field.

If they are using the Windows client, they could code a command line tool in C#, then launch it from the Scripts menu in the Desktop client.



Thanks Matt. I’ll talk with them a little more at Courtauld on Monday and also visiting SSL that do the XML Importer as well. I know from the install that they have one Mac, one PC and the server’s on Windows. So I’m sure they can be flexible to use whatever mechanism we think is best (or easiest!).


Hi Matt,

They have both Mac and Windows desktop client available, but primarily using the Windows client with the Zetcom plug-in for Museum plus. I’m sure they’d be happy to interact whichever way we can propose. But doing it manually via a gallery and initiated script would fit I’m sure.

One new thing they’re asking about is that MuseumPlus allows for hierarchical data, and Portfolio doesn’t. One idea they have is to put all the linked data into a single line (with semi-colon separators) but that may not work due to our field limit of 249 characters.

The other thought Zetcom had was to preface field data with a number that you match across multiple separate fields. For example:
Participant_surname Participant_firstname Participant_role Participant_gender
1:van Gogh 1:Vincent 1:painter 1:male
2:Gauguin 2:Paul 2:Depicted person 2:male

Is it possible for us to extract all that data but reconstitute each related set in the XML output to remove the numbers and have the hierarchy?