<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.archivematica.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mdemeo</id>
	<title>Archivematica - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archivematica.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mdemeo"/>
	<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/Special:Contributions/Mdemeo"/>
	<updated>2026-04-30T03:54:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Getting_started&amp;diff=10856</id>
		<title>Getting started</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Getting_started&amp;diff=10856"/>
		<updated>2015-11-20T22:43:15Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Storage Service */ Update test instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Getting Started&lt;br /&gt;
&lt;br /&gt;
This wiki page describes getting started with Archivematica as a developer. For user and administrative manuals, please see http://www.archivematica.org.&lt;br /&gt;
&lt;br /&gt;
== Vital Stats ==&lt;br /&gt;
&lt;br /&gt;
* Language: Python (primarily)&lt;br /&gt;
* License: [https://en.wikipedia.org/wiki/Affero_General_Public_License AGPL]&lt;br /&gt;
* VCS: git&lt;br /&gt;
* Major libraries: [https://www.djangoproject.com/ Django], [http://gearman.org/ gearman] ([https://pythonhosted.org/gearman/ Python API])&lt;br /&gt;
* [[Contribute_code|Contribution guidelines]]&lt;br /&gt;
** [[Contribute_code#Code_Style_Guide_For_Archivematica|Coding style]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Archivematica consists of several projects working together.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/artefactual/archivematica Archivematica]: Main repository containing the user-facing dashboard, task manager MCPServer and clients scripts for the MCPClient&lt;br /&gt;
* [https://github.com/artefactual/archivematica-storage-service Storage Service]: Responsible for moving files to Archivematica for processing, and from Archivematica into storage&lt;br /&gt;
* [https://github.com/artefactual/archivematica-fpr-admin Format Policy Registry]: Submodule shared between Archivematica and the Format Policy Registry (FPR) server that displays and updates FPR rules and commands&lt;br /&gt;
&lt;br /&gt;
There are also several smaller repositories that support Archivematica in various ways.  In general, you will not need these to develop on Archivematica.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/artefactual/archivematica-devtools Development tools]: Scripts to help with development. E.g. restarting services, workflow analysis&lt;br /&gt;
* [https://github.com/artefactual/archivematica-fpr-tools FPR tools]: All the tools, commands and rules used to populate the FPR database.  Changes to the FPR should be submitted here.&lt;br /&gt;
* [https://github.com/artefactual/archivematica-docs Archivematica Documentation]: Documentation found at https://www.archivematica.org/en/docs/  Note that storage service documentation is found in the storage service repository.&lt;br /&gt;
* [https://github.com/artefactual/automation-tools Automation Tools]: Scripts used to automate processing material through Archivematica&lt;br /&gt;
* [https://github.com/artefactual/deploy-pub Deployment]: Ansible scripts for deploying and configuring Archivematica&lt;br /&gt;
* [https://github.com/artefactual-labs/ansible-archivematica Deployment-Archivematica]: Ansible playbook for Archivematica package install.&lt;br /&gt;
* [https://github.com/artefactual-labs/ansible-role-archivematica-src Deployment-Archivematica-dev]: Ansible playbook for Archivematica github install.&lt;br /&gt;
* [https://github.com/artefactual/fixity Fixity checker]: Commandline tool that assists in checking fixity for AIPs stored in Archivematica Storage Service instances.&lt;br /&gt;
* [https://github.com/artefactual/archivematica-sampledata Sample data]: Data to test and show off Archivematica's processing&lt;br /&gt;
* [https://github.com/artefactual/archivematica-history History]: Contains the pre-git history of Archivematica. Useful for checking the origins of code.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
There are two main ways to run Archivematica in development.&lt;br /&gt;
&lt;br /&gt;
# Use ansible and vagrant to install Archivematica in a VM&lt;br /&gt;
# Install Archivematica on your development machine&lt;br /&gt;
# Alternate vagrant based installations exist as well&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ansible &amp;amp; Vagrant ===&lt;br /&gt;
&lt;br /&gt;
To install and run Archivematica from source on a VM:&lt;br /&gt;
# Checkout deployment repo&lt;br /&gt;
#* &amp;lt;code&amp;gt;git clone https://github.com/artefactual/deploy-pub.git&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;cd deploy-pub/playbooks/archivematica&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install VirtualBox, Vagrant, Ansible&lt;br /&gt;
#* &amp;lt;code&amp;gt;sudo apt-get install virtualbox vagrant&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Vagrant must be at least 1.5 (it can also be downloaded from [https://www.vagrantup.com/downloads.html vagrantup.com])&lt;br /&gt;
#** &amp;lt;code&amp;gt;vagrant --version&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;sudo pip install -U ansible&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download Ansible roles&lt;br /&gt;
#* &amp;lt;code&amp;gt;ansible-galaxy install -f -r requirements.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) Change the branch by modifying &amp;lt;code&amp;gt;vars-singlenode.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;amdev_version: &amp;quot;remotes/origin/branch-name&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;ssdev_version: &amp;quot;remotes/origin/branch-name&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create virtual machine and provision it&lt;br /&gt;
#* &amp;lt;code&amp;gt;vagrant up&amp;lt;/code&amp;gt; (it takes a while)&lt;br /&gt;
# Login now available via:&lt;br /&gt;
#* &amp;lt;code&amp;gt;vagrant ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Services available:&lt;br /&gt;
#* Archivematica - http://192.168.168.192&lt;br /&gt;
#* Archivematica Storage Service: http://192.168.168.192:8000 (user: test, pass: test)&lt;br /&gt;
# Provisioning (via ansible) can be re-run&lt;br /&gt;
#* &amp;lt;code&amp;gt;vagrant provision&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Or with ansible directly &amp;lt;code&amp;gt;ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory singlenode.yml -u vagrant --private-key .vagrant/machines/am-local/virtualbox/private_key [--extra-vars=archivematica_src_dir=/path/to/code]&amp;lt;/code&amp;gt; This allows you to pass ansible-specific parameters, such as &amp;lt;code&amp;gt;--start-at=&amp;quot;name of task&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Machine ===&lt;br /&gt;
&lt;br /&gt;
See [[Development_environment#Setup|development environment setup instructions]]&lt;br /&gt;
&lt;br /&gt;
=== Alternative Vagrant projects ===&lt;br /&gt;
&lt;br /&gt;
*https://github.com/emltech/eml-archivematica-vagrant&lt;br /&gt;
*https://github.com/statsbiblioteket/archivematica-vagrant&lt;br /&gt;
&lt;br /&gt;
== Tests ==&lt;br /&gt;
&lt;br /&gt;
Archivematica and the related projects have a small but growing test suite. We use [http://pytest.org/ py.test] to run our tests, which should be listed as a requirement in the development/local requirements file.&lt;br /&gt;
&lt;br /&gt;
To run the tests, go to the repository root and run &amp;lt;code&amp;gt;py.test&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See below for project-specific setup or changes to running the tests.&lt;br /&gt;
&lt;br /&gt;
=== Archivematica ===&lt;br /&gt;
&lt;br /&gt;
Before running Archivematica tests, set the following environment variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/fish&lt;br /&gt;
set -xg PYTHONPATH $PYTHONPATH:/usr/share/archivematica/dashboard/:/usr/lib/archivematica/archivematicaCommon/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
export PYTHONPATH=$PYTHONPATH:/usr/share/archivematica/dashboard/:/usr/lib/archivematica/archivematicaCommon/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Service ===&lt;br /&gt;
&lt;br /&gt;
Before running Storage Service tests, set the following environment variables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/fish&lt;br /&gt;
set -xg PYTHONPATH (pwd)/storage_service  # The project root&lt;br /&gt;
set -xg DJANGO_SETTINGS_MODULE storage_service.settings.test&lt;br /&gt;
set -xg DJANGO_SECRET_KEY 'ADDKEY'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
export PYTHONPATH=$(pwd)/storage_service  # The project root&lt;br /&gt;
export DJANGO_SETTINGS_MODULE=storage_service.settings.test&lt;br /&gt;
export DJANGO_SECRET_KEY='ADDKEY'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Release_1.3.1&amp;diff=10230</id>
		<title>Release 1.3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Release_1.3.1&amp;diff=10230"/>
		<updated>2015-03-12T17:15:18Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Add MediaInfo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[External_tools|External software tools]]&amp;gt; Release 1.3.1&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access in compliance with the ISO-OAIS functional model. In addition to the core Archivematica  which is released under AGPL v3 license, the following tools are bundled with Archivematica 1.3.1:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:10%&amp;quot;|'''Version'''&lt;br /&gt;
!style=&amp;quot;width:50%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|4.9.0&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|1.4.4&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|0.98.6&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|0.90.13&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|9.76&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|2.5.3&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/fits/ File Information Tool Set (FITS)]&lt;br /&gt;
|0.8.2&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|1.3.1-78&lt;br /&gt;
|Format Identifier for Digital Objects&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|1.6+dfsg-1&lt;br /&gt;
|Object validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://mediaarea.net/en/MediaInfo MediaInfo]&lt;br /&gt;
|0.7.52&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|BSD (2-clause), Zlib&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|2.1.2&lt;br /&gt;
|Web-based archival description and access tool &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|6.6.9.7&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|0.48.3.1&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://linux.about.com/cs/linux101/g/nfscommon.htm NFS-common]&lt;br /&gt;
|1.2.5&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://packages.ubuntu.com/lucid/python-lxml Python-lxml]&lt;br /&gt;
|2.3.2&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ The Sleuthkit]&lt;br /&gt;
|4.1.3&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|3.9.5&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|1.6.2&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ubuntu.org/ Ubuntu Linux]&lt;br /&gt;
|14.04.2&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|3.0&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|1.5.4&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|0.27&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|9.20.1&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|1.8.1&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Release_1.3.1&amp;diff=10229</id>
		<title>Release 1.3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Release_1.3.1&amp;diff=10229"/>
		<updated>2015-03-12T17:10:26Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Add additional 1.3.1 tools, fix some versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[External_tools|External software tools]]&amp;gt; Release 1.3.1&lt;br /&gt;
&lt;br /&gt;
Archivematica integrates a suite of free and open-source tools that allows users to process digital objects from ingest to access in compliance with the ISO-OAIS functional model. In addition to the core Archivematica  which is released under AGPL v3 license, the following tools are bundled with Archivematica 1.3.1:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=90%&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;background-color:#cccccc;&amp;quot;&lt;br /&gt;
!style=&amp;quot;width:20%&amp;quot;|'''Tool'''&lt;br /&gt;
!style=&amp;quot;width:10%&amp;quot;|'''Version'''&lt;br /&gt;
!style=&amp;quot;width:50%&amp;quot;|'''Description'''&lt;br /&gt;
!style=&amp;quot;width:40%&amp;quot;|'''License'''&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/LibraryOfCongress/bagit-java/ BagIt]&lt;br /&gt;
|4.9.0&lt;br /&gt;
|Standard and script to package digital objects and metadata for archival storage&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/simsong/bulk_extractor bulk_extractor]&lt;br /&gt;
|1.4.4&lt;br /&gt;
|Disk image and file contents analysis tool&lt;br /&gt;
|Public domain&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.clamav.net/ Clam AV (anti-virus)]&lt;br /&gt;
|0.98.6&lt;br /&gt;
|Anti-virus toolkit for UNIX&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.elasticsearch.org/ ElasticSearch]&lt;br /&gt;
|0.90.13&lt;br /&gt;
|Indexing and search&lt;br /&gt;
|Apache License 2.0&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool]&lt;br /&gt;
|9.76&lt;br /&gt;
|Multimedia metadata extraction&lt;br /&gt;
|GNU General Public License and Artistic License&lt;br /&gt;
|-&lt;br /&gt;
|[http://ffmpeg.org/ FFmpeg]&lt;br /&gt;
|2.5.3&lt;br /&gt;
|Converts a wide variety of audio and video formats&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://code.google.com/p/fits/ File Information Tool Set (FITS)]&lt;br /&gt;
|0.8.2&lt;br /&gt;
|File format identification and validation software integration tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/openplanets/fido fido]&lt;br /&gt;
|1.3.1-78&lt;br /&gt;
|Format Identifier for Digital Objects&lt;br /&gt;
|Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|[http://jhove.sourceforge.net/ JHOVE]&lt;br /&gt;
|1.6+dfsg-1&lt;br /&gt;
|Object validation tool&lt;br /&gt;
|GNU Lesser General Public License (LGPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.accesstomemory.org AtoM]&lt;br /&gt;
|2.1.2&lt;br /&gt;
|Web-based archival description and access tool &lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.imagemagick.org/script/index.php Imagemagick]&lt;br /&gt;
|6.6.9.7&lt;br /&gt;
|Converts a wide variety of bitmap images&lt;br /&gt;
|GPL compatible [http://www.imagemagick.org/script/license.php Imagemagick license]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.inkscape.org/ Inkscape]&lt;br /&gt;
|0.48.3.1&lt;br /&gt;
|Converts vector images to Scalable Vector Graphic (SVG) format&lt;br /&gt;
|GNU General Public License (GPL) version 2&lt;br /&gt;
|-&lt;br /&gt;
|[http://linux.about.com/cs/linux101/g/nfscommon.htm NFS-common]&lt;br /&gt;
|1.2.5&lt;br /&gt;
|Network File System Access - allows access to files on network storage devices.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://packages.ubuntu.com/lucid/python-lxml Python-lxml]&lt;br /&gt;
|2.3.2&lt;br /&gt;
|Python binding for libxml2 and libxslt&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.sleuthkit.org/ The Sleuthkit]&lt;br /&gt;
|4.1.3&lt;br /&gt;
|Disk image management and extraction toolkit&lt;br /&gt;
|Common Public License / IBM Public License&lt;br /&gt;
|-&lt;br /&gt;
|[http://md5deep.sourceforge.net/ md5deep]&lt;br /&gt;
|3.9.5&lt;br /&gt;
|Checksum generation and verification scripts&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ossp.org/pkg/lib/uuid/ UUID]&lt;br /&gt;
|1.6.2&lt;br /&gt;
|command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID).&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.ubuntu.org/ Ubuntu Linux]&lt;br /&gt;
|14.04.2&lt;br /&gt;
|Interface with computing hardware. Ubuntu Linux server edition.&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://manpages.ubuntu.com/manpages/hardy/man1/zip.1.html Zip]&lt;br /&gt;
|3.0&lt;br /&gt;
|Utility called by Bagit to create AIP package&lt;br /&gt;
|Info-Zip license: &amp;quot;Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.djangoproject.com/ Django]&lt;br /&gt;
|1.5.4&lt;br /&gt;
|Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://gearman.org/ Gearman]&lt;br /&gt;
|0.27&lt;br /&gt;
|Gearman provides a generic application framework to farm out work to other machines or processes that are better suited to do the work.&lt;br /&gt;
|BSD License&lt;br /&gt;
|-&lt;br /&gt;
|[http://p7zip.sourceforge.net/ p7zip]&lt;br /&gt;
|9.20.1&lt;br /&gt;
|7-Zip is a file archiver with a high compression ratio. (LZMA)&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|[http://unarchiver.c3.cx/commandline unar]&lt;br /&gt;
|1.8.1&lt;br /&gt;
|The Unarchiver is an archive unpacker program&lt;br /&gt;
|GNU General Public License (GPL)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_Release_Notes&amp;diff=10061</id>
		<title>Archivematica Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_Release_Notes&amp;diff=10061"/>
		<updated>2014-09-05T23:16:09Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* New and Updated Tools */ Remove libbfio/libewf - these are pure deps of sleuthkit, not used on their own&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Release Notes]] &lt;br /&gt;
==Archivematica 1.2.0==&lt;br /&gt;
&lt;br /&gt;
Released September X, 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* '''Sponsored''' (Council of Prairie and Pacific University Libraries) For COPPUL hosting functionality at Bronze level, ability to process through to Transfer backlog only&lt;br /&gt;
* '''Sponsored''' (SFU Archives) SIP Arrangement - Create one or more SIPs from one or more transfers in the Ingest tab Transfer and SIP creation - #1726, #1571, #1713, #1035, #6022&lt;br /&gt;
** does not support taking content out of a SIP once it's been moved to the SIP arrangement panel&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) Directory printer - See requirements Directory printer for recording original order&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) OCR - See requirements OCR text in DIP&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) Store DIP - See requirements Store DIP&lt;br /&gt;
* '''Sponsored''' (Yale University Libraries) Forensic disk image ingest #5037, #5356, #5900&lt;br /&gt;
* '''Sponsored''' includes identification and flagging of personal information in transfers, as well as other bulk extractor reporting functions&lt;br /&gt;
* Add ability to configure Characterization commands via FPR https://github.com/artefactual/archivematica/pull/6&lt;br /&gt;
* Add verification command micro-service (verify frame-level fixity and lossless compression) #6501&lt;br /&gt;
* Improvements to transfer start #6220Scalability: Add nailgun (improve performance of java tools like FITS)&lt;br /&gt;
* View pointer files from Archival Storage and Storage Service&lt;br /&gt;
* Improvements to file identification metadata in METS #&lt;br /&gt;
* Include TIKA #5027 and DROID in packages so FPR can be configured to use them as identification tools&lt;br /&gt;
* Include MediaInfo, Exiftool and framemd5 (maybe ffprobe) for characterization and metadata extraction instead of FITS #5034&lt;br /&gt;
* Support Dublin Core metadata in JSON (as well as csv, which was already supported) https://github.com/artefactual/archivematica/pull/14&lt;br /&gt;
* Updated FIDO with the most recent PRONOM IDs ([[http://www.nationalarchives.gov.uk/aboutapps/pronom/release-notes.xml| Version 77]]) released July 18th, 2014 &lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2.0 runs with a new version of the Storage Service, 0.4.0.&lt;br /&gt;
&lt;br /&gt;
===New and Updated Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
new&lt;br /&gt;
*bulk_extractor 1.4.4 http://digitalcorpora.org/downloads/bulk_extractor/&lt;br /&gt;
*exiftool 9.70 http://www.sno.phy.queensu.ca/~phil/exiftool/index.html&lt;br /&gt;
*MediaInfo 0.7.52 http://mediaarea.net/en/MediaInfo&lt;br /&gt;
*nailgun 0.9.1 http://www.martiansoftware.com/nailgun/&lt;br /&gt;
*sleuthkit 4.1.3 http://www.sleuthkit.org/sleuthkit/download.php&lt;br /&gt;
*unar 1.8.1 http://unarchiver.c3.cx/commandline&lt;br /&gt;
*Tesseract 3.02 https://code.google.com/p/tesseract-ocr/&lt;br /&gt;
&lt;br /&gt;
updated:&lt;br /&gt;
&lt;br /&gt;
*bagit 4.9.0 https://github.com/LibraryOfCongress/bagit-java/releases&lt;br /&gt;
*ffmpeg 2.3 https://www.ffmpeg.org/download.html#releases&lt;br /&gt;
*fido 1.3.1.77 https://github.com/openplanets/fido/tree/1.3.1-77&lt;br /&gt;
*fits 0.8.0 http://projects.iq.harvard.edu/fits/downloads&lt;br /&gt;
*ImageMagick 6.6.9-7 http://www.imagemagick.org&lt;br /&gt;
&lt;br /&gt;
==Storage Service 0.4.0==&lt;br /&gt;
&lt;br /&gt;
This release allows integration with LOCKSS storage, adds a fixity checking app to the backend, and includes several developer features as well as features required for future releases of the Archivematica dashboard.&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
*Sponsored (SFU Library) LOCKSS available as an AIP storage location using PLN Manager &amp;quot;LOCKSS-o-MATIC&amp;quot; (AIP storage / API plugin) #5425 PR15&lt;br /&gt;
*Sponsored (SFU) Ability to configure transfer backlog locations via the Storage Service #6131 PR#9 &lt;br /&gt;
*Sponsored (Harvard Business School Library) Manage DIP storage PR11&lt;br /&gt;
*Sponsored (Museum of Modern Art) Fixity checking app #6597 , 1109 PR13&lt;br /&gt;
*View pointer files from Archival Storage and SS #5716 PR5&lt;br /&gt;
&lt;br /&gt;
===Enhancements===&lt;br /&gt;
&lt;br /&gt;
*Optimizations in moving files between Locations #6248 PR4&lt;br /&gt;
*Streamlined creation of new endpoints with decorators PR14&lt;br /&gt;
*New dependency added unar (and lsar) used to add support for AIP's with multiple Extensions (e.g., aip.tar.gz) #6764 PR15&lt;br /&gt;
&lt;br /&gt;
===Bugfixes===&lt;br /&gt;
&lt;br /&gt;
*Setting Location path from the user interface #5608 PR10&lt;br /&gt;
*Allow email address to be used as username #6674 PR12&lt;br /&gt;
*Ability to change internal processing space #6819 &lt;br /&gt;
*Editing users no longer results in server error #6717&lt;br /&gt;
&lt;br /&gt;
==Storage Service 0.3.0==&lt;br /&gt;
&lt;br /&gt;
Released April 10th, 2014&lt;br /&gt;
&lt;br /&gt;
Includes backend enhancements and API-level changes only, with no direct user facing changes&lt;br /&gt;
* '''Sponsored''' (University of Alberta) [[Dataset_preservation|Dataset preservation]]&lt;br /&gt;
** '''Sponsored''' Add support for AIC's https://github.com/artefactual/archivematica-storage-service/pull/2&lt;br /&gt;
* Improved unicode support https://github.com/artefactual/archivematica-storage-service/pull/3&lt;br /&gt;
* v2 of internal REST API (the API used by the Dashboard) and update documentation &lt;br /&gt;
* Storage Service now supports updating - no longer necessary to reinstall to upgrade https://github.com/artefactual/archivematica-storage-service/pull/6&lt;br /&gt;
&lt;br /&gt;
==Archivematica 1.1==&lt;br /&gt;
&lt;br /&gt;
Released May 2, 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* '''Sponsored''' (University of Alberta) [[Dataset_preservation|Dataset preservation]]&lt;br /&gt;
** '''Sponsored''' creation and management of AICs #5802&lt;br /&gt;
** '''Sponsored''' AIP pointer file #5159 &lt;br /&gt;
** '''Sponsored''' pointer file tracks multi-AIP relationships &lt;br /&gt;
** '''Sponsored''' pointer file includes compression information and other metadata required to find and process (e.g. open) AIP&lt;br /&gt;
* '''Sponsored''' (University of Alberta) Enhancements to [[UM_manual_normalization_1.0|manual normalization workflow]]&lt;br /&gt;
** '''Sponsored''' ability to add PREMIS event detail information for manually normalized files via the dashboard #5216 [[UM_manual_normalization_1.1#Adding_PREMIS_eventDetail_for_manual_normalization|User Manual - Adding PREMIS eventDetail for manual normalization]]&lt;br /&gt;
* Backend/Not user-facing: &lt;br /&gt;
**Improved unicode support https://github.com/artefactual/archivematica/pull/17&lt;br /&gt;
**Better handling of preconfigured choices (processingMCP.xml)&lt;br /&gt;
**More choices in processing archive file formats (extra preconfigured choices)&lt;br /&gt;
**Improved handling of unit variables (passing parameters between micro-services)&lt;br /&gt;
**Update to FITS 0.8.0 (or newer if available)&lt;br /&gt;
**Update to ElasticSearch 0.90.13&lt;br /&gt;
**Security fix (avoid invoking subshell when running micro-services) https://github.com/artefactual/archivematica/pull/16&lt;br /&gt;
**File identification in mets is now from file id tool and not FITS https://github.com/artefactual/archivematica/pull/15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bug fixes and enhancements===&lt;br /&gt;
&lt;br /&gt;
*[http://bit.ly/1lPBqwV bug fixes]&lt;br /&gt;
&lt;br /&gt;
==Archivematica 1.0==&lt;br /&gt;
&lt;br /&gt;
Release for public testing: September 2013 &lt;br /&gt;
Package release: January 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* Format Policy Registry (FPR) improvements including&lt;br /&gt;
**Ability to add/change format policies in the dashboard &lt;br /&gt;
**Ability to update the local FPR from fpr.archivematica.org&lt;br /&gt;
**Upload and report performance stats to FPR &lt;br /&gt;
**For detailed information about the FPR, see [[Administrator_manual_1.0#Format_Policy_Registry_.28FPR.29|Administrator manual--FPR]]&lt;br /&gt;
*Generation of &amp;quot;fail&amp;quot; reports in the administrative tab of the dashboard&lt;br /&gt;
*Eliminate unused interface options (e.g. DSpace transfer, CONTENTdm upload, ICA-AtoM upload) via the administrative tab of the dashboard&lt;br /&gt;
*DIP upload to Archivist Toolkit [[Archivists Toolkit integration]] with a metadata entry gui in the dashboard and actionable PREMIS rights &lt;br /&gt;
*AIP pointer file&lt;br /&gt;
*[[Administrator_manual_1.0#Storage_service|Storage service]] with API&lt;br /&gt;
*Ability to request to delete an AIP via the dashboard &lt;br /&gt;
*Upgraded to [https://github.com/harvard-lts/fits FITS 0.62] &lt;br /&gt;
*Ability for multiple pipelines to write to a shared ElasticSearch index and to the same AIP store(s) (i.e. multiple dept's -&amp;gt; one institution) &lt;br /&gt;
* Further scalability testing/prototyping and improved documentation&lt;br /&gt;
&lt;br /&gt;
===Bug fixes and enhancements===&lt;br /&gt;
&lt;br /&gt;
*[https://projects.artefactual.com/versions/31 bug fixes]&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Archivematica_Release_Notes&amp;diff=10060</id>
		<title>Archivematica Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Archivematica_Release_Notes&amp;diff=10060"/>
		<updated>2014-09-05T23:08:08Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* New and Updated Tools */ Add more tools and homepages, adjust new/updated list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; [[Release Notes]] &lt;br /&gt;
==Archivematica 1.2.0==&lt;br /&gt;
&lt;br /&gt;
Released September X, 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* '''Sponsored''' (Council of Prairie and Pacific University Libraries) For COPPUL hosting functionality at Bronze level, ability to process through to Transfer backlog only&lt;br /&gt;
* '''Sponsored''' (SFU Archives) SIP Arrangement - Create one or more SIPs from one or more transfers in the Ingest tab Transfer and SIP creation - #1726, #1571, #1713, #1035, #6022&lt;br /&gt;
** does not support taking content out of a SIP once it's been moved to the SIP arrangement panel&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) Directory printer - See requirements Directory printer for recording original order&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) OCR - See requirements OCR text in DIP&lt;br /&gt;
* '''Sponsored''' (Harvard Business School Library) Store DIP - See requirements Store DIP&lt;br /&gt;
* '''Sponsored''' (Yale University Libraries) Forensic disk image ingest #5037, #5356, #5900&lt;br /&gt;
* '''Sponsored''' includes identification and flagging of personal information in transfers, as well as other bulk extractor reporting functions&lt;br /&gt;
* Add ability to configure Characterization commands via FPR https://github.com/artefactual/archivematica/pull/6&lt;br /&gt;
* Add verification command micro-service (verify frame-level fixity and lossless compression) #6501&lt;br /&gt;
* Improvements to transfer start #6220Scalability: Add nailgun (improve performance of java tools like FITS)&lt;br /&gt;
* View pointer files from Archival Storage and Storage Service&lt;br /&gt;
* Improvements to file identification metadata in METS #&lt;br /&gt;
* Include TIKA #5027 and DROID in packages so FPR can be configured to use them as identification tools&lt;br /&gt;
* Include MediaInfo, Exiftool and framemd5 (maybe ffprobe) for characterization and metadata extraction instead of FITS #5034&lt;br /&gt;
* Support Dublin Core metadata in JSON (as well as csv, which was already supported) https://github.com/artefactual/archivematica/pull/14&lt;br /&gt;
* Updated FIDO with the most recent PRONOM IDs ([[http://www.nationalarchives.gov.uk/aboutapps/pronom/release-notes.xml| Version 77]]) released July 18th, 2014 &lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2.0 runs with a new version of the Storage Service, 0.4.0.&lt;br /&gt;
&lt;br /&gt;
===New and Updated Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
new&lt;br /&gt;
*bulk_extractor 1.4.4 http://digitalcorpora.org/downloads/bulk_extractor/&lt;br /&gt;
*exiftool 9.70 http://www.sno.phy.queensu.ca/~phil/exiftool/index.html&lt;br /&gt;
*libbfio 20130507 https://code.google.com/p/libbfio/&lt;br /&gt;
*libewf 20130416 https://code.google.com/p/libewf/&lt;br /&gt;
*MediaInfo 0.7.52 http://mediaarea.net/en/MediaInfo&lt;br /&gt;
*nailgun 0.9.1 http://www.martiansoftware.com/nailgun/&lt;br /&gt;
*sleuthkit 4.1.3 http://www.sleuthkit.org/sleuthkit/download.php&lt;br /&gt;
*unar 1.8.1 http://unarchiver.c3.cx/commandline&lt;br /&gt;
*Tesseract 3.02 https://code.google.com/p/tesseract-ocr/&lt;br /&gt;
&lt;br /&gt;
updated:&lt;br /&gt;
&lt;br /&gt;
*bagit 4.9.0 https://github.com/LibraryOfCongress/bagit-java/releases&lt;br /&gt;
*ffmpeg 2.3 https://www.ffmpeg.org/download.html#releases&lt;br /&gt;
*fido 1.3.1.77 https://github.com/openplanets/fido/tree/1.3.1-77&lt;br /&gt;
*fits 0.8.0 http://projects.iq.harvard.edu/fits/downloads&lt;br /&gt;
*ImageMagick 6.6.9-7 http://www.imagemagick.org&lt;br /&gt;
&lt;br /&gt;
==Storage Service 0.4.0==&lt;br /&gt;
&lt;br /&gt;
This release allows integration with LOCKSS storage, adds a fixity checking app to the backend, and includes several developer features as well as features required for future releases of the Archivematica dashboard.&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
*Sponsored (SFU Library) LOCKSS available as an AIP storage location using PLN Manager &amp;quot;LOCKSS-o-MATIC&amp;quot; (AIP storage / API plugin) #5425 PR15&lt;br /&gt;
*Sponsored (SFU) Ability to configure transfer backlog locations via the Storage Service #6131 PR#9 &lt;br /&gt;
*Sponsored (Harvard Business School Library) Manage DIP storage PR11&lt;br /&gt;
*Sponsored (Museum of Modern Art) Fixity checking app #6597 , 1109 PR13&lt;br /&gt;
*View pointer files from Archival Storage and SS #5716 PR5&lt;br /&gt;
&lt;br /&gt;
===Enhancements===&lt;br /&gt;
&lt;br /&gt;
*Optimizations in moving files between Locations #6248 PR4&lt;br /&gt;
*Streamlined creation of new endpoints with decorators PR14&lt;br /&gt;
*New dependency added unar (and lsar) used to add support for AIP's with multiple Extensions (e.g., aip.tar.gz) #6764 PR15&lt;br /&gt;
&lt;br /&gt;
===Bugfixes===&lt;br /&gt;
&lt;br /&gt;
*Setting Location path from the user interface #5608 PR10&lt;br /&gt;
*Allow email address to be used as username #6674 PR12&lt;br /&gt;
*Ability to change internal processing space #6819 &lt;br /&gt;
*Editing users no longer results in server error #6717&lt;br /&gt;
&lt;br /&gt;
==Storage Service 0.3.0==&lt;br /&gt;
&lt;br /&gt;
Released April 10th, 2014&lt;br /&gt;
&lt;br /&gt;
Includes backend enhancements and API-level changes only, with no direct user facing changes&lt;br /&gt;
* '''Sponsored''' (University of Alberta) [[Dataset_preservation|Dataset preservation]]&lt;br /&gt;
** '''Sponsored''' Add support for AIC's https://github.com/artefactual/archivematica-storage-service/pull/2&lt;br /&gt;
* Improved unicode support https://github.com/artefactual/archivematica-storage-service/pull/3&lt;br /&gt;
* v2 of internal REST API (the API used by the Dashboard) and update documentation &lt;br /&gt;
* Storage Service now supports updating - no longer necessary to reinstall to upgrade https://github.com/artefactual/archivematica-storage-service/pull/6&lt;br /&gt;
&lt;br /&gt;
==Archivematica 1.1==&lt;br /&gt;
&lt;br /&gt;
Released May 2, 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* '''Sponsored''' (University of Alberta) [[Dataset_preservation|Dataset preservation]]&lt;br /&gt;
** '''Sponsored''' creation and management of AICs #5802&lt;br /&gt;
** '''Sponsored''' AIP pointer file #5159 &lt;br /&gt;
** '''Sponsored''' pointer file tracks multi-AIP relationships &lt;br /&gt;
** '''Sponsored''' pointer file includes compression information and other metadata required to find and process (e.g. open) AIP&lt;br /&gt;
* '''Sponsored''' (University of Alberta) Enhancements to [[UM_manual_normalization_1.0|manual normalization workflow]]&lt;br /&gt;
** '''Sponsored''' ability to add PREMIS event detail information for manually normalized files via the dashboard #5216 [[UM_manual_normalization_1.1#Adding_PREMIS_eventDetail_for_manual_normalization|User Manual - Adding PREMIS eventDetail for manual normalization]]&lt;br /&gt;
* Backend/Not user-facing: &lt;br /&gt;
**Improved unicode support https://github.com/artefactual/archivematica/pull/17&lt;br /&gt;
**Better handling of preconfigured choices (processingMCP.xml)&lt;br /&gt;
**More choices in processing archive file formats (extra preconfigured choices)&lt;br /&gt;
**Improved handling of unit variables (passing parameters between micro-services)&lt;br /&gt;
**Update to FITS 0.8.0 (or newer if available)&lt;br /&gt;
**Update to ElasticSearch 0.90.13&lt;br /&gt;
**Security fix (avoid invoking subshell when running micro-services) https://github.com/artefactual/archivematica/pull/16&lt;br /&gt;
**File identification in mets is now from file id tool and not FITS https://github.com/artefactual/archivematica/pull/15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bug fixes and enhancements===&lt;br /&gt;
&lt;br /&gt;
*[http://bit.ly/1lPBqwV bug fixes]&lt;br /&gt;
&lt;br /&gt;
==Archivematica 1.0==&lt;br /&gt;
&lt;br /&gt;
Release for public testing: September 2013 &lt;br /&gt;
Package release: January 2014&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* Format Policy Registry (FPR) improvements including&lt;br /&gt;
**Ability to add/change format policies in the dashboard &lt;br /&gt;
**Ability to update the local FPR from fpr.archivematica.org&lt;br /&gt;
**Upload and report performance stats to FPR &lt;br /&gt;
**For detailed information about the FPR, see [[Administrator_manual_1.0#Format_Policy_Registry_.28FPR.29|Administrator manual--FPR]]&lt;br /&gt;
*Generation of &amp;quot;fail&amp;quot; reports in the administrative tab of the dashboard&lt;br /&gt;
*Eliminate unused interface options (e.g. DSpace transfer, CONTENTdm upload, ICA-AtoM upload) via the administrative tab of the dashboard&lt;br /&gt;
*DIP upload to Archivist Toolkit [[Archivists Toolkit integration]] with a metadata entry gui in the dashboard and actionable PREMIS rights &lt;br /&gt;
*AIP pointer file&lt;br /&gt;
*[[Administrator_manual_1.0#Storage_service|Storage service]] with API&lt;br /&gt;
*Ability to request to delete an AIP via the dashboard &lt;br /&gt;
*Upgraded to [https://github.com/harvard-lts/fits FITS 0.62] &lt;br /&gt;
*Ability for multiple pipelines to write to a shared ElasticSearch index and to the same AIP store(s) (i.e. multiple dept's -&amp;gt; one institution) &lt;br /&gt;
* Further scalability testing/prototyping and improved documentation&lt;br /&gt;
&lt;br /&gt;
===Bug fixes and enhancements===&lt;br /&gt;
&lt;br /&gt;
*[https://projects.artefactual.com/versions/31 bug fixes]&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Development_environment&amp;diff=10038</id>
		<title>Development environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Development_environment&amp;diff=10038"/>
		<updated>2014-08-15T19:53:52Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Update */ Document new dev-helper question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; Development Environment&lt;br /&gt;
&lt;br /&gt;
This page explains how you can configure and use a standard Linux system as an Archivematica development environment.&lt;br /&gt;
The Archivematica development environment is available for developers that want the ability to customize or enhance their own Archivematica installation and/or [[contribute code]] back to the Archivematica project.&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
*Install ubuntu 12.04&lt;br /&gt;
*create a non-root user (with sudo privileges)&lt;br /&gt;
*log in as your new non-root user&lt;br /&gt;
*install archivematica storage service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install python-software-properties&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/release&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/externals&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
sudo rm /etc/nginx/sites-enabled/default&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/storage /etc/nginx/sites-enabled/storage&lt;br /&gt;
sudo ln -s /etc/uwsgi/apps-available/storage.ini /etc/uwsgi/apps-enabled/storage.ini&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*install git&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install git&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Use git to checkout Archivematica code&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/artefactual/archivematica.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Run the install and helper scripts. &lt;br /&gt;
** &amp;lt;pre&amp;gt;cd archivematica&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;lt;pre&amp;gt;./dev-installer&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Answer Y to all prompts.&lt;br /&gt;
** Restart the machine. (this is to enable the upstart services).&lt;br /&gt;
** &amp;lt;pre&amp;gt;cd archivematica&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;lt;pre&amp;gt;./dev-helper&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Answer Y to all prompts.&lt;br /&gt;
** Complete AtoM setup&lt;br /&gt;
*** The database should already be created.&lt;br /&gt;
*** http://localhost/atom&lt;br /&gt;
*** https://www.qubit-toolkit.org/wiki/Installation#Open_Qubit.2C_ICA-AtoM.2C_or_DCB_in_your_web_browser&lt;br /&gt;
** Open the [dashboard http://localhost]&lt;br /&gt;
&lt;br /&gt;
=Configuring and Using Archivematica=&lt;br /&gt;
These manuals contain information about the use and configuration of Archivematica:&lt;br /&gt;
&amp;lt;br/&amp;gt;https://www.archivematica.org/wiki/Administrator_manual&lt;br /&gt;
&amp;lt;br/&amp;gt;https://www.archivematica.org/wiki/User_Manual&lt;br /&gt;
&lt;br /&gt;
=Update=&lt;br /&gt;
&lt;br /&gt;
To pull down the latest code commits from the repository, and reset your dev install, navigate to the directory where Archivematica has been cloned:&lt;br /&gt;
*Change Directory to the archivematica git directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;cd ~/archivematica/&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Check to see if you have any local changes that need to be stashed&lt;br /&gt;
&amp;lt;pre&amp;gt;git diff&amp;lt;/pre&amp;gt;&lt;br /&gt;
*If there are local changes please stash or commit them. (Or you won't be able to update).&lt;br /&gt;
&amp;lt;pre&amp;gt;git stash&amp;lt;/pre&amp;gt;&lt;br /&gt;
Update...&lt;br /&gt;
*&amp;lt;pre&amp;gt;./dev-helper&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to git pull?&amp;quot; (y/N) y&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to update/install package requirements?&amp;quot; (y/N) &amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to recreate the databases?&amp;quot; (y/N) y&amp;lt;/pre&amp;gt;&lt;br /&gt;
**Note: this command will remove any processing sips/transfers.&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to erase the ElasticSearch indexes?&amp;quot; (y/N) &amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to clear transfer backlog and AIP storage?&amp;quot; (y/N) &amp;lt;/pre&amp;gt;&lt;br /&gt;
**Note: this command will delete all stored AIPs and stored backlogged transfers.&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to restart archivematica services?&amp;quot; (y/N) y&amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to update sample data in /home/user/archivematica-sampledata?&amp;quot; (y/N) &amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to export sample data from /home/user/archivematica-sampledata?&amp;quot; (y/N) &amp;lt;/pre&amp;gt;&lt;br /&gt;
*&amp;lt;pre&amp;gt;&amp;quot;Would you like to update AtoM and restart its atom-worker service?&amp;quot; (y/N) y&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you stashed changes, re-apply them with&lt;br /&gt;
&amp;lt;pre&amp;gt;git stash pop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
* If it stalls during update &amp;quot;Would you like to update/install package requirements?&amp;quot; (y/N)&lt;br /&gt;
** Stop the script with CTRL + C&lt;br /&gt;
** Try installing the item it failed on on the command line. Ie.&lt;br /&gt;
** &amp;lt;pre&amp;gt;sudo apt-get install postfix&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Restart the dev-helper &amp;quot;Would you like to update/install package requirements?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you get this error error starting service:&lt;br /&gt;
** &amp;lt;pre&amp;gt;sudo start archivematica-mcp-server&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;lt;pre&amp;gt;start: Unknown job: archivematica-mcp-server&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Then reboot the machine.&lt;br /&gt;
&lt;br /&gt;
*If a SIP processing fails, it will move it to the 'failed' directory which is located:&lt;br /&gt;
**&amp;lt;pre&amp;gt;/var/archivematica/sharedDirectory/watchedDirectories/failed&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*if ArchivematicaServer freezes &lt;br /&gt;
**&amp;lt;pre&amp;gt;sudo restart archivematica-mcp-server&amp;lt;/pre&amp;gt;&lt;br /&gt;
**&amp;lt;pre&amp;gt;sudo restart archivematica-mcp-client&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*if ArchivematicaClient freezes (in terminal kill command)&lt;br /&gt;
**&amp;lt;pre&amp;gt;sudo restart archivematica-mcp-client&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Updates to the Dashboard may require an Apache webserver restart:&lt;br /&gt;
**&amp;lt;pre&amp;gt;sudo /etc/init.d/apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*If you find a problem running the Dashboard and you want to get a detailed error log to report us, please switch it to debug mode following [http://archivematica.org/wiki/index.php?title=Dashboard#Debug_mode these instructions].&lt;br /&gt;
&lt;br /&gt;
*MCP is currently logging to the /tmp/directory&lt;br /&gt;
** /tmp/archivematicaMCPClient-HOST.log&lt;br /&gt;
** /tmp/archivematicaMCPServer-HOST-DATE.log&lt;br /&gt;
** /tmp/archivematicaMCPServerPID&lt;br /&gt;
&lt;br /&gt;
[[Category:Development documentation]]&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Install-1.2-packages&amp;diff=10036</id>
		<title>Install-1.2-packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Install-1.2-packages&amp;diff=10036"/>
		<updated>2014-08-08T18:50:41Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Provide instructions to start/restart FITS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Installation]] &amp;gt;&amp;gt; [[Install-1.2|Install 1.2]] &amp;gt;&amp;gt; Install 1.2 packages&lt;br /&gt;
&lt;br /&gt;
== Updating from Archivematica 1.1 ==&lt;br /&gt;
&lt;br /&gt;
If you have installed Archivematica 1.1.0 from packages, it is possible to update your installation without re-installing.  The steps are:&lt;br /&gt;
&lt;br /&gt;
=== Update Archivematica Storage Service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update Archivematica ===&lt;br /&gt;
During the update process you will be asked about updating configuration files.  Choose to accept the maintainers versions.  You will also be asked about updating the database, say 'ok' to each of those steps.  If you have set a password for the root mysql database user, enter it when prompted.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install archivematica-mcp-server&lt;br /&gt;
sudo apt-get install archivematica-mcp-client&lt;br /&gt;
sudo apt-get install archivematica-dashboard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ElasticSearch ===&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2.0 has been tested most extensively against version 0.90.13 of ElasticSearch.  It is possible to use an older version (e.g. 0.20.6, which is what was distributed with Archivematica 1.0.0).  Do not attempt to use ElasticSearch 1.0 or greater.&lt;br /&gt;
&lt;br /&gt;
*Add the ElasticSearch apt repository next (from http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then add this line to the bottom of /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://packages.elasticsearch.org/elasticsearch/0.90/debian stable main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now refresh your list of available packages and upgrade elasticsearch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install elasticsearch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Services === &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo /etc/init.d/elasticsearch restart&lt;br /&gt;
sudo /etc/init.d/gearman-job-server restart&lt;br /&gt;
sudo restart archivematica-mcp-server&lt;br /&gt;
sudo restart archivematica-mcp-client&lt;br /&gt;
sudo restart fits&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing Archivematica 1.2 packages (new install) ==&lt;br /&gt;
&lt;br /&gt;
Archivematica packages are hosted on Launchpad, in an Ubuntu PPA (Personal Package Archive).  In order to install software onto your Ubuntu 12.04.4 system from a PPA:&lt;br /&gt;
&lt;br /&gt;
*Add the archivematica/release PPA to your list of trusted repositories (if add-apt-repositories is not available you must install python-software-properties first):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install python-software-properties&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/release&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/externals&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add the ElasticSearch apt repository next (from http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then add this line to the bottom of /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://packages.elasticsearch.org/elasticsearch/0.90/debian stable main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Update your system to the most recent 12.04 release&lt;br /&gt;
&lt;br /&gt;
*This step will also fetch a list of the software from the PPAs you just added to your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install all packages (each of these packages can be installed seperately, if necessary). Say YES or OK to any prompts you get after entering the following into terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
sudo apt-get install elasticsearch&lt;br /&gt;
sudo apt-get install archivematica-mcp-server &lt;br /&gt;
sudo apt-get install archivematica-mcp-client &lt;br /&gt;
sudo apt-get install archivematica-dashboard &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configure the dashboard and storage service&lt;br /&gt;
note:these steps are safe to do on a desktop, or a machine dedicated to Archivematica.  They may not be advisable on an existing web server.  Consult with your web server administrator if you are unsure. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -q https://raw.github.com/artefactual/archivematica/stable/1.1.x/src/vm-includes/share/apache.default -O /etc/apache2/sites-available/default&lt;br /&gt;
sudo rm /etc/nginx/sites-enabled/default&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/storage /etc/nginx/sites-enabled/storage&lt;br /&gt;
sudo ln -s /etc/uwsgi/apps-available/storage.ini /etc/uwsgi/apps-enabled/storage.ini&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo freshclam&lt;br /&gt;
sudo /etc/init.d/clamav-daemon start&lt;br /&gt;
sudo /etc/init.d/elasticsearch restart&lt;br /&gt;
sudo /etc/init.d/gearman-job-server restart&lt;br /&gt;
sudo start archivematica-mcp-server&lt;br /&gt;
sudo start archivematica-mcp-client&lt;br /&gt;
sudo start fits&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Test the [[Administrator_manual_1.2#Storage_service|storage service]]&lt;br /&gt;
The storage service runs as a separate web application from the Archivematica dashboard. Go to the following link in a web browser:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8000  (or use the IP address of the machine you have been installing on).  &amp;lt;p&amp;gt;&lt;br /&gt;
log in as user: test password: test&lt;br /&gt;
&lt;br /&gt;
* Create a new administrative user in the Storage service&lt;br /&gt;
&lt;br /&gt;
The storage service has its own set of users.  In the User menu in the Administrative tab of the storage service, add at least one administrative user, and delete or modify the test user.&lt;br /&gt;
&lt;br /&gt;
* Test the dashboard&lt;br /&gt;
you can login to the archivematica dashboard and finish the installation in a web browser:&lt;br /&gt;
&lt;br /&gt;
http://localhost&lt;br /&gt;
&lt;br /&gt;
* Register your installation for full Format Policy Registry interoperability.&lt;br /&gt;
&lt;br /&gt;
[[Register_1.2|Register Archivematica 1.2]]&lt;br /&gt;
&lt;br /&gt;
== Using ICA-AtoM with Archivematica ==&lt;br /&gt;
&lt;br /&gt;
If you are interested in using the [https://www.ica-atom.org/ ICA-Atom] web-based content management and access system you can use the package within our PPA. Archivematica can upload digital objects to their associated descriptions in ICA-AtoM.&lt;br /&gt;
&lt;br /&gt;
It is installed by running the following commands in your Terminal (answer yes to all prompts, it may require your mysql adminitration password if one was entered above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo aptitude install ica-atom&lt;br /&gt;
sudo aptitude install upload-qubit&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo cp /var/www/atom/init/atom-worker.conf /etc/init/atom-worker.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can finish your installation by visiting http://localhost/ica-atom/. For more information about ICA-AtoM installation see [https://www.ica-atom.org/doc/Installation ICA-AtoM 1.3.1 installation].&lt;br /&gt;
&lt;br /&gt;
Occasionally when loading the ica-atom web installer for the first time an error appears, refreshing your web browser usually resolves this.   We intend to fix this in future version of the AtoM package.&lt;br /&gt;
&lt;br /&gt;
After the AtoM installation, configure it to use the Sword plugin (in the Plugins menu) as well as the job scheduler (in Settings), then start the atom-worker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo start atom-worker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using AtoM 2.x with Archivematica ==&lt;br /&gt;
&lt;br /&gt;
Archivematica has been successfully tested with Atom 2.x.  The best known configuration is Archivematica 1.0.1 or greater with Atom 2.0.2-rc1 or greater.&lt;br /&gt;
Installation instructions for Atom 2 are available on the accesstomemory.org website https://www.accesstomemory.org/en/docs/2.0/ .  When following those instructions, it is best to download Atom from the git repository (rather than use one of the supplied tarballs). When checking out Atom, use tag v2.0.2-rc1.&lt;br /&gt;
&lt;br /&gt;
Once you have a working Atom installation, you can configure dip upload between Archivematica and Atom.  The basic steps are:&lt;br /&gt;
&lt;br /&gt;
* update atom dip upload configuration in the Archivematica dashboard&lt;br /&gt;
* confirm upload-qubit package is installed on the Archivematica server&lt;br /&gt;
* confirm atom-worker is configured on the Atom server&lt;br /&gt;
* enable the Sword Plugin in the Atom plugins page&lt;br /&gt;
* enable job scheduling in the Atom settings page&lt;br /&gt;
* confirm gearman is installed on the Atom server&lt;br /&gt;
* configure ssh keys to allow rsync to work for the archivematica user, from the Archivematica server to the Atom server&lt;br /&gt;
* start gearman on the Atom server&lt;br /&gt;
* start the atom worker on the Atom server&lt;br /&gt;
&lt;br /&gt;
These steps are detailed on the [[Upload_DIP|DIP Upload page]].&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Install-1.2-packages&amp;diff=10035</id>
		<title>Install-1.2-packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Install-1.2-packages&amp;diff=10035"/>
		<updated>2014-08-08T18:33:34Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Create page by copying 1.1 contents and tweaking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Installation]] &amp;gt;&amp;gt; [[Install-1.2|Install 1.2]] &amp;gt;&amp;gt; Install 1.2 packages&lt;br /&gt;
&lt;br /&gt;
== Updating from Archivematica 1.1 ==&lt;br /&gt;
&lt;br /&gt;
If you have installed Archivematica 1.1.0 from packages, it is possible to update your installation without re-installing.  The steps are:&lt;br /&gt;
&lt;br /&gt;
=== Update Archivematica Storage Service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update Archivematica ===&lt;br /&gt;
During the update process you will be asked about updating configuration files.  Choose to accept the maintainers versions.  You will also be asked about updating the database, say 'ok' to each of those steps.  If you have set a password for the root mysql database user, enter it when prompted.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install archivematica-mcp-server&lt;br /&gt;
sudo apt-get install archivematica-mcp-client&lt;br /&gt;
sudo apt-get install archivematica-dashboard&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update ElasticSearch ===&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2.0 has been tested most extensively against version 0.90.13 of ElasticSearch.  It is possible to use an older version (e.g. 0.20.6, which is what was distributed with Archivematica 1.0.0).  Do not attempt to use ElasticSearch 1.0 or greater.&lt;br /&gt;
&lt;br /&gt;
*Add the ElasticSearch apt repository next (from http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then add this line to the bottom of /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://packages.elasticsearch.org/elasticsearch/0.90/debian stable main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now refresh your list of available packages and upgrade elasticsearch&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install elasticsearch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restart Services === &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo /etc/init.d/elasticsearch restart&lt;br /&gt;
sudo /etc/init.d/gearman-job-server restart&lt;br /&gt;
sudo restart archivematica-mcp-server&lt;br /&gt;
sudo restart archivematica-mcp-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing Archivematica 1.2 packages (new install) ==&lt;br /&gt;
&lt;br /&gt;
Archivematica packages are hosted on Launchpad, in an Ubuntu PPA (Personal Package Archive).  In order to install software onto your Ubuntu 12.04.4 system from a PPA:&lt;br /&gt;
&lt;br /&gt;
*Add the archivematica/release PPA to your list of trusted repositories (if add-apt-repositories is not available you must install python-software-properties first):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install python-software-properties&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/release&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/externals&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add the ElasticSearch apt repository next (from http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then add this line to the bottom of /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://packages.elasticsearch.org/elasticsearch/0.90/debian stable main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Update your system to the most recent 12.04 release&lt;br /&gt;
&lt;br /&gt;
*This step will also fetch a list of the software from the PPAs you just added to your system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install all packages (each of these packages can be installed seperately, if necessary). Say YES or OK to any prompts you get after entering the following into terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
sudo apt-get install elasticsearch&lt;br /&gt;
sudo apt-get install archivematica-mcp-server &lt;br /&gt;
sudo apt-get install archivematica-mcp-client &lt;br /&gt;
sudo apt-get install archivematica-dashboard &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configure the dashboard and storage service&lt;br /&gt;
note:these steps are safe to do on a desktop, or a machine dedicated to Archivematica.  They may not be advisable on an existing web server.  Consult with your web server administrator if you are unsure. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo wget -q https://raw.github.com/artefactual/archivematica/stable/1.1.x/src/vm-includes/share/apache.default -O /etc/apache2/sites-available/default&lt;br /&gt;
sudo rm /etc/nginx/sites-enabled/default&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/storage /etc/nginx/sites-enabled/storage&lt;br /&gt;
sudo ln -s /etc/uwsgi/apps-available/storage.ini /etc/uwsgi/apps-enabled/storage.ini&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo freshclam&lt;br /&gt;
sudo /etc/init.d/clamav-daemon start&lt;br /&gt;
sudo /etc/init.d/elasticsearch restart&lt;br /&gt;
sudo /etc/init.d/gearman-job-server restart&lt;br /&gt;
sudo start archivematica-mcp-server&lt;br /&gt;
sudo start archivematica-mcp-client&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Test the [[Administrator_manual_1.2#Storage_service|storage service]]&lt;br /&gt;
The storage service runs as a separate web application from the Archivematica dashboard. Go to the following link in a web browser:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8000  (or use the IP address of the machine you have been installing on).  &amp;lt;p&amp;gt;&lt;br /&gt;
log in as user: test password: test&lt;br /&gt;
&lt;br /&gt;
* Create a new administrative user in the Storage service&lt;br /&gt;
&lt;br /&gt;
The storage service has its own set of users.  In the User menu in the Administrative tab of the storage service, add at least one administrative user, and delete or modify the test user.&lt;br /&gt;
&lt;br /&gt;
* Test the dashboard&lt;br /&gt;
you can login to the archivematica dashboard and finish the installation in a web browser:&lt;br /&gt;
&lt;br /&gt;
http://localhost&lt;br /&gt;
&lt;br /&gt;
* Register your installation for full Format Policy Registry interoperability.&lt;br /&gt;
&lt;br /&gt;
[[Register_1.2|Register Archivematica 1.2]]&lt;br /&gt;
&lt;br /&gt;
== Using ICA-AtoM with Archivematica ==&lt;br /&gt;
&lt;br /&gt;
If you are interested in using the [https://www.ica-atom.org/ ICA-Atom] web-based content management and access system you can use the package within our PPA. Archivematica can upload digital objects to their associated descriptions in ICA-AtoM.&lt;br /&gt;
&lt;br /&gt;
It is installed by running the following commands in your Terminal (answer yes to all prompts, it may require your mysql adminitration password if one was entered above):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo aptitude install ica-atom&lt;br /&gt;
sudo aptitude install upload-qubit&lt;br /&gt;
sudo /etc/init.d/apache2 restart&lt;br /&gt;
sudo cp /var/www/atom/init/atom-worker.conf /etc/init/atom-worker.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can finish your installation by visiting http://localhost/ica-atom/. For more information about ICA-AtoM installation see [https://www.ica-atom.org/doc/Installation ICA-AtoM 1.3.1 installation].&lt;br /&gt;
&lt;br /&gt;
Occasionally when loading the ica-atom web installer for the first time an error appears, refreshing your web browser usually resolves this.   We intend to fix this in future version of the AtoM package.&lt;br /&gt;
&lt;br /&gt;
After the AtoM installation, configure it to use the Sword plugin (in the Plugins menu) as well as the job scheduler (in Settings), then start the atom-worker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo start atom-worker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using AtoM 2.x with Archivematica ==&lt;br /&gt;
&lt;br /&gt;
Archivematica has been successfully tested with Atom 2.x.  The best known configuration is Archivematica 1.0.1 or greater with Atom 2.0.2-rc1 or greater.&lt;br /&gt;
Installation instructions for Atom 2 are available on the accesstomemory.org website https://www.accesstomemory.org/en/docs/2.0/ .  When following those instructions, it is best to download Atom from the git repository (rather than use one of the supplied tarballs). When checking out Atom, use tag v2.0.2-rc1.&lt;br /&gt;
&lt;br /&gt;
Once you have a working Atom installation, you can configure dip upload between Archivematica and Atom.  The basic steps are:&lt;br /&gt;
&lt;br /&gt;
* update atom dip upload configuration in the Archivematica dashboard&lt;br /&gt;
* confirm upload-qubit package is installed on the Archivematica server&lt;br /&gt;
* confirm atom-worker is configured on the Atom server&lt;br /&gt;
* enable the Sword Plugin in the Atom plugins page&lt;br /&gt;
* enable job scheduling in the Atom settings page&lt;br /&gt;
* confirm gearman is installed on the Atom server&lt;br /&gt;
* configure ssh keys to allow rsync to work for the archivematica user, from the Archivematica server to the Atom server&lt;br /&gt;
* start gearman on the Atom server&lt;br /&gt;
* start the atom worker on the Atom server&lt;br /&gt;
&lt;br /&gt;
These steps are detailed on the [[Upload_DIP|DIP Upload page]].&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10029</id>
		<title>Administrator manual 1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10029"/>
		<updated>2014-08-07T23:10:56Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Storage service */ Document package/space/location structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; Administrator manual 1.2&lt;br /&gt;
&lt;br /&gt;
This manual covers administrator-specific instructions for Archivematica. It will also provide help for using forms in the Administration tab of the Archivematica dashboard and the administrator capabilities in the Format Policy Registry (FPR), which you will find in the Preservation planning tab of the dashboard.&lt;br /&gt;
&lt;br /&gt;
For end-user instructions, please see the [[User_manual_1.2|user manual]].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
* [[Installation|Instructions for installing the latest build of Archivematica on your server]]&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
Currently, Archivematica does not support upgrading from one version to the next. A re-install is required. After re-installing, you can restore Archivematica's knowledge of your AIPs, by [[#Rebuilding_the_AIP_index|rebuilding the AIP index]] and, if you have transfers stored in the backlog, [[#Rebuilding_the_transfer_index|rebuilding the transfer index]].&lt;br /&gt;
&lt;br /&gt;
= Storage service =&lt;br /&gt;
The Archivematica Storage Service allows the configuration of storage spaces associated with multiple Archivematica pipelines.  It allows a storage administrator to configure what storage is available to each Archivematica installation, both locally and remote.&lt;br /&gt;
&lt;br /&gt;
[[File:SS1-0.png|700px|center|thumb|Home page of Storage Service]]&lt;br /&gt;
&lt;br /&gt;
== Storage Service entities and organization ==&lt;br /&gt;
&lt;br /&gt;
=== Packages ===&lt;br /&gt;
&lt;br /&gt;
The Storage Service is oriented storing ''packages''. A &amp;quot;package&amp;quot; is a bundle of one or more files transferred from an external service; for example, a package may be an AIP, a backlogged transfer, or a DIP. Each package is stored in a [[#location|location]].&lt;br /&gt;
&lt;br /&gt;
=== Spaces ===&lt;br /&gt;
&lt;br /&gt;
A ''space'' models a specific storage device. That device might be a locally-accessible disk, a network share, or a remote system accessible via a protocol like FEDORA, SWIFT, or LOCKSS. The space provides the Storage Service with configuration to read and/or write data stored within itself.&lt;br /&gt;
&lt;br /&gt;
Packages are not stored directly inside a space; instead, packages are stored within [[#locations|locations]], which are organized subdivisions of a space.&lt;br /&gt;
&lt;br /&gt;
=== Locations ===&lt;br /&gt;
&lt;br /&gt;
A location is a subdivision of a [[#space|space]]. Each location is assigned a specific ''purpose'', such as AIP storage or transfer backlog, in order to provide an organized way to structure content within a space.&lt;br /&gt;
&lt;br /&gt;
== Archivematica Configuration ==&lt;br /&gt;
&lt;br /&gt;
When installing Archivematica, options to configure it with the Storage Service will be presented.&lt;br /&gt;
&lt;br /&gt;
[[File:Install3.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
If you have installed the Storage Service at a different URL, you may change that here. &lt;br /&gt;
&lt;br /&gt;
The top button 'Use default transfer source &amp;amp; AIP storage locations' will attempt to automatically configure default Locations for Archivematica, register a new Pipeline, and generate an error if the Storage Service is not available.  Use this option if you want the Storage Service to automatically set up the configured default values.&lt;br /&gt;
&lt;br /&gt;
The bottom button 'Register this pipeline &amp;amp;amp; set up transfer source and AIP storage locations' will only attempt to register a new Pipeline with the Storage Service, and will not error if not Storage Service can be found.  It will also open a link to the provided Storage Service URL, so that Locations can be configured manually.  Use this option if the default values not desired, or the Storage Service is not running yet.  Locations will have to be configured manually before any Transfers can be processed, or AIPs stored.&lt;br /&gt;
&lt;br /&gt;
If the Storage Service is running, the URL to it should be entered, and Archivematica will attempt to register its dashboard UUID as a new Pipeline.  Otherwise, the dashboard UUID is displayed, and a Pipeline for this Archivematica instance can be manually created and configured. The dashboard UUID is also available in Archivematica under Administration -&amp;gt; General. &lt;br /&gt;
&lt;br /&gt;
=== Change the port in the web server configuration === &lt;br /&gt;
&lt;br /&gt;
The storage services uses nginx by default, so you can edit /etc/nginx/sites-enabled/storage and change the line that says&lt;br /&gt;
&lt;br /&gt;
listen 8000;&lt;br /&gt;
&lt;br /&gt;
change 8000 to whatever port you prefer to use. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that in a default installation of Archivematica 1.0, the dashboard is running in Apache on port 80.  So it is not possible to make nginx run on port 80 on the same machine.  If you install the storage service on its own server, you can set it to use port 80. &lt;br /&gt;
&lt;br /&gt;
Make sure to adjust the dashboard UUID in the Archivematica dashboard under Administration -&amp;gt; General.&lt;br /&gt;
&lt;br /&gt;
== Spaces ==&lt;br /&gt;
[[File:Spaces.png|600px|center]]&lt;br /&gt;
A storage Space contains all the information necessary to connect to the physical storage.  It is where protocol-specific information, like an NFS export path and hostname, or the username of a system accessible only via SSH, is stored.  All locations must be contained in a space.&lt;br /&gt;
&lt;br /&gt;
A space is usually the immediate parent of the Location folders.  For example, if you had transfer source locations at &amp;lt;tt&amp;gt;/home/artefactual/archivematica-sampledata-2013-10-10-09-17-20&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/home/artefactual/maildir_transfers&amp;lt;/tt&amp;gt;, the Space's path would be &amp;lt;tt&amp;gt;/home/artefactual/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently supported protocols are local filesystem, NFS, and pipeline local filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Local Filesystem spaces handle storage that is available locally on the machine running the storage service.  Typically this is the hard drive, SSD or raid array attached to the machine, but it could also encompass remote storage that has already been mounted.  For remote storage that has been locally mounted, we recommend using a more specific Space if one is available.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the Space on the local filesystem&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
=== NFS ===&lt;br /&gt;
&lt;br /&gt;
NFS spaces are for NFS exports mounted on the Storage Service server, and the Archivematica pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path the space is mounted at on the filesystem local to the storage service&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the remote computer exporting the NFS mount.&lt;br /&gt;
* ''Remote path'': Export path on the NFS server&lt;br /&gt;
* ''Version'': nfs or nfs4 - as would be passed to the &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
* ''Manually Mounted'': Check this if it has been mounted already.  Otherwise, the Storage Service will try to mount it. ''Note: this feature is not yet available.''&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Pipeline Local Filesystems refer to the storage that is local to the Archivematica pipeline, but remote to the storage service.  For this Space to work properly, passwordless SSH must be set up between the Storage Service host and the Archivematica host.&lt;br /&gt;
&lt;br /&gt;
For example, the storage service is hosted on &amp;lt;tt&amp;gt;storage_service_host&amp;lt;/tt&amp;gt; and Archivematica is running on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt; .  The transfer sources for Archivematica are stored locally on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt;, but the storage service needs access to them.  The Space for that transfer source would be a Pipeline Local Filesystem.&lt;br /&gt;
&lt;br /&gt;
'''Note: Passwordless SSH must be set up between the Storage Service host and the computer Archivematica is running on.'''&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the space on the remote machine.&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the computer running Archivematica.  Should be SSH accessible from the Storage Service computer.&lt;br /&gt;
* ''Remote user'': Username on the remote host&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
[[File:Locations.png|600px|center]]&lt;br /&gt;
A storage Location is contained in a Space, and knows its purpose in the Archivematica system.  A Location is also where Packages are stored.  Each Location is associated with a pipeline and can only be accessed by that pipeline.&lt;br /&gt;
&lt;br /&gt;
Currently, a Location can have one of three purposes: Transfer Source, Currently Processing, or AIP Storage.  Transfer source locations display in Archivematica's Transfer tab, and any folder in a transfer source can be selected to become a Transfer.  AIP storage locations are where the completed AIPs are put for long-term storage.  During processing, Archivematica uses the currently processing location associated with that pipeline.  Only one currently processing location should be associated with a given pipeline.  If you want the same directory on disk to have multiple purposes, multiple Locations with different purposes can be created.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Purpose'': What use the Location is for&lt;br /&gt;
* ''Pipeline'': Which pipelines this location is available to.&lt;br /&gt;
* ''Relative Path'': Path to this Location, relative to the space that contains it.&lt;br /&gt;
* ''Description'': Description of the Location to be displayed to the user.&lt;br /&gt;
* ''Quota'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Enabled'': If checked, this location is accessible to pipelines associated with it.  If unchecked, it will not show up to any pipeline.&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
[[File:Pipelines.png|600px|center]]&lt;br /&gt;
A pipeline is an Archivematica instance registered with the Storage Service, including the server and all associated clients.  Each pipeline is uniquely identified by a UUID, which can be found in the dashboard under Administration -&amp;gt; General Configuration.  When installing Archivematica, it will attempt to register its UUID with the Storage Service, with a description of &amp;quot;Archivematica on &amp;lt;hostname&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''UUID'': Unique identifier of the Archivematica pipeline&lt;br /&gt;
* ''Description'': Description of the pipeline displayed to the user.  e.g. Sankofa demo site&lt;br /&gt;
* ''Enabled'': If checked, this pipeline can access locations associate with it.  If unchecked, all locations will be disabled, even if associated.&lt;br /&gt;
* ''Default Locations'': If checked, the default locations configured in Administration -&amp;gt; Configuration will be created or associated with the new pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
[[File:Packages.png|600px|center]]&lt;br /&gt;
A Package is a file that Archivematica has stored in the Storage Service, commonly an Archival Information Package (AIP).  They cannot be created or deleted through the Storage Service interface, though a deletion request can be submitted through Archivematica that must be approved or rejected by the storage service administrator. To learn more about deleting an AIP, see [[UM_archival_storage_1.2#Deleting_an_AIP|Deleting an AIP]].&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
[[File:StorageserviceAdmin1.png|600px|center]]&lt;br /&gt;
[[File:StorageserviceAdmin2.png|600px|center]]&lt;br /&gt;
The Administration section manages the users and settings for the Storage Service.&lt;br /&gt;
&lt;br /&gt;
=== Users ===&lt;br /&gt;
&lt;br /&gt;
Only registered users can long into the storage service, and the Users page is where users can be created or modified.&lt;br /&gt;
&lt;br /&gt;
The storage service has two types of users: administrative users, and regular users. In the 0.4.0 release of the storage service, the only distinction between the two types is for email notifications; administrators will be notified by email when special events occur, while regular users will not.&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
Settings control the behavior of the Storage Service.  Default Locations are the created or associated with pipelines when they are created.&lt;br /&gt;
&lt;br /&gt;
'''Pipelines are disabled upon creation?''' sets whether a newly created Pipeline can access its Locations.  If a Pipeline is disabled, it cannot access any of its locations.  By disabling newly created Pipelines, it provides some security against unwanted perusal of the files in Locations, or use by unauthorized Archivematica instances.  This can be configured individually when creating a Pipeline manually through the Storage Service website.&lt;br /&gt;
&lt;br /&gt;
'''Default Locations''' set what existing locations should be associated with a newly created Pipeline, or what new Locations should be created for each new Pipeline.  No matter what is configured here, a Currently Processing location is created for all Pipelines, since one is required.  Multiple Transfer Source or AIP Storage Locations can be configured by holding down Ctrl when selecting them.  New Locations in an existing Space can be created for Pipelines that use default locations by entering the relevant information.&lt;br /&gt;
&lt;br /&gt;
== How to Configure a Location ==&lt;br /&gt;
&lt;br /&gt;
For Spaces of the type &amp;quot;Local Filesystem,&amp;quot; Locations are basically directories (or more accurately, paths to directories). You can create Locations for Transfer Source, Currently Processing, or AIP Storage directories.&lt;br /&gt;
&lt;br /&gt;
To create and configure a new Location:&lt;br /&gt;
&lt;br /&gt;
# In the Storage Service, click on the &amp;quot;Spaces&amp;quot; tab.&lt;br /&gt;
# Under the Space that you want to add the Location to, click on the &amp;quot;Create Location here&amp;quot; link.&lt;br /&gt;
# Choose a purpose (e.g. AIP Storage) and pipeline, and enter a &amp;quot;Relative Path&amp;quot; (e.g. var/mylocation) and human-readable description. The Relative Path is relative to the Path defined in the Space you are adding the Location to, e.g. for the default Space, the Path is '/' so your Location path would be relative to that (in the example here, the complete path would end up being '/var/mylocation'). Note: if the path you are defining in your Location doesn't exist, you must create it manually and make sure it is writable by the archivematica user.&lt;br /&gt;
# Save the Location settings.&lt;br /&gt;
# The new location will now be available as an option under the appropriate options in the Dashboard, for example as a Transfer location (which must be enabled under the Dashboard &amp;quot;Administration&amp;quot; tab) or as a destination for AIP storage.&lt;br /&gt;
&lt;br /&gt;
== Store DIP ==&lt;br /&gt;
&lt;br /&gt;
= Dashboard administration tab =&lt;br /&gt;
&lt;br /&gt;
The Archivematica administration pages, under the Administration tab of the dashboard, allows you to configure application components and manage users.&lt;br /&gt;
&lt;br /&gt;
== Processing configuration ==&lt;br /&gt;
&lt;br /&gt;
When processing a SIP or transfer, you may want to automate some of the workflow choices. Choices can be preconfigured by putting a 'processingMCP.xml' file into the root directory of a SIP/transfer.&lt;br /&gt;
&lt;br /&gt;
If a SIP or transfer is submitted with a 'processingMCP.xml' file, processing decisions will be made with the included file.&lt;br /&gt;
&lt;br /&gt;
The XML file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;processingMCP&amp;gt;&lt;br /&gt;
  &amp;lt;preconfiguredChoices&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Send to quarantine? --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;755b4177-c587-41a7-8c52-015277568302&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;d4404ab1-dc7f-4e9e-b1f8-aa861e766b8e&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Display metadata reminder --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;eeb23509-57e2-4529-8857-9d62525db048&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;5727faac-88af-40e8-8c10-268644b0142d&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Remove from quarantine --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;19adb668-b19a-4fcb-8938-f49d7485eaf3&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;333643b7-122a-4019-8bef-996443f3ecc5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
      &amp;lt;delay unitCtime=&amp;quot;yes&amp;quot;&amp;gt;2419200.0&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Extract packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;dec97e3c-5598-4b99-b26e-f87a435a6b7f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;01d80b27-4ad1-4bd1-8f8d-f819f18bf685&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Delete extracted packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;f19926dd-8fb5-4c79-8ade-c83f61f55b40&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;85b1e45d-8f98-4cae-8336-72f40e12cbef&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select pre-normalize file format identification command --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;7a024896-c4f7-4808-a240-44c87c762bc5&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;3c1faec7-7e1e-4cdd-b3bd-e2f05f4baa9b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression algorithm --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01d64f58-8295-4b7b-9cab-8f1b153a504f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;9475447c-9889-430c-9477-6287a9574c5b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression level --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01c651cb-c174-4ba4-b985-1d87a44d6754&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;414da421-b83f-4648-895f-a34840e3c3f5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
  &amp;lt;/preconfiguredChoices&amp;gt;&lt;br /&gt;
&amp;lt;/processingMCP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where appliesTo is the UUID associated with the micro-service job presented in the dashboard, and goToChain is the UUID of the desired selection. The default processingMCP.xml file is located at '/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/defaultProcessingMCP.xml'.&lt;br /&gt;
&lt;br /&gt;
The processing configuration administration page of the dashboard provides you with an easy form to configure the default 'processingMCP.xml' that's added to a SIP or transfer if it doesn't already contain one. When you change the options using the web interface the necessary XML will be written behind the scenes.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:ProcessingConfig1-1.png|1000px|center|thumb|Processing configuration form in Administration tab of the dashboard]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
*For the approval (yes/no) steps, the user ticks the box on the left-hand side to make a choice. If the box is not ticked, the approval step will appear in the dashboard.&lt;br /&gt;
*For the other steps, if no actions are selected the choices appear in the dashboard&lt;br /&gt;
*You can select whether or not to send transfers to quarantine (yes/no) and decide how long you'd like them to stay there.&lt;br /&gt;
*You can select whether to extract packages as well as whether to keep and/or delete the extracted objects and/or the package itself.&lt;br /&gt;
*You can approve normalization, sending the AIP to storage, and uploading the DIP without interrupting the workflow in the dashboard.&lt;br /&gt;
*You can pre-select which format identification tool and command to run in both/either transfer and/or ingest to base your normalization upon. &lt;br /&gt;
*You can choose to send a transfer to backlog or to create a SIP every time.&lt;br /&gt;
*You can select to be reminded to add PREMIS event metadata about manual normalization should you choose to use that capability.&lt;br /&gt;
*You can select between 7z using lzma and 7zip using bzip or parallel bzip2 algorithms for AIP compression.&lt;br /&gt;
*For select compression level, the options are as follows:&lt;br /&gt;
**1 - fastest mode&lt;br /&gt;
**3 - fast compression mode&lt;br /&gt;
**5 - normal compression mode&lt;br /&gt;
**7 - maximum compression&lt;br /&gt;
**9 - ultra compression&lt;br /&gt;
*You can select one archival storage location where you will consistently send your AIPs.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
 &lt;br /&gt;
In the general configuration section, you can select interface options and set [[Administrator_manual_1.2#Storage_service|Storage Service]] options for your Archivematica client.&lt;br /&gt;
&lt;br /&gt;
[[File:Generalconfig.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
=== Interface options ===&lt;br /&gt;
&lt;br /&gt;
Here, you can hide parts of the interface that you don't need to use. In particular, you can hide CONTENTdm DIP upload link, AtoM DIP upload link and DSpace transfer type.&lt;br /&gt;
&lt;br /&gt;
=== Storage Service options ===&lt;br /&gt;
&lt;br /&gt;
This is where you'll find the complete URL for the Storage Service. See [[Administrator_manual_1.2#Storage_service|Storage Service]] for more information about this feature.&lt;br /&gt;
&lt;br /&gt;
== Failures ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 includes dashboard failure reporting. &lt;br /&gt;
[[File:FailuresAdmin.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
== Transfer source location ==&lt;br /&gt;
&lt;br /&gt;
Archivematica allows you to start transfers using the operating system's file browser or via a web interface. Source files for transfers, however, can't be uploaded using the web interface: they must exist on volumes accessible to the Archivematica MCP server and configured via the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
When starting a transfer you're required to select one or more directories of files to add to the transfer. &lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;Transfer source locations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP storage locations ==&lt;br /&gt;
&lt;br /&gt;
AIP storage directories are directories in which completed AIPs are stored. Storage directories can be specified in a manner similar to transfer source directories using the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;AIP storage locations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AtoM DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can upload DIPs directly to an [https://www.ica-atom.org/ AtoM] website so the contents can be accessed online. The AtoM DIP upload configuration page is where you specify the details of the AtoM installation you'd like the DIPs uploaded to (and, if using Rsync to transfer the DIP files, Rsync transfer details).&lt;br /&gt;
&lt;br /&gt;
The parameters that you'll most likely want to set are &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;. These parameters, respectively, specify the destination AtoM website's URL, the email address used to log in to the website, and the password used to log in to the website.&lt;br /&gt;
&lt;br /&gt;
AtoM DIP upload can also use [http://en.wikipedia.org/wiki/Rsync Rsync] as a transfer mechanism. Rsync is an open source utility for efficiently transferring files. The &amp;lt;code&amp;gt;rsync-target&amp;lt;/code&amp;gt; parameter is used to specify an Rsync-style target host/directory pairing, &amp;quot;foobar.com:~/dips/&amp;quot; for example. The &amp;lt;code&amp;gt;rsync-command&amp;lt;/code&amp;gt; parameter is used to specify rsync connection options, &amp;quot;ssh -p 22222 -l user&amp;quot; for example. If you are using the rsync option, please see AtoM server configuration below.&lt;br /&gt;
&lt;br /&gt;
To set any parameters for AtoM DIP upload change the values, preserving the existing format they're specified in, in the &amp;quot;Command arguments&amp;quot; field then click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that in AtoM, the sword plugin (Admin --&amp;gt; Plugins --&amp;gt; qtSwordPlugin) must be enabled in order for AtoM to receive uploaded DIPs. Enabling Job scheduling (Admin --&amp;gt; Settings --&amp;gt; Job scheduling) is also recommended.&lt;br /&gt;
&lt;br /&gt;
=== AtoM server configuration ===&lt;br /&gt;
&lt;br /&gt;
This server configuration step is necessary to allow Archivematica to log in to the AtoM server without passwords, and only when the user is deploying the rsync option described above in the AtoM DIP upload section. &lt;br /&gt;
&lt;br /&gt;
To enable sending DIPs from Archivematica to the AtoM server:&lt;br /&gt;
&lt;br /&gt;
Generate SSH keys for the Archivematica user. Leave the passphrase field blank.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo -i -u archivematica&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;/var/lib/archivematica/.ssh/id_rsa.pub&amp;lt;/code&amp;gt; somewhere handy, you will need it later.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to configure the AtoM server so Archivematica can send the DIPs using SSH/rsync. For that purpose, you will create a user called &amp;lt;code&amp;gt;archivematica&amp;lt;/code&amp;gt; and we are going to assign that user a restricted shell with access only to rsync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo apt-get install rssh&lt;br /&gt;
 $ sudo useradd -d /home/archivematica -m -s /usr/bin/rssh archivematica&lt;br /&gt;
 $ sudo passswd -l archivematica&lt;br /&gt;
 $ sudo vim /etc/rssh.conf // Make sure that allowrsync is uncommented!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the SSH key that we generated before:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo mkdir /home/archivematica/.ssh&lt;br /&gt;
 $ chmod 700 /home/archivematica/.ssh/&lt;br /&gt;
 $ sudo vim /home/archivematica/.ssh/authorized_keys // Paste here the contents of id_dsa.pub&lt;br /&gt;
 $ chown -R archivematica:archivematica /home/archivematica&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Archivematica, make sure that you update the &amp;lt;code&amp;gt;--rsync-target&amp;lt;/code&amp;gt; accordingly.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are the parameters that we are passing to the upload-qubit microservice.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to the Administration &amp;gt; Upload DIP page in the dashboard.&lt;br /&gt;
&lt;br /&gt;
Generic parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--url=&amp;quot;http://atom-hostname/index.php&amp;quot; \&lt;br /&gt;
--email=&amp;quot;demo@example.com&amp;quot; \&lt;br /&gt;
--password=&amp;quot;demo&amp;quot; \&lt;br /&gt;
--uuid=&amp;quot;%SIPUUID%&amp;quot; \&lt;br /&gt;
--rsync-target=&amp;quot;archivematica@atom-hostname:/tmp&amp;quot; \&lt;br /&gt;
--debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONTENTdm DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can also upload DIPs to [http://www.contentdm.org/ CONTENTdm] instances. Multiple CONTENTdm destinations may be configured.&lt;br /&gt;
&lt;br /&gt;
For each possible CONTENTdm DIP upload destination, you'll specify a brief description and configuration parameters appropriate for the destination. Paramters include &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; (full path to the CONTENTdm API, including the leading 'http://' or 'https://', for example http://example.com:81/dmwebservices/index.php), &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; (Linux user and group on the CONTENTdm server, not a CONTENTdm username). Note that only &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; is required is you are going to produce CONTENTdm Project Client packages; &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; are also required if you are going to use the &amp;quot;direct upload&amp;quot; option for uploading your DIPs into CONTENTdm.&lt;br /&gt;
&lt;br /&gt;
When changing parameters for a CONTENTdm DIP upload destination simply change the values, preserving the existing format they're specified in. To add an upload destination fill in the form at the bottom of the page with the appropriate values. When you've completed your changes click the &amp;quot;Save&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PREMIS agent ==&lt;br /&gt;
&lt;br /&gt;
The PREMIS agent name and code can be set via the administration interface.&lt;br /&gt;
[[File:Premisagent-10.png|center|900px|thumbs]]&lt;br /&gt;
&lt;br /&gt;
== Rest API ==&lt;br /&gt;
&lt;br /&gt;
In addition to automation using the processingMCP.xml file, Archivematica includes a REST API for automating transfer approval. Using this API, you can create a custom script that copies a transfer to the appropriate directory then uses the &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; command, or some other means, to let Archivematica know that the copy is complete.&lt;br /&gt;
&lt;br /&gt;
=== API keys ===&lt;br /&gt;
&lt;br /&gt;
Use of the REST API requires the use of API keys. An API key is associated with a specific user. To generate an API key for a user:&lt;br /&gt;
&lt;br /&gt;
# Browse to &amp;lt;code&amp;gt;/administration/accounts/list/&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click the &amp;quot;Edit&amp;quot; button for the user you'd like to generate an API key for&lt;br /&gt;
# Click the &amp;quot;Regenerate API key&amp;quot; checkbox&lt;br /&gt;
# Click &amp;quot;Save&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After generating an API key, you can click the &amp;quot;Edit&amp;quot; button for the user and you should see the API key.&lt;br /&gt;
&lt;br /&gt;
=== IP whitelist ===&lt;br /&gt;
&lt;br /&gt;
In addition to creating API keys, you'll need to add the IP of any computer making REST requests to the REST API whitelist. The IP whitelist can be edited in the administration interface at &amp;lt;code&amp;gt;/administration/api/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Approving a transfer ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to approve a transfer. The transfer must first be copied into the appropriate watch directory. To determine the location of the appropriate watch directory, first figure out where the shared directory is from the &amp;lt;code&amp;gt;watchDirectoryPath&amp;lt;/code&amp;gt; value of &amp;lt;code&amp;gt;/etc/archivematica/MCPServer/serverConfig.conf&amp;lt;/code&amp;gt;. Within that directory is a subdirectory &amp;lt;code&amp;gt;activeTransfers&amp;lt;/code&amp;gt;. In this subdirectory are watch directories for the various transfer types.&lt;br /&gt;
&lt;br /&gt;
When using the REST API to approve a transfer, if a transfer type isn't specified, the transfer will be deemed a standard transfer.&lt;br /&gt;
&lt;br /&gt;
'''HTTP Method:''' POST&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: directory name of the transfer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (optional): transfer type [standard|dspace|unzipped bag|zipped bag]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl --data &amp;quot;username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;amp;type=standard&amp;amp;directory=MyTransfer&amp;quot; http://127.0.0.1/api/transfer/approve&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&amp;quot;message&amp;quot;: &amp;quot;Approval successful.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Listing unapproved transfers ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to get a list of unapproved transfers. Each transfer's directory name and type is returned.&lt;br /&gt;
&lt;br /&gt;
'''Method:''' &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl &amp;quot;http://127.0.0.1/api/transfer/unapproved?username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;,&lt;br /&gt;
        &amp;quot;results&amp;quot;: [{&lt;br /&gt;
                &amp;quot;directory&amp;quot;: &amp;quot;MyTransfer&amp;quot;,&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;standard&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
The dashboard provides a simple cookie-based user authentication system using the [https://docs.djangoproject.com/en/1.4/topics/auth/ Django authentication framework]. Access to the dashboard is limited only to logged-in users and a login page will be shown when the user is not recognized. If the application can't find any user in the database, the user creation page will be shown instead, allowing the creation of an administrator account.&lt;br /&gt;
&lt;br /&gt;
Users can be also created, modified and deleted from the Administration tab. Only users who are administrators can create and edit user accounts.&lt;br /&gt;
&lt;br /&gt;
You can add a new user to the system by clicking the &amp;quot;Add new&amp;quot; button on the user administration page. By adding a user you provide a way to access Archivematica using a username/password combination. Should you need to change a user's username or password, you can do so by clicking the &amp;quot;Edit&amp;quot; button, corresponding to the user, on the administration page. Should you need to revoke a user's access, you can click the corresponding &amp;quot;Delete&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== CLI creation of administrative users ===&lt;br /&gt;
&lt;br /&gt;
If you need an additional administrator user one can be created via the command-line, issue the following commands:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py createsuperuser&lt;br /&gt;
&lt;br /&gt;
=== CLI password resetting ===&lt;br /&gt;
&lt;br /&gt;
If you've forgotten the password for your administrator user, or any other user, you can change it via the command-line:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py changepassword &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
Archivematica uses [http://en.wikipedia.org/wiki/PBKDF2 PBKDF2] as the default algorithm to store passwords. This should be sufficient for most users: it's quite secure, requiring massive amounts of computing time to break. However, other algorithms could be used as the following document explains: [https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords How Django stores passwords].&lt;br /&gt;
&lt;br /&gt;
Our plan is to extend this functionality in the future adding groups and granular permissions support.&lt;br /&gt;
&lt;br /&gt;
= Dashboard preservation planning tab =&lt;br /&gt;
&lt;br /&gt;
== Format Policy Registry (FPR) ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to the Format Policy Registry ===&lt;br /&gt;
&lt;br /&gt;
The Format Policy Registry (FPR) is a database which allows Archivematica users to define format policies for handling file formats. A format policy indicates the actions, tools and settings to apply to a file of a particular file format (e.g. conversion to preservation format, conversion to access format). Format policies will change as community standards, practices and tools evolve. Format policies are maintained by Artefactual, who provides a freely-available FPR server hosted at [http://fpr.archivematica.org fpr.archivematica.org]. This server stores structured information about normalization format policies for preservation and access. You can update your local FPR from the FPR server using the UPDATE button in the preservation planning tab of the dashboard. In addition, you can maintain local rules to add new formats or customize the behaviour of Archivematica. The Archivematica dashboard communicates with the FPR server via a REST API. &lt;br /&gt;
&lt;br /&gt;
==== First-time configuration ====&lt;br /&gt;
&lt;br /&gt;
The first time a new Archivematica installation is set up, it will attempt to connect to the FPR server as part of the initial configuration process. As a part of the setup, it will register the Archivematica install with the server and pull down the current set of format policies. In order to register the server, Archivematica will send the following information to the FPR Server, over an encrypted connection:&lt;br /&gt;
&lt;br /&gt;
#Agent Identifier (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#Agent Name (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#IP address of host&lt;br /&gt;
#UUID of Archivematica instance&lt;br /&gt;
#current time&lt;br /&gt;
&lt;br /&gt;
*The only information that will be passed back and forth between Archivematica and the FPR Server would be these format policies - what tool to run when normalizing for a given purpose (access, preservation) when a specific File Identification Tool identifies a specific File Format.  No information about the content that has been run through Archivematica, or any details about the Archivematica installation or configuration would be sent to the FPR Server. &lt;br /&gt;
&lt;br /&gt;
* Because Archivematica is an open source project, it is possible for any organization to conduct a software audit/code review before running Archivematica in a production environment in order to independently verify the information being shared with the FPR Server.  An organization could choose to run a private FPR Server, accessible only within their own network(s), to provide at least a limited version of the benefits of sharing format policies, while guaranteeing a completely self-contained preservation system. This is something that Artefactual is not intending to develop, but anyone is free to extend the software as they see fit, or to hire us or other developers to do so.&lt;br /&gt;
&lt;br /&gt;
=== Updating format policies ===&lt;br /&gt;
&lt;br /&gt;
FPR rules can be updated at any time from within the Preservation Planning tab in Archivematica. Clicking the &amp;quot;update&amp;quot; button will initiate an FPR pull which will bring in any new or altered rules since the last time an update was performed.&lt;br /&gt;
&lt;br /&gt;
=== Types of FPR entries ===&lt;br /&gt;
&lt;br /&gt;
==== Format ====&lt;br /&gt;
&lt;br /&gt;
In the FPR, a &amp;quot;format&amp;quot; is a record representing one or more related ''format versions'', which are records representing a specific file format. For example, the format record for &amp;quot;Graphics Interchange Format&amp;quot; (GIF) is comprised of format versions for both GIF 1987a and 1989a.&lt;br /&gt;
&lt;br /&gt;
When creating a new format version, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Description (required) - Text describing the format. This will be saved in METS files.&lt;br /&gt;
* Version (required) - The version number for this specific format version (not the FPR record). For example, for Adobe Illustrator 14 .ai files, you might choose &amp;quot;14&amp;quot;.&lt;br /&gt;
* Pronom id - The specific format version's unique identifier in [http://www.nationalarchives.gov.uk/PRONOM/Default.aspx PRONOM], the UK National Archives's format registry. This is optional, but highly recommended.&lt;br /&gt;
* Access format and Preservation format - Indicates whether this format is suitable as an access format for end users, and for preservation.&lt;br /&gt;
&lt;br /&gt;
==== Format Group ====&lt;br /&gt;
&lt;br /&gt;
A format group is a convenient grouping of related file formats which share common properties. For instance, the FPR includes an &amp;quot;Image (raster)&amp;quot; group which contains format records for GIF, JPEG, and PNG. Each format can belong to one (and only one) format group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Characterization ====&lt;br /&gt;
Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization micro-service always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is fully customizable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
===== Characterization tools =====&lt;br /&gt;
&lt;br /&gt;
Archivematica has four default characterization tools upon installation. Which tool will run on a given file depends on the type of file, as determined by the selected identification tool.&lt;br /&gt;
&lt;br /&gt;
====== Default ======&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
====== Multimedia ======&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduced three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
===== Writing a new characterization command =====&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.2#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Extraction ====&lt;br /&gt;
&lt;br /&gt;
Archivematica supports extracting contents from files during the transfer phase.&lt;br /&gt;
&lt;br /&gt;
Many transfers contain files which are packages of other files; examples of these include compressed archives, such as ZIP files, or disk images. Archivematica provides a transcription microservice which comes with several predefined rules to extract packages, and which is fully customizeable by Archivematica administrators. Administrators can write new commands, and assign existing formats to run for other file formats.&lt;br /&gt;
&lt;br /&gt;
===== Writing a new extraction command =====&lt;br /&gt;
&lt;br /&gt;
Writing an extraction command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
An extraction command is passed two arguments: the ''file to extract'', and the ''path to which the package should be extracted''. Similar to [[Administrator_manual_1.2#Normalization Command|normalization commands]], these arguments will be interpolated directly into &amp;quot;bashScript&amp;quot; and &amp;quot;command&amp;quot; scripts, and passed as positional arguments to &amp;quot;pythonScript&amp;quot; and &amp;quot;asIs&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline position (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||First||The full path to the directory in which the package's contents should be extracted||/path/to/filename-uuid/&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||Second||The full path to the package file||/path/to/filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here's a simple example of how to call an existing tool (7-zip) without any extra logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;7z x -bd -o&amp;quot;%outputDirectory%&amp;quot; &amp;quot;%inputFile%&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Python script example is more complex, and attempts to determine whether any files were extracted in order to determine whether to exit 0 or 1 (and report success or failure):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def extract(package, outdir):&lt;br /&gt;
    # -a extracts only allocated files; we're not capturing unallocated files&lt;br /&gt;
    try:&lt;br /&gt;
        process = subprocess.Popen(['tsk_recover', package, '-a', outdir],&lt;br /&gt;
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)&lt;br /&gt;
        stdout, stderr = process.communicate()&lt;br /&gt;
&lt;br /&gt;
        match = re.match(r'Files Recovered: (\d+)', stdout.splitlines()[0])&lt;br /&gt;
        if match:&lt;br /&gt;
            if match.groups()[0] == '0':&lt;br /&gt;
                raise Exception('tsk_recover failed to extract any files with the message: {}'.format(stdout))&lt;br /&gt;
            else:&lt;br /&gt;
                print(stdout)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        return e&lt;br /&gt;
&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main(package, outdir):&lt;br /&gt;
    return extract(package, outdir)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    package = sys.argv[1]&lt;br /&gt;
    outdir = sys.argv[2]&lt;br /&gt;
    sys.exit(main(package, outdir))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transcription ====&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduces a new transcription microservice. This microservice provides tools to transcribe the contents of media objects. In Archivematica 1.2 it is used to perform OCR on images of textual material, but it can also be used to create commands which perform other kinds of transcription.&lt;br /&gt;
&lt;br /&gt;
===== Writing transcription commands =====&lt;br /&gt;
&lt;br /&gt;
Writing a transcription command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
Transcription commands are expected to write their data to disk inside the SIP. For commands which perform OCR, metadata can be placed inside the &amp;quot;metadata/OCRfiles&amp;quot; directory inside the SIP; other kinds of transcription should produce files within &amp;quot;metadata&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, the following bash script is used by Archivematica to transcribe images using the [https://code.google.com/p/tesseract-ocr/ Tesseract] software:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ocrfiles=&amp;quot;%SIPObjectsDirectory%metadata/OCRfiles&amp;quot;&lt;br /&gt;
test -d &amp;quot;$ocrfiles&amp;quot; || mkdir -p &amp;quot;$ocrfiles&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tesseract %fileFullName% &amp;quot;$ocrfiles/%fileName%&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Identification ====&lt;br /&gt;
&lt;br /&gt;
===== Identification Tools =====&lt;br /&gt;
&lt;br /&gt;
The identification tool properties in Archivematica control the ways in which Archivematica identifies files and associates them with the FPR's version records. The current version of the FPR server contains two tools: a script based on the [http://www.openplanetsfoundation.org/ Open Planets Foundation's] [https://github.com/openplanets/fido/ FIDO] tool, which identifies based on the IDs in PRONOM, and a simple script which identifies files by their file extension. You can use the identification tools portion of FPR to customize the behaviour of the existing tools, or to write your own.&lt;br /&gt;
&lt;br /&gt;
===== Identification Commands =====&lt;br /&gt;
&lt;br /&gt;
Identification commands contain the actual code that a tool will run when identifying a file. This command will be run on every file in a transfer.&lt;br /&gt;
&lt;br /&gt;
When adding a new command, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Identifier (mandatory) - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Script type (mandatory) - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
&lt;br /&gt;
When coding a command, you should expect your script to take the path to the file to be identifed as the first commandline argument. When returning an identification, the tool should print a single line containing ''only'' the identifier, and should exit 0. Any informative, diagnostic, and error message can be printed to stderr, where it will be visible to Archivematica users monitoring tool results. On failure, the tool should exit non-zero.&lt;br /&gt;
&lt;br /&gt;
===== Identification Rules =====&lt;br /&gt;
&lt;br /&gt;
These identification rules allow you to define the relationship between the output created by an identification tool, and one of the formats which exists in the FPR. This must be done for the format to be tracked internally by Archivematica, and for it to be used by normalization later on. For instance, if you created a FIDO configuration which returns MIME types, you could create a rule which associates the output &amp;quot;image/jpeg&amp;quot; with the &amp;quot;Generic JPEG&amp;quot; format in the FPR.&lt;br /&gt;
&lt;br /&gt;
Identification rules are necessary only when a tool is configured to return file extensions or MIME types. Because PUIDs are universal, Archivematica will always look these up for you without requiring any rules to be created, regardless of what tool is being used.&lt;br /&gt;
&lt;br /&gt;
When creating an identification rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Format - Allows you to select one of the formats which already exists in the FPR.&lt;br /&gt;
* Command - Indicates the command that produces this specific identification.&lt;br /&gt;
* Output - The text which is written to standard output by the specified command, such as &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Format Policy Tools ====&lt;br /&gt;
&lt;br /&gt;
Format policy tools control how Archivematica processes files during ingest. The most common kind of these tools are normalization tools, which produce preservation and access copies from ingested files. Archivematica comes configured with a number of commands and scripts to normalize several file formats, and you can use this section of the FPR to customize them or to create your own. These are organized similarly to the [[#Identification Tools]] documented above.&lt;br /&gt;
&lt;br /&gt;
Archivematica uses the following kinds of format policy rules:&lt;br /&gt;
&lt;br /&gt;
* Characterization&lt;br /&gt;
* Extraction&lt;br /&gt;
* Normalization - Access, preservation and thumbnails&lt;br /&gt;
* Event detail - Extracts information about a given tool in order to be inserted into a generated METS file.&lt;br /&gt;
* Transcription&lt;br /&gt;
* Verification - Validates a file produced by another command. For instance, a tool could use Exiftool or JHOVE to determine whether a thumbnail produced by a normalization command was valid and well-formed.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Commands ===&lt;br /&gt;
&lt;br /&gt;
Like the [[#Identification Commands]] above, format policy commands are scripts or command line statements which control how a normalization tool runs. This command will be run once on every file being normalized using this tool in a transfer.&lt;br /&gt;
&lt;br /&gt;
When creating a normalization command, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Tool - One or more tools to be associated with this command.&lt;br /&gt;
* Description - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Command - The script's source, or the commandline statement to execute.&lt;br /&gt;
* Script type - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
* Output format (optional) - The format the command outputs. For example, a command to normalize audio to MP3 using ffmpeg would select the appropriate MP3 format from the dropdown.&lt;br /&gt;
* Output location (optional) - The path the normalized file will be written to. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Command usage - The purpose of the command; this will be used by Archivematica to decide whether a command is appropriate to run in different circumstances. Values are &amp;quot;Normalization&amp;quot;, &amp;quot;Event detail&amp;quot;, and &amp;quot;Verification&amp;quot;. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Event detail command - A command to provide information about the software running this command. This will be written to the METS file as the &amp;quot;event detail&amp;quot; property. For example, the normalization commands which use ffmpeg use an event detail command to extract ffmpeg's version number.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Rules ===&lt;br /&gt;
&lt;br /&gt;
Format policy rules allow commands to be associated with specific file types. For instance, this allows you to configure the command that uses ImageMagick to create thumbnails to be run on .gif and .jpeg files, while selecting a different command to be run on .png files.&lt;br /&gt;
&lt;br /&gt;
When creating a format policy rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Purpose - Allows Archivematica to distinguish rules that should be used to normalize for preservation, normalize for access, to extract information, etc.&lt;br /&gt;
* Format - The file format the associated command should be selected for.&lt;br /&gt;
* Command - The specific command to call when this rule is used.&lt;br /&gt;
&lt;br /&gt;
=== Writing a command ===&lt;br /&gt;
&lt;br /&gt;
==== Identification command ====&lt;br /&gt;
&lt;br /&gt;
Identification commands are very simple to write, though they require some familiarity with Unix scripting.&lt;br /&gt;
&lt;br /&gt;
An identification command run once for every file in a transfer. It will be passed a single argument (the path to the file to identify), and no switches.&lt;br /&gt;
&lt;br /&gt;
On success, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print the identifier to stdout&lt;br /&gt;
* Exit 0&lt;br /&gt;
&lt;br /&gt;
On failure, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print nothing to stdout&lt;br /&gt;
* Exit non-zero (Archivematica does not assign special significance to non-zero exit codes)&lt;br /&gt;
&lt;br /&gt;
A command can print anything to stderr on success or error, but this is purely informational - Archivematica won't do anything special with it. Anything printed to stderr by the command will be shown to the user in the Archivematica dashboard's detailed tool output page. You should print any useful error output to stderr if identification fails, but you can also print any useful extra information to stderr if identification succeeds.&lt;br /&gt;
&lt;br /&gt;
Here's a very simple Python script that identifies files by their file extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import os.path, sys&lt;br /&gt;
(_, extension) = os.path.splitext(sys.argv[1])&lt;br /&gt;
if len(extension) == 0:&lt;br /&gt;
	exit(1)&lt;br /&gt;
else:&lt;br /&gt;
	print extension.lower()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's a more complex Python example, which uses [http://www.sno.phy.queensu.ca/~phil/exiftool/ Exiftool]'s XML output to return the MIME type of a file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from lxml import etree&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    xml = subprocess.check_output(['exiftool', '-X', sys.argv[1]])&lt;br /&gt;
    doc = etree.fromstring(xml)&lt;br /&gt;
    print doc.find('.//{http://ns.exiftool.ca/File/1.0/}MIMEType').text&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, e&lt;br /&gt;
    exit(1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've written an identification command, you can register it in the FPR using the following steps:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for the command itself:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Command&amp;quot;.&lt;br /&gt;
# Select your tool from the &amp;quot;Tool&amp;quot; dropdown box.&lt;br /&gt;
# Fill out the Identifier with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Identify MIME-type using Exiftool&amp;quot;.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Enter the source code for your script in the &amp;quot;Command&amp;quot; box.&lt;br /&gt;
# Click &amp;quot;Create Command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which associate the possible outputs of your tool with the FPR's format records. This needs to be done once for every supported format; we'll show it with MP3, as an example.&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Identification Rules&amp;quot; page, and click &amp;quot;Create New Rule&amp;quot;.&lt;br /&gt;
# Choose the appropriate foramt from the Format dropdown - in our case, &amp;quot;Audio: MPEG Audio: MPEG 1/2 Audio Layer 3&amp;quot;.&lt;br /&gt;
# Choose your command from the Command dropdown.&lt;br /&gt;
# Enter the text your command will output when it identifies this format. For example, when our Exiftool command identifies an MP3 file, it will output &amp;quot;audio/mpeg&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this is complete, any new transfers you create will be able to use your new tool in the identification step.&lt;br /&gt;
&lt;br /&gt;
==== Normalization Command ====&lt;br /&gt;
&lt;br /&gt;
Normalization commands are a bit more complex to write because they take a few extra parameters.&lt;br /&gt;
&lt;br /&gt;
The goal of a normalization command is to take an input file and transform it into a new format. For instance, Archivematica provides commands to transform video content into FFV1 for preservation, and into H.264 for access.&lt;br /&gt;
&lt;br /&gt;
Archivematica provides several parameters specifying input and output filenames and other useful information. Several of the most common are shown in the examples below; a more complete list is in a later section of the documentation: [[#Normalization command variables and arguments]]&lt;br /&gt;
&lt;br /&gt;
When writing a bash script or a command line, you can reference the variables directly in your code, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;inkscape -z &amp;quot;%fileFullName%&amp;quot; --export-pdf=&amp;quot;%outputDirectory%%prefix%%fileName%%postfix%.pdf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When writing a script in Python or other languages, the values will be passed to your script as commandline options, which you will need to parse. The following script provides an example using the argparse module that comes with Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import argparse&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument('--file-full-name', dest='filename')&lt;br /&gt;
parser.add_argument('--output-file-name', dest='output')&lt;br /&gt;
parsed, _ = parser.parse_known_args()&lt;br /&gt;
args = [&lt;br /&gt;
    'ffmpeg', '-vsync', 'passthrough',&lt;br /&gt;
    '-i', parsed.filename,&lt;br /&gt;
    '-map', '0:v', '-map', '0:a',&lt;br /&gt;
    '-vcodec', 'ffv1', '-g', '1',&lt;br /&gt;
    '-acodec', 'pcm_s16le',&lt;br /&gt;
    parsed.output+'.mkv'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
subprocess.call(args)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've created a command, the process of registering it is similar to creating a new identification tool. The folling examples will use the Python normalization script above.&lt;br /&gt;
&lt;br /&gt;
First, create a new tool record:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for your new command:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Tool Command&amp;quot;.&lt;br /&gt;
# Fill out the Description with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Normalize to mkv using ffmpeg&amp;quot;.&lt;br /&gt;
# Enter the source for your command in the Command textbox.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Select the appropriate output format from the dropdown. This indicates to Archivematica what kind of file this command will produce. In this case, choose &amp;quot;Video: Matroska: Generic MKV&amp;quot;.&lt;br /&gt;
# Enter the location the video will be saved to, using the script variables. You can usually use the &amp;quot;%outputFileName%&amp;quot; variable, and add the file extension - in this case &amp;quot;%outputFileName%.mkv&amp;quot;&lt;br /&gt;
# Select a verification command. Archivematica will try to use this tool to ensure that the file your command created works. Archivematica ships with two simple tools, which test whether the file exists and whether it's larger than 0 bytes, but you can create new commands that perform more complicated verifications.&lt;br /&gt;
# Finally, choose a command to produce the &amp;quot;Event detail&amp;quot; text that will be written in the section of the METS file covering the normalization event. Archivematica already includes a suitable command for ffmpeg, but you can also create a custom command.&lt;br /&gt;
# Click &amp;quot;Create command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which will associate your command with the formats it should run on.&lt;br /&gt;
&lt;br /&gt;
==== Normalization command variables and arguments ====&lt;br /&gt;
&lt;br /&gt;
The following variables and arguments control the behaviour of format policy command scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline option (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%fileName%||--input-file=||The filename of the file to process. This variable holds the file's basename, not the whole path.||video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileDirectory%||--file-directory=||The directory containing the input file.||/path/to&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||--file-name=||The fully-qualified path to the file to process.||/path/to/video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtension%||--file-extension=||The file extension of the input file.||mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtensionWithDot%||--file-extension-with-dot=||As above, without stripping the period.||.mov&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The directory to which the output file should be saved.||/path/to/access/copies&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileUUID%||--output-file-uuid=||The unique identifier assigned by Archivematica to the output file.||1abedf3e-3a4b-46d7-97da-bd9ae13859f5&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The fully-qualified path to the directory where the new file should be written.||/var/archivematica/sharedDirectory/www/AIPsStore/uuid&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileName%||--output-file-name=||The fully-qualified path to the output file, minus the file extension.||/path/to/access/copies/video-uuid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customization and automation =&lt;br /&gt;
* Workflow processing decisions can be made in the processingMCP.xml file. [https://www.archivematica.org/wiki/Administrator_manual_0.10#Processing_configuration See here.]&lt;br /&gt;
* Workflows are currently created at the development level. &lt;br /&gt;
*: Some resources avialable&lt;br /&gt;
*:* [[MCP_Basic_Configuration]]&lt;br /&gt;
*:* [[MCP]]&lt;br /&gt;
*:* [[Creating_Custom_Workflows]]&lt;br /&gt;
*:* [[Development]]&lt;br /&gt;
* Normalization commands can be viewed in the preservation planning tab.&lt;br /&gt;
* Normalization paths and commands are currently editable under the preservation planning tab in the dashboard.&lt;br /&gt;
&lt;br /&gt;
= Elasticsearch =&lt;br /&gt;
&lt;br /&gt;
Archivematica has the capability of indexing data about files contained in AIPs and this data can be [[Elasticsearch Development|accessed programatically]] for various applications.&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an ElasticSearch index please see [[ElasticSearch Administration]].&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an Elasticsearch index programmatically, this can be done with pyes using the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    conn.delete_index('aips')&lt;br /&gt;
except:&lt;br /&gt;
    print &amp;quot;Error deleting index or index already deleted.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the AIP index ===&lt;br /&gt;
&lt;br /&gt;
To rebuild the ElasticSearch AIP index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-aip-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-aip-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-aip-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the transfer index ===&lt;br /&gt;
&lt;br /&gt;
Similarly, to rebuild the ElasticSearch transfer data index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-transfer-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-transfer-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-transfer-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Data backup =&lt;br /&gt;
&lt;br /&gt;
In Archivematica there are three types of data you'll likely want to back up:&lt;br /&gt;
* Filesystem (particularly your storage directories)&lt;br /&gt;
* MySQL&lt;br /&gt;
* ElasticSearch&lt;br /&gt;
&lt;br /&gt;
MySQL is used to store short-term processing data. You can back up the MySQL database by using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mysqldump -u &amp;lt;your username&amp;gt; -p&amp;lt;your password&amp;gt; -c MCP &amp;gt; &amp;lt;filename of backup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ElasticSearch is used to store long-term data. Instructions and scripts for backing up and restoring ElasticSearch are available [http://tech.superhappykittymeow.com/?p=296 here].&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
Once you've set up Archivematica it's a good practice, for the sake of security, to change the default passwords.&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
You should create a new MySQL user or change the password of the default &amp;quot;archivematica&amp;quot; MySQL user. The change the password of the default user, enter the following into the command-line:&lt;br /&gt;
&lt;br /&gt;
 $ mysql -u root -p&amp;lt;your MyQL root password&amp;gt; -D mysql \&lt;br /&gt;
    -e &amp;quot;SET PASSWORD FOR 'archivematica'@'localhost' = PASSWORD('&amp;lt;new password&amp;gt;'); \&lt;br /&gt;
    FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you've done this you can change Archivematica's MySQL database access credentials by editing these two files:&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/archivematica/archivematicaCommon/dbsettings&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; settings)&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/share/archivematica/dashboard/settings/common.py&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; settings in the &amp;lt;code&amp;gt;DATABASES&amp;lt;/code&amp;gt; section)&lt;br /&gt;
&lt;br /&gt;
Archivematica does not presently support secured MySQL communication so MySQL should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1645 1645].&lt;br /&gt;
&lt;br /&gt;
== AtoM ==&lt;br /&gt;
&lt;br /&gt;
In addition to changing the MySQL credentials, if you've also installed AtoM you'll want to set the password for it as well. Note that after changing your AtoM credentials you should update the credentials on the AtoM DIP upload administration page as well.&lt;br /&gt;
&lt;br /&gt;
== Gearman ==&lt;br /&gt;
&lt;br /&gt;
Archivematica relies on the German server for queuing work that needs to be done. Gearman currently doesn't support secured connections so Gearman should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1345 1345].&lt;br /&gt;
&lt;br /&gt;
= Questions =&lt;br /&gt;
&lt;br /&gt;
If you run into any difficulties while administrating Archivematica, please check out our FAQ and, if that doesn't help you, contain us using the Archivematica discussion group.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
* [[AM_FAQ|Solutions to common questions]]&lt;br /&gt;
&lt;br /&gt;
== Discussion group ==&lt;br /&gt;
* [http://groups.google.com/group/archivematica?hl=en Discussion group] for questions not covered by the FAQ&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10028</id>
		<title>Administrator manual 1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10028"/>
		<updated>2014-08-07T22:54:46Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Users */ Clarify difference between user types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; Administrator manual 1.2&lt;br /&gt;
&lt;br /&gt;
This manual covers administrator-specific instructions for Archivematica. It will also provide help for using forms in the Administration tab of the Archivematica dashboard and the administrator capabilities in the Format Policy Registry (FPR), which you will find in the Preservation planning tab of the dashboard.&lt;br /&gt;
&lt;br /&gt;
For end-user instructions, please see the [[User_manual_1.2|user manual]].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
* [[Installation|Instructions for installing the latest build of Archivematica on your server]]&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
Currently, Archivematica does not support upgrading from one version to the next. A re-install is required. After re-installing, you can restore Archivematica's knowledge of your AIPs, by [[#Rebuilding_the_AIP_index|rebuilding the AIP index]] and, if you have transfers stored in the backlog, [[#Rebuilding_the_transfer_index|rebuilding the transfer index]].&lt;br /&gt;
&lt;br /&gt;
= Storage service =&lt;br /&gt;
The Archivematica Storage Service allows the configuration of storage spaces associated with multiple Archivematica pipelines.  It allows a storage administrator to configure what storage is available to each Archivematica installation, both locally and remote.&lt;br /&gt;
&lt;br /&gt;
[[File:SS1-0.png|700px|center|thumb|Home page of Storage Service]]&lt;br /&gt;
&lt;br /&gt;
TODO Discuss how spaces and locations fit into each other, pipelines fit to locations, spaces=config, locations=purpose, packages in locations&lt;br /&gt;
&lt;br /&gt;
== Archivematica Configuration ==&lt;br /&gt;
&lt;br /&gt;
When installing Archivematica, options to configure it with the Storage Service will be presented.&lt;br /&gt;
&lt;br /&gt;
[[File:Install3.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
If you have installed the Storage Service at a different URL, you may change that here. &lt;br /&gt;
&lt;br /&gt;
The top button 'Use default transfer source &amp;amp; AIP storage locations' will attempt to automatically configure default Locations for Archivematica, register a new Pipeline, and generate an error if the Storage Service is not available.  Use this option if you want the Storage Service to automatically set up the configured default values.&lt;br /&gt;
&lt;br /&gt;
The bottom button 'Register this pipeline &amp;amp;amp; set up transfer source and AIP storage locations' will only attempt to register a new Pipeline with the Storage Service, and will not error if not Storage Service can be found.  It will also open a link to the provided Storage Service URL, so that Locations can be configured manually.  Use this option if the default values not desired, or the Storage Service is not running yet.  Locations will have to be configured manually before any Transfers can be processed, or AIPs stored.&lt;br /&gt;
&lt;br /&gt;
If the Storage Service is running, the URL to it should be entered, and Archivematica will attempt to register its dashboard UUID as a new Pipeline.  Otherwise, the dashboard UUID is displayed, and a Pipeline for this Archivematica instance can be manually created and configured. The dashboard UUID is also available in Archivematica under Administration -&amp;gt; General. &lt;br /&gt;
&lt;br /&gt;
=== Change the port in the web server configuration === &lt;br /&gt;
&lt;br /&gt;
The storage services uses nginx by default, so you can edit /etc/nginx/sites-enabled/storage and change the line that says&lt;br /&gt;
&lt;br /&gt;
listen 8000;&lt;br /&gt;
&lt;br /&gt;
change 8000 to whatever port you prefer to use. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that in a default installation of Archivematica 1.0, the dashboard is running in Apache on port 80.  So it is not possible to make nginx run on port 80 on the same machine.  If you install the storage service on its own server, you can set it to use port 80. &lt;br /&gt;
&lt;br /&gt;
Make sure to adjust the dashboard UUID in the Archivematica dashboard under Administration -&amp;gt; General.&lt;br /&gt;
&lt;br /&gt;
== Spaces ==&lt;br /&gt;
[[File:Spaces.png|600px|center]]&lt;br /&gt;
A storage Space contains all the information necessary to connect to the physical storage.  It is where protocol-specific information, like an NFS export path and hostname, or the username of a system accessible only via SSH, is stored.  All locations must be contained in a space.&lt;br /&gt;
&lt;br /&gt;
A space is usually the immediate parent of the Location folders.  For example, if you had transfer source locations at &amp;lt;tt&amp;gt;/home/artefactual/archivematica-sampledata-2013-10-10-09-17-20&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/home/artefactual/maildir_transfers&amp;lt;/tt&amp;gt;, the Space's path would be &amp;lt;tt&amp;gt;/home/artefactual/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently supported protocols are local filesystem, NFS, and pipeline local filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Local Filesystem spaces handle storage that is available locally on the machine running the storage service.  Typically this is the hard drive, SSD or raid array attached to the machine, but it could also encompass remote storage that has already been mounted.  For remote storage that has been locally mounted, we recommend using a more specific Space if one is available.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the Space on the local filesystem&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
=== NFS ===&lt;br /&gt;
&lt;br /&gt;
NFS spaces are for NFS exports mounted on the Storage Service server, and the Archivematica pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path the space is mounted at on the filesystem local to the storage service&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the remote computer exporting the NFS mount.&lt;br /&gt;
* ''Remote path'': Export path on the NFS server&lt;br /&gt;
* ''Version'': nfs or nfs4 - as would be passed to the &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
* ''Manually Mounted'': Check this if it has been mounted already.  Otherwise, the Storage Service will try to mount it. ''Note: this feature is not yet available.''&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Pipeline Local Filesystems refer to the storage that is local to the Archivematica pipeline, but remote to the storage service.  For this Space to work properly, passwordless SSH must be set up between the Storage Service host and the Archivematica host.&lt;br /&gt;
&lt;br /&gt;
For example, the storage service is hosted on &amp;lt;tt&amp;gt;storage_service_host&amp;lt;/tt&amp;gt; and Archivematica is running on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt; .  The transfer sources for Archivematica are stored locally on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt;, but the storage service needs access to them.  The Space for that transfer source would be a Pipeline Local Filesystem.&lt;br /&gt;
&lt;br /&gt;
'''Note: Passwordless SSH must be set up between the Storage Service host and the computer Archivematica is running on.'''&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the space on the remote machine.&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the computer running Archivematica.  Should be SSH accessible from the Storage Service computer.&lt;br /&gt;
* ''Remote user'': Username on the remote host&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
[[File:Locations.png|600px|center]]&lt;br /&gt;
A storage Location is contained in a Space, and knows its purpose in the Archivematica system.  A Location is also where Packages are stored.  Each Location is associated with a pipeline and can only be accessed by that pipeline.&lt;br /&gt;
&lt;br /&gt;
Currently, a Location can have one of three purposes: Transfer Source, Currently Processing, or AIP Storage.  Transfer source locations display in Archivematica's Transfer tab, and any folder in a transfer source can be selected to become a Transfer.  AIP storage locations are where the completed AIPs are put for long-term storage.  During processing, Archivematica uses the currently processing location associated with that pipeline.  Only one currently processing location should be associated with a given pipeline.  If you want the same directory on disk to have multiple purposes, multiple Locations with different purposes can be created.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Purpose'': What use the Location is for&lt;br /&gt;
* ''Pipeline'': Which pipelines this location is available to.&lt;br /&gt;
* ''Relative Path'': Path to this Location, relative to the space that contains it.&lt;br /&gt;
* ''Description'': Description of the Location to be displayed to the user.&lt;br /&gt;
* ''Quota'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Enabled'': If checked, this location is accessible to pipelines associated with it.  If unchecked, it will not show up to any pipeline.&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
[[File:Pipelines.png|600px|center]]&lt;br /&gt;
A pipeline is an Archivematica instance registered with the Storage Service, including the server and all associated clients.  Each pipeline is uniquely identified by a UUID, which can be found in the dashboard under Administration -&amp;gt; General Configuration.  When installing Archivematica, it will attempt to register its UUID with the Storage Service, with a description of &amp;quot;Archivematica on &amp;lt;hostname&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''UUID'': Unique identifier of the Archivematica pipeline&lt;br /&gt;
* ''Description'': Description of the pipeline displayed to the user.  e.g. Sankofa demo site&lt;br /&gt;
* ''Enabled'': If checked, this pipeline can access locations associate with it.  If unchecked, all locations will be disabled, even if associated.&lt;br /&gt;
* ''Default Locations'': If checked, the default locations configured in Administration -&amp;gt; Configuration will be created or associated with the new pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
[[File:Packages.png|600px|center]]&lt;br /&gt;
A Package is a file that Archivematica has stored in the Storage Service, commonly an Archival Information Package (AIP).  They cannot be created or deleted through the Storage Service interface, though a deletion request can be submitted through Archivematica that must be approved or rejected by the storage service administrator. To learn more about deleting an AIP, see [[UM_archival_storage_1.2#Deleting_an_AIP|Deleting an AIP]].&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
[[File:StorageserviceAdmin1.png|600px|center]]&lt;br /&gt;
[[File:StorageserviceAdmin2.png|600px|center]]&lt;br /&gt;
The Administration section manages the users and settings for the Storage Service.&lt;br /&gt;
&lt;br /&gt;
=== Users ===&lt;br /&gt;
&lt;br /&gt;
Only registered users can long into the storage service, and the Users page is where users can be created or modified.&lt;br /&gt;
&lt;br /&gt;
The storage service has two types of users: administrative users, and regular users. In the 0.4.0 release of the storage service, the only distinction between the two types is for email notifications; administrators will be notified by email when special events occur, while regular users will not.&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
Settings control the behavior of the Storage Service.  Default Locations are the created or associated with pipelines when they are created.&lt;br /&gt;
&lt;br /&gt;
'''Pipelines are disabled upon creation?''' sets whether a newly created Pipeline can access its Locations.  If a Pipeline is disabled, it cannot access any of its locations.  By disabling newly created Pipelines, it provides some security against unwanted perusal of the files in Locations, or use by unauthorized Archivematica instances.  This can be configured individually when creating a Pipeline manually through the Storage Service website.&lt;br /&gt;
&lt;br /&gt;
'''Default Locations''' set what existing locations should be associated with a newly created Pipeline, or what new Locations should be created for each new Pipeline.  No matter what is configured here, a Currently Processing location is created for all Pipelines, since one is required.  Multiple Transfer Source or AIP Storage Locations can be configured by holding down Ctrl when selecting them.  New Locations in an existing Space can be created for Pipelines that use default locations by entering the relevant information.&lt;br /&gt;
&lt;br /&gt;
== How to Configure a Location ==&lt;br /&gt;
&lt;br /&gt;
For Spaces of the type &amp;quot;Local Filesystem,&amp;quot; Locations are basically directories (or more accurately, paths to directories). You can create Locations for Transfer Source, Currently Processing, or AIP Storage directories.&lt;br /&gt;
&lt;br /&gt;
To create and configure a new Location:&lt;br /&gt;
&lt;br /&gt;
# In the Storage Service, click on the &amp;quot;Spaces&amp;quot; tab.&lt;br /&gt;
# Under the Space that you want to add the Location to, click on the &amp;quot;Create Location here&amp;quot; link.&lt;br /&gt;
# Choose a purpose (e.g. AIP Storage) and pipeline, and enter a &amp;quot;Relative Path&amp;quot; (e.g. var/mylocation) and human-readable description. The Relative Path is relative to the Path defined in the Space you are adding the Location to, e.g. for the default Space, the Path is '/' so your Location path would be relative to that (in the example here, the complete path would end up being '/var/mylocation'). Note: if the path you are defining in your Location doesn't exist, you must create it manually and make sure it is writable by the archivematica user.&lt;br /&gt;
# Save the Location settings.&lt;br /&gt;
# The new location will now be available as an option under the appropriate options in the Dashboard, for example as a Transfer location (which must be enabled under the Dashboard &amp;quot;Administration&amp;quot; tab) or as a destination for AIP storage.&lt;br /&gt;
&lt;br /&gt;
== Store DIP ==&lt;br /&gt;
&lt;br /&gt;
= Dashboard administration tab =&lt;br /&gt;
&lt;br /&gt;
The Archivematica administration pages, under the Administration tab of the dashboard, allows you to configure application components and manage users.&lt;br /&gt;
&lt;br /&gt;
== Processing configuration ==&lt;br /&gt;
&lt;br /&gt;
When processing a SIP or transfer, you may want to automate some of the workflow choices. Choices can be preconfigured by putting a 'processingMCP.xml' file into the root directory of a SIP/transfer.&lt;br /&gt;
&lt;br /&gt;
If a SIP or transfer is submitted with a 'processingMCP.xml' file, processing decisions will be made with the included file.&lt;br /&gt;
&lt;br /&gt;
The XML file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;processingMCP&amp;gt;&lt;br /&gt;
  &amp;lt;preconfiguredChoices&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Send to quarantine? --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;755b4177-c587-41a7-8c52-015277568302&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;d4404ab1-dc7f-4e9e-b1f8-aa861e766b8e&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Display metadata reminder --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;eeb23509-57e2-4529-8857-9d62525db048&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;5727faac-88af-40e8-8c10-268644b0142d&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Remove from quarantine --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;19adb668-b19a-4fcb-8938-f49d7485eaf3&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;333643b7-122a-4019-8bef-996443f3ecc5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
      &amp;lt;delay unitCtime=&amp;quot;yes&amp;quot;&amp;gt;2419200.0&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Extract packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;dec97e3c-5598-4b99-b26e-f87a435a6b7f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;01d80b27-4ad1-4bd1-8f8d-f819f18bf685&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Delete extracted packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;f19926dd-8fb5-4c79-8ade-c83f61f55b40&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;85b1e45d-8f98-4cae-8336-72f40e12cbef&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select pre-normalize file format identification command --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;7a024896-c4f7-4808-a240-44c87c762bc5&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;3c1faec7-7e1e-4cdd-b3bd-e2f05f4baa9b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression algorithm --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01d64f58-8295-4b7b-9cab-8f1b153a504f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;9475447c-9889-430c-9477-6287a9574c5b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression level --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01c651cb-c174-4ba4-b985-1d87a44d6754&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;414da421-b83f-4648-895f-a34840e3c3f5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
  &amp;lt;/preconfiguredChoices&amp;gt;&lt;br /&gt;
&amp;lt;/processingMCP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where appliesTo is the UUID associated with the micro-service job presented in the dashboard, and goToChain is the UUID of the desired selection. The default processingMCP.xml file is located at '/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/defaultProcessingMCP.xml'.&lt;br /&gt;
&lt;br /&gt;
The processing configuration administration page of the dashboard provides you with an easy form to configure the default 'processingMCP.xml' that's added to a SIP or transfer if it doesn't already contain one. When you change the options using the web interface the necessary XML will be written behind the scenes.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:ProcessingConfig1-1.png|1000px|center|thumb|Processing configuration form in Administration tab of the dashboard]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
*For the approval (yes/no) steps, the user ticks the box on the left-hand side to make a choice. If the box is not ticked, the approval step will appear in the dashboard.&lt;br /&gt;
*For the other steps, if no actions are selected the choices appear in the dashboard&lt;br /&gt;
*You can select whether or not to send transfers to quarantine (yes/no) and decide how long you'd like them to stay there.&lt;br /&gt;
*You can select whether to extract packages as well as whether to keep and/or delete the extracted objects and/or the package itself.&lt;br /&gt;
*You can approve normalization, sending the AIP to storage, and uploading the DIP without interrupting the workflow in the dashboard.&lt;br /&gt;
*You can pre-select which format identification tool and command to run in both/either transfer and/or ingest to base your normalization upon. &lt;br /&gt;
*You can choose to send a transfer to backlog or to create a SIP every time.&lt;br /&gt;
*You can select to be reminded to add PREMIS event metadata about manual normalization should you choose to use that capability.&lt;br /&gt;
*You can select between 7z using lzma and 7zip using bzip or parallel bzip2 algorithms for AIP compression.&lt;br /&gt;
*For select compression level, the options are as follows:&lt;br /&gt;
**1 - fastest mode&lt;br /&gt;
**3 - fast compression mode&lt;br /&gt;
**5 - normal compression mode&lt;br /&gt;
**7 - maximum compression&lt;br /&gt;
**9 - ultra compression&lt;br /&gt;
*You can select one archival storage location where you will consistently send your AIPs.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
 &lt;br /&gt;
In the general configuration section, you can select interface options and set [[Administrator_manual_1.2#Storage_service|Storage Service]] options for your Archivematica client.&lt;br /&gt;
&lt;br /&gt;
[[File:Generalconfig.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
=== Interface options ===&lt;br /&gt;
&lt;br /&gt;
Here, you can hide parts of the interface that you don't need to use. In particular, you can hide CONTENTdm DIP upload link, AtoM DIP upload link and DSpace transfer type.&lt;br /&gt;
&lt;br /&gt;
=== Storage Service options ===&lt;br /&gt;
&lt;br /&gt;
This is where you'll find the complete URL for the Storage Service. See [[Administrator_manual_1.2#Storage_service|Storage Service]] for more information about this feature.&lt;br /&gt;
&lt;br /&gt;
== Failures ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 includes dashboard failure reporting. &lt;br /&gt;
[[File:FailuresAdmin.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
== Transfer source location ==&lt;br /&gt;
&lt;br /&gt;
Archivematica allows you to start transfers using the operating system's file browser or via a web interface. Source files for transfers, however, can't be uploaded using the web interface: they must exist on volumes accessible to the Archivematica MCP server and configured via the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
When starting a transfer you're required to select one or more directories of files to add to the transfer. &lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;Transfer source locations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP storage locations ==&lt;br /&gt;
&lt;br /&gt;
AIP storage directories are directories in which completed AIPs are stored. Storage directories can be specified in a manner similar to transfer source directories using the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;AIP storage locations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AtoM DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can upload DIPs directly to an [https://www.ica-atom.org/ AtoM] website so the contents can be accessed online. The AtoM DIP upload configuration page is where you specify the details of the AtoM installation you'd like the DIPs uploaded to (and, if using Rsync to transfer the DIP files, Rsync transfer details).&lt;br /&gt;
&lt;br /&gt;
The parameters that you'll most likely want to set are &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;. These parameters, respectively, specify the destination AtoM website's URL, the email address used to log in to the website, and the password used to log in to the website.&lt;br /&gt;
&lt;br /&gt;
AtoM DIP upload can also use [http://en.wikipedia.org/wiki/Rsync Rsync] as a transfer mechanism. Rsync is an open source utility for efficiently transferring files. The &amp;lt;code&amp;gt;rsync-target&amp;lt;/code&amp;gt; parameter is used to specify an Rsync-style target host/directory pairing, &amp;quot;foobar.com:~/dips/&amp;quot; for example. The &amp;lt;code&amp;gt;rsync-command&amp;lt;/code&amp;gt; parameter is used to specify rsync connection options, &amp;quot;ssh -p 22222 -l user&amp;quot; for example. If you are using the rsync option, please see AtoM server configuration below.&lt;br /&gt;
&lt;br /&gt;
To set any parameters for AtoM DIP upload change the values, preserving the existing format they're specified in, in the &amp;quot;Command arguments&amp;quot; field then click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that in AtoM, the sword plugin (Admin --&amp;gt; Plugins --&amp;gt; qtSwordPlugin) must be enabled in order for AtoM to receive uploaded DIPs. Enabling Job scheduling (Admin --&amp;gt; Settings --&amp;gt; Job scheduling) is also recommended.&lt;br /&gt;
&lt;br /&gt;
=== AtoM server configuration ===&lt;br /&gt;
&lt;br /&gt;
This server configuration step is necessary to allow Archivematica to log in to the AtoM server without passwords, and only when the user is deploying the rsync option described above in the AtoM DIP upload section. &lt;br /&gt;
&lt;br /&gt;
To enable sending DIPs from Archivematica to the AtoM server:&lt;br /&gt;
&lt;br /&gt;
Generate SSH keys for the Archivematica user. Leave the passphrase field blank.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo -i -u archivematica&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;/var/lib/archivematica/.ssh/id_rsa.pub&amp;lt;/code&amp;gt; somewhere handy, you will need it later.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to configure the AtoM server so Archivematica can send the DIPs using SSH/rsync. For that purpose, you will create a user called &amp;lt;code&amp;gt;archivematica&amp;lt;/code&amp;gt; and we are going to assign that user a restricted shell with access only to rsync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo apt-get install rssh&lt;br /&gt;
 $ sudo useradd -d /home/archivematica -m -s /usr/bin/rssh archivematica&lt;br /&gt;
 $ sudo passswd -l archivematica&lt;br /&gt;
 $ sudo vim /etc/rssh.conf // Make sure that allowrsync is uncommented!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the SSH key that we generated before:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo mkdir /home/archivematica/.ssh&lt;br /&gt;
 $ chmod 700 /home/archivematica/.ssh/&lt;br /&gt;
 $ sudo vim /home/archivematica/.ssh/authorized_keys // Paste here the contents of id_dsa.pub&lt;br /&gt;
 $ chown -R archivematica:archivematica /home/archivematica&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Archivematica, make sure that you update the &amp;lt;code&amp;gt;--rsync-target&amp;lt;/code&amp;gt; accordingly.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are the parameters that we are passing to the upload-qubit microservice.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to the Administration &amp;gt; Upload DIP page in the dashboard.&lt;br /&gt;
&lt;br /&gt;
Generic parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--url=&amp;quot;http://atom-hostname/index.php&amp;quot; \&lt;br /&gt;
--email=&amp;quot;demo@example.com&amp;quot; \&lt;br /&gt;
--password=&amp;quot;demo&amp;quot; \&lt;br /&gt;
--uuid=&amp;quot;%SIPUUID%&amp;quot; \&lt;br /&gt;
--rsync-target=&amp;quot;archivematica@atom-hostname:/tmp&amp;quot; \&lt;br /&gt;
--debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONTENTdm DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can also upload DIPs to [http://www.contentdm.org/ CONTENTdm] instances. Multiple CONTENTdm destinations may be configured.&lt;br /&gt;
&lt;br /&gt;
For each possible CONTENTdm DIP upload destination, you'll specify a brief description and configuration parameters appropriate for the destination. Paramters include &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; (full path to the CONTENTdm API, including the leading 'http://' or 'https://', for example http://example.com:81/dmwebservices/index.php), &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; (Linux user and group on the CONTENTdm server, not a CONTENTdm username). Note that only &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; is required is you are going to produce CONTENTdm Project Client packages; &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; are also required if you are going to use the &amp;quot;direct upload&amp;quot; option for uploading your DIPs into CONTENTdm.&lt;br /&gt;
&lt;br /&gt;
When changing parameters for a CONTENTdm DIP upload destination simply change the values, preserving the existing format they're specified in. To add an upload destination fill in the form at the bottom of the page with the appropriate values. When you've completed your changes click the &amp;quot;Save&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PREMIS agent ==&lt;br /&gt;
&lt;br /&gt;
The PREMIS agent name and code can be set via the administration interface.&lt;br /&gt;
[[File:Premisagent-10.png|center|900px|thumbs]]&lt;br /&gt;
&lt;br /&gt;
== Rest API ==&lt;br /&gt;
&lt;br /&gt;
In addition to automation using the processingMCP.xml file, Archivematica includes a REST API for automating transfer approval. Using this API, you can create a custom script that copies a transfer to the appropriate directory then uses the &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; command, or some other means, to let Archivematica know that the copy is complete.&lt;br /&gt;
&lt;br /&gt;
=== API keys ===&lt;br /&gt;
&lt;br /&gt;
Use of the REST API requires the use of API keys. An API key is associated with a specific user. To generate an API key for a user:&lt;br /&gt;
&lt;br /&gt;
# Browse to &amp;lt;code&amp;gt;/administration/accounts/list/&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click the &amp;quot;Edit&amp;quot; button for the user you'd like to generate an API key for&lt;br /&gt;
# Click the &amp;quot;Regenerate API key&amp;quot; checkbox&lt;br /&gt;
# Click &amp;quot;Save&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After generating an API key, you can click the &amp;quot;Edit&amp;quot; button for the user and you should see the API key.&lt;br /&gt;
&lt;br /&gt;
=== IP whitelist ===&lt;br /&gt;
&lt;br /&gt;
In addition to creating API keys, you'll need to add the IP of any computer making REST requests to the REST API whitelist. The IP whitelist can be edited in the administration interface at &amp;lt;code&amp;gt;/administration/api/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Approving a transfer ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to approve a transfer. The transfer must first be copied into the appropriate watch directory. To determine the location of the appropriate watch directory, first figure out where the shared directory is from the &amp;lt;code&amp;gt;watchDirectoryPath&amp;lt;/code&amp;gt; value of &amp;lt;code&amp;gt;/etc/archivematica/MCPServer/serverConfig.conf&amp;lt;/code&amp;gt;. Within that directory is a subdirectory &amp;lt;code&amp;gt;activeTransfers&amp;lt;/code&amp;gt;. In this subdirectory are watch directories for the various transfer types.&lt;br /&gt;
&lt;br /&gt;
When using the REST API to approve a transfer, if a transfer type isn't specified, the transfer will be deemed a standard transfer.&lt;br /&gt;
&lt;br /&gt;
'''HTTP Method:''' POST&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: directory name of the transfer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (optional): transfer type [standard|dspace|unzipped bag|zipped bag]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl --data &amp;quot;username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;amp;type=standard&amp;amp;directory=MyTransfer&amp;quot; http://127.0.0.1/api/transfer/approve&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&amp;quot;message&amp;quot;: &amp;quot;Approval successful.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Listing unapproved transfers ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to get a list of unapproved transfers. Each transfer's directory name and type is returned.&lt;br /&gt;
&lt;br /&gt;
'''Method:''' &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl &amp;quot;http://127.0.0.1/api/transfer/unapproved?username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;,&lt;br /&gt;
        &amp;quot;results&amp;quot;: [{&lt;br /&gt;
                &amp;quot;directory&amp;quot;: &amp;quot;MyTransfer&amp;quot;,&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;standard&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
The dashboard provides a simple cookie-based user authentication system using the [https://docs.djangoproject.com/en/1.4/topics/auth/ Django authentication framework]. Access to the dashboard is limited only to logged-in users and a login page will be shown when the user is not recognized. If the application can't find any user in the database, the user creation page will be shown instead, allowing the creation of an administrator account.&lt;br /&gt;
&lt;br /&gt;
Users can be also created, modified and deleted from the Administration tab. Only users who are administrators can create and edit user accounts.&lt;br /&gt;
&lt;br /&gt;
You can add a new user to the system by clicking the &amp;quot;Add new&amp;quot; button on the user administration page. By adding a user you provide a way to access Archivematica using a username/password combination. Should you need to change a user's username or password, you can do so by clicking the &amp;quot;Edit&amp;quot; button, corresponding to the user, on the administration page. Should you need to revoke a user's access, you can click the corresponding &amp;quot;Delete&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== CLI creation of administrative users ===&lt;br /&gt;
&lt;br /&gt;
If you need an additional administrator user one can be created via the command-line, issue the following commands:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py createsuperuser&lt;br /&gt;
&lt;br /&gt;
=== CLI password resetting ===&lt;br /&gt;
&lt;br /&gt;
If you've forgotten the password for your administrator user, or any other user, you can change it via the command-line:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py changepassword &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
Archivematica uses [http://en.wikipedia.org/wiki/PBKDF2 PBKDF2] as the default algorithm to store passwords. This should be sufficient for most users: it's quite secure, requiring massive amounts of computing time to break. However, other algorithms could be used as the following document explains: [https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords How Django stores passwords].&lt;br /&gt;
&lt;br /&gt;
Our plan is to extend this functionality in the future adding groups and granular permissions support.&lt;br /&gt;
&lt;br /&gt;
= Dashboard preservation planning tab =&lt;br /&gt;
&lt;br /&gt;
== Format Policy Registry (FPR) ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to the Format Policy Registry ===&lt;br /&gt;
&lt;br /&gt;
The Format Policy Registry (FPR) is a database which allows Archivematica users to define format policies for handling file formats. A format policy indicates the actions, tools and settings to apply to a file of a particular file format (e.g. conversion to preservation format, conversion to access format). Format policies will change as community standards, practices and tools evolve. Format policies are maintained by Artefactual, who provides a freely-available FPR server hosted at [http://fpr.archivematica.org fpr.archivematica.org]. This server stores structured information about normalization format policies for preservation and access. You can update your local FPR from the FPR server using the UPDATE button in the preservation planning tab of the dashboard. In addition, you can maintain local rules to add new formats or customize the behaviour of Archivematica. The Archivematica dashboard communicates with the FPR server via a REST API. &lt;br /&gt;
&lt;br /&gt;
==== First-time configuration ====&lt;br /&gt;
&lt;br /&gt;
The first time a new Archivematica installation is set up, it will attempt to connect to the FPR server as part of the initial configuration process. As a part of the setup, it will register the Archivematica install with the server and pull down the current set of format policies. In order to register the server, Archivematica will send the following information to the FPR Server, over an encrypted connection:&lt;br /&gt;
&lt;br /&gt;
#Agent Identifier (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#Agent Name (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#IP address of host&lt;br /&gt;
#UUID of Archivematica instance&lt;br /&gt;
#current time&lt;br /&gt;
&lt;br /&gt;
*The only information that will be passed back and forth between Archivematica and the FPR Server would be these format policies - what tool to run when normalizing for a given purpose (access, preservation) when a specific File Identification Tool identifies a specific File Format.  No information about the content that has been run through Archivematica, or any details about the Archivematica installation or configuration would be sent to the FPR Server. &lt;br /&gt;
&lt;br /&gt;
* Because Archivematica is an open source project, it is possible for any organization to conduct a software audit/code review before running Archivematica in a production environment in order to independently verify the information being shared with the FPR Server.  An organization could choose to run a private FPR Server, accessible only within their own network(s), to provide at least a limited version of the benefits of sharing format policies, while guaranteeing a completely self-contained preservation system. This is something that Artefactual is not intending to develop, but anyone is free to extend the software as they see fit, or to hire us or other developers to do so.&lt;br /&gt;
&lt;br /&gt;
=== Updating format policies ===&lt;br /&gt;
&lt;br /&gt;
FPR rules can be updated at any time from within the Preservation Planning tab in Archivematica. Clicking the &amp;quot;update&amp;quot; button will initiate an FPR pull which will bring in any new or altered rules since the last time an update was performed.&lt;br /&gt;
&lt;br /&gt;
=== Types of FPR entries ===&lt;br /&gt;
&lt;br /&gt;
==== Format ====&lt;br /&gt;
&lt;br /&gt;
In the FPR, a &amp;quot;format&amp;quot; is a record representing one or more related ''format versions'', which are records representing a specific file format. For example, the format record for &amp;quot;Graphics Interchange Format&amp;quot; (GIF) is comprised of format versions for both GIF 1987a and 1989a.&lt;br /&gt;
&lt;br /&gt;
When creating a new format version, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Description (required) - Text describing the format. This will be saved in METS files.&lt;br /&gt;
* Version (required) - The version number for this specific format version (not the FPR record). For example, for Adobe Illustrator 14 .ai files, you might choose &amp;quot;14&amp;quot;.&lt;br /&gt;
* Pronom id - The specific format version's unique identifier in [http://www.nationalarchives.gov.uk/PRONOM/Default.aspx PRONOM], the UK National Archives's format registry. This is optional, but highly recommended.&lt;br /&gt;
* Access format and Preservation format - Indicates whether this format is suitable as an access format for end users, and for preservation.&lt;br /&gt;
&lt;br /&gt;
==== Format Group ====&lt;br /&gt;
&lt;br /&gt;
A format group is a convenient grouping of related file formats which share common properties. For instance, the FPR includes an &amp;quot;Image (raster)&amp;quot; group which contains format records for GIF, JPEG, and PNG. Each format can belong to one (and only one) format group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Characterization ====&lt;br /&gt;
Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization micro-service always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is fully customizable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
===== Characterization tools =====&lt;br /&gt;
&lt;br /&gt;
Archivematica has four default characterization tools upon installation. Which tool will run on a given file depends on the type of file, as determined by the selected identification tool.&lt;br /&gt;
&lt;br /&gt;
====== Default ======&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
====== Multimedia ======&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduced three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
===== Writing a new characterization command =====&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.2#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Extraction ====&lt;br /&gt;
&lt;br /&gt;
Archivematica supports extracting contents from files during the transfer phase.&lt;br /&gt;
&lt;br /&gt;
Many transfers contain files which are packages of other files; examples of these include compressed archives, such as ZIP files, or disk images. Archivematica provides a transcription microservice which comes with several predefined rules to extract packages, and which is fully customizeable by Archivematica administrators. Administrators can write new commands, and assign existing formats to run for other file formats.&lt;br /&gt;
&lt;br /&gt;
===== Writing a new extraction command =====&lt;br /&gt;
&lt;br /&gt;
Writing an extraction command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
An extraction command is passed two arguments: the ''file to extract'', and the ''path to which the package should be extracted''. Similar to [[Administrator_manual_1.2#Normalization Command|normalization commands]], these arguments will be interpolated directly into &amp;quot;bashScript&amp;quot; and &amp;quot;command&amp;quot; scripts, and passed as positional arguments to &amp;quot;pythonScript&amp;quot; and &amp;quot;asIs&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline position (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||First||The full path to the directory in which the package's contents should be extracted||/path/to/filename-uuid/&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||Second||The full path to the package file||/path/to/filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here's a simple example of how to call an existing tool (7-zip) without any extra logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;7z x -bd -o&amp;quot;%outputDirectory%&amp;quot; &amp;quot;%inputFile%&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Python script example is more complex, and attempts to determine whether any files were extracted in order to determine whether to exit 0 or 1 (and report success or failure):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def extract(package, outdir):&lt;br /&gt;
    # -a extracts only allocated files; we're not capturing unallocated files&lt;br /&gt;
    try:&lt;br /&gt;
        process = subprocess.Popen(['tsk_recover', package, '-a', outdir],&lt;br /&gt;
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)&lt;br /&gt;
        stdout, stderr = process.communicate()&lt;br /&gt;
&lt;br /&gt;
        match = re.match(r'Files Recovered: (\d+)', stdout.splitlines()[0])&lt;br /&gt;
        if match:&lt;br /&gt;
            if match.groups()[0] == '0':&lt;br /&gt;
                raise Exception('tsk_recover failed to extract any files with the message: {}'.format(stdout))&lt;br /&gt;
            else:&lt;br /&gt;
                print(stdout)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        return e&lt;br /&gt;
&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main(package, outdir):&lt;br /&gt;
    return extract(package, outdir)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    package = sys.argv[1]&lt;br /&gt;
    outdir = sys.argv[2]&lt;br /&gt;
    sys.exit(main(package, outdir))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transcription ====&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduces a new transcription microservice. This microservice provides tools to transcribe the contents of media objects. In Archivematica 1.2 it is used to perform OCR on images of textual material, but it can also be used to create commands which perform other kinds of transcription.&lt;br /&gt;
&lt;br /&gt;
===== Writing transcription commands =====&lt;br /&gt;
&lt;br /&gt;
Writing a transcription command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
Transcription commands are expected to write their data to disk inside the SIP. For commands which perform OCR, metadata can be placed inside the &amp;quot;metadata/OCRfiles&amp;quot; directory inside the SIP; other kinds of transcription should produce files within &amp;quot;metadata&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, the following bash script is used by Archivematica to transcribe images using the [https://code.google.com/p/tesseract-ocr/ Tesseract] software:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ocrfiles=&amp;quot;%SIPObjectsDirectory%metadata/OCRfiles&amp;quot;&lt;br /&gt;
test -d &amp;quot;$ocrfiles&amp;quot; || mkdir -p &amp;quot;$ocrfiles&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tesseract %fileFullName% &amp;quot;$ocrfiles/%fileName%&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Identification ====&lt;br /&gt;
&lt;br /&gt;
===== Identification Tools =====&lt;br /&gt;
&lt;br /&gt;
The identification tool properties in Archivematica control the ways in which Archivematica identifies files and associates them with the FPR's version records. The current version of the FPR server contains two tools: a script based on the [http://www.openplanetsfoundation.org/ Open Planets Foundation's] [https://github.com/openplanets/fido/ FIDO] tool, which identifies based on the IDs in PRONOM, and a simple script which identifies files by their file extension. You can use the identification tools portion of FPR to customize the behaviour of the existing tools, or to write your own.&lt;br /&gt;
&lt;br /&gt;
===== Identification Commands =====&lt;br /&gt;
&lt;br /&gt;
Identification commands contain the actual code that a tool will run when identifying a file. This command will be run on every file in a transfer.&lt;br /&gt;
&lt;br /&gt;
When adding a new command, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Identifier (mandatory) - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Script type (mandatory) - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
&lt;br /&gt;
When coding a command, you should expect your script to take the path to the file to be identifed as the first commandline argument. When returning an identification, the tool should print a single line containing ''only'' the identifier, and should exit 0. Any informative, diagnostic, and error message can be printed to stderr, where it will be visible to Archivematica users monitoring tool results. On failure, the tool should exit non-zero.&lt;br /&gt;
&lt;br /&gt;
===== Identification Rules =====&lt;br /&gt;
&lt;br /&gt;
These identification rules allow you to define the relationship between the output created by an identification tool, and one of the formats which exists in the FPR. This must be done for the format to be tracked internally by Archivematica, and for it to be used by normalization later on. For instance, if you created a FIDO configuration which returns MIME types, you could create a rule which associates the output &amp;quot;image/jpeg&amp;quot; with the &amp;quot;Generic JPEG&amp;quot; format in the FPR.&lt;br /&gt;
&lt;br /&gt;
Identification rules are necessary only when a tool is configured to return file extensions or MIME types. Because PUIDs are universal, Archivematica will always look these up for you without requiring any rules to be created, regardless of what tool is being used.&lt;br /&gt;
&lt;br /&gt;
When creating an identification rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Format - Allows you to select one of the formats which already exists in the FPR.&lt;br /&gt;
* Command - Indicates the command that produces this specific identification.&lt;br /&gt;
* Output - The text which is written to standard output by the specified command, such as &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Format Policy Tools ====&lt;br /&gt;
&lt;br /&gt;
Format policy tools control how Archivematica processes files during ingest. The most common kind of these tools are normalization tools, which produce preservation and access copies from ingested files. Archivematica comes configured with a number of commands and scripts to normalize several file formats, and you can use this section of the FPR to customize them or to create your own. These are organized similarly to the [[#Identification Tools]] documented above.&lt;br /&gt;
&lt;br /&gt;
Archivematica uses the following kinds of format policy rules:&lt;br /&gt;
&lt;br /&gt;
* Characterization&lt;br /&gt;
* Extraction&lt;br /&gt;
* Normalization - Access, preservation and thumbnails&lt;br /&gt;
* Event detail - Extracts information about a given tool in order to be inserted into a generated METS file.&lt;br /&gt;
* Transcription&lt;br /&gt;
* Verification - Validates a file produced by another command. For instance, a tool could use Exiftool or JHOVE to determine whether a thumbnail produced by a normalization command was valid and well-formed.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Commands ===&lt;br /&gt;
&lt;br /&gt;
Like the [[#Identification Commands]] above, format policy commands are scripts or command line statements which control how a normalization tool runs. This command will be run once on every file being normalized using this tool in a transfer.&lt;br /&gt;
&lt;br /&gt;
When creating a normalization command, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Tool - One or more tools to be associated with this command.&lt;br /&gt;
* Description - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Command - The script's source, or the commandline statement to execute.&lt;br /&gt;
* Script type - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
* Output format (optional) - The format the command outputs. For example, a command to normalize audio to MP3 using ffmpeg would select the appropriate MP3 format from the dropdown.&lt;br /&gt;
* Output location (optional) - The path the normalized file will be written to. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Command usage - The purpose of the command; this will be used by Archivematica to decide whether a command is appropriate to run in different circumstances. Values are &amp;quot;Normalization&amp;quot;, &amp;quot;Event detail&amp;quot;, and &amp;quot;Verification&amp;quot;. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Event detail command - A command to provide information about the software running this command. This will be written to the METS file as the &amp;quot;event detail&amp;quot; property. For example, the normalization commands which use ffmpeg use an event detail command to extract ffmpeg's version number.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Rules ===&lt;br /&gt;
&lt;br /&gt;
Format policy rules allow commands to be associated with specific file types. For instance, this allows you to configure the command that uses ImageMagick to create thumbnails to be run on .gif and .jpeg files, while selecting a different command to be run on .png files.&lt;br /&gt;
&lt;br /&gt;
When creating a format policy rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Purpose - Allows Archivematica to distinguish rules that should be used to normalize for preservation, normalize for access, to extract information, etc.&lt;br /&gt;
* Format - The file format the associated command should be selected for.&lt;br /&gt;
* Command - The specific command to call when this rule is used.&lt;br /&gt;
&lt;br /&gt;
=== Writing a command ===&lt;br /&gt;
&lt;br /&gt;
==== Identification command ====&lt;br /&gt;
&lt;br /&gt;
Identification commands are very simple to write, though they require some familiarity with Unix scripting.&lt;br /&gt;
&lt;br /&gt;
An identification command run once for every file in a transfer. It will be passed a single argument (the path to the file to identify), and no switches.&lt;br /&gt;
&lt;br /&gt;
On success, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print the identifier to stdout&lt;br /&gt;
* Exit 0&lt;br /&gt;
&lt;br /&gt;
On failure, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print nothing to stdout&lt;br /&gt;
* Exit non-zero (Archivematica does not assign special significance to non-zero exit codes)&lt;br /&gt;
&lt;br /&gt;
A command can print anything to stderr on success or error, but this is purely informational - Archivematica won't do anything special with it. Anything printed to stderr by the command will be shown to the user in the Archivematica dashboard's detailed tool output page. You should print any useful error output to stderr if identification fails, but you can also print any useful extra information to stderr if identification succeeds.&lt;br /&gt;
&lt;br /&gt;
Here's a very simple Python script that identifies files by their file extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import os.path, sys&lt;br /&gt;
(_, extension) = os.path.splitext(sys.argv[1])&lt;br /&gt;
if len(extension) == 0:&lt;br /&gt;
	exit(1)&lt;br /&gt;
else:&lt;br /&gt;
	print extension.lower()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's a more complex Python example, which uses [http://www.sno.phy.queensu.ca/~phil/exiftool/ Exiftool]'s XML output to return the MIME type of a file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from lxml import etree&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    xml = subprocess.check_output(['exiftool', '-X', sys.argv[1]])&lt;br /&gt;
    doc = etree.fromstring(xml)&lt;br /&gt;
    print doc.find('.//{http://ns.exiftool.ca/File/1.0/}MIMEType').text&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, e&lt;br /&gt;
    exit(1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've written an identification command, you can register it in the FPR using the following steps:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for the command itself:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Command&amp;quot;.&lt;br /&gt;
# Select your tool from the &amp;quot;Tool&amp;quot; dropdown box.&lt;br /&gt;
# Fill out the Identifier with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Identify MIME-type using Exiftool&amp;quot;.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Enter the source code for your script in the &amp;quot;Command&amp;quot; box.&lt;br /&gt;
# Click &amp;quot;Create Command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which associate the possible outputs of your tool with the FPR's format records. This needs to be done once for every supported format; we'll show it with MP3, as an example.&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Identification Rules&amp;quot; page, and click &amp;quot;Create New Rule&amp;quot;.&lt;br /&gt;
# Choose the appropriate foramt from the Format dropdown - in our case, &amp;quot;Audio: MPEG Audio: MPEG 1/2 Audio Layer 3&amp;quot;.&lt;br /&gt;
# Choose your command from the Command dropdown.&lt;br /&gt;
# Enter the text your command will output when it identifies this format. For example, when our Exiftool command identifies an MP3 file, it will output &amp;quot;audio/mpeg&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this is complete, any new transfers you create will be able to use your new tool in the identification step.&lt;br /&gt;
&lt;br /&gt;
==== Normalization Command ====&lt;br /&gt;
&lt;br /&gt;
Normalization commands are a bit more complex to write because they take a few extra parameters.&lt;br /&gt;
&lt;br /&gt;
The goal of a normalization command is to take an input file and transform it into a new format. For instance, Archivematica provides commands to transform video content into FFV1 for preservation, and into H.264 for access.&lt;br /&gt;
&lt;br /&gt;
Archivematica provides several parameters specifying input and output filenames and other useful information. Several of the most common are shown in the examples below; a more complete list is in a later section of the documentation: [[#Normalization command variables and arguments]]&lt;br /&gt;
&lt;br /&gt;
When writing a bash script or a command line, you can reference the variables directly in your code, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;inkscape -z &amp;quot;%fileFullName%&amp;quot; --export-pdf=&amp;quot;%outputDirectory%%prefix%%fileName%%postfix%.pdf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When writing a script in Python or other languages, the values will be passed to your script as commandline options, which you will need to parse. The following script provides an example using the argparse module that comes with Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import argparse&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument('--file-full-name', dest='filename')&lt;br /&gt;
parser.add_argument('--output-file-name', dest='output')&lt;br /&gt;
parsed, _ = parser.parse_known_args()&lt;br /&gt;
args = [&lt;br /&gt;
    'ffmpeg', '-vsync', 'passthrough',&lt;br /&gt;
    '-i', parsed.filename,&lt;br /&gt;
    '-map', '0:v', '-map', '0:a',&lt;br /&gt;
    '-vcodec', 'ffv1', '-g', '1',&lt;br /&gt;
    '-acodec', 'pcm_s16le',&lt;br /&gt;
    parsed.output+'.mkv'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
subprocess.call(args)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've created a command, the process of registering it is similar to creating a new identification tool. The folling examples will use the Python normalization script above.&lt;br /&gt;
&lt;br /&gt;
First, create a new tool record:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for your new command:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Tool Command&amp;quot;.&lt;br /&gt;
# Fill out the Description with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Normalize to mkv using ffmpeg&amp;quot;.&lt;br /&gt;
# Enter the source for your command in the Command textbox.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Select the appropriate output format from the dropdown. This indicates to Archivematica what kind of file this command will produce. In this case, choose &amp;quot;Video: Matroska: Generic MKV&amp;quot;.&lt;br /&gt;
# Enter the location the video will be saved to, using the script variables. You can usually use the &amp;quot;%outputFileName%&amp;quot; variable, and add the file extension - in this case &amp;quot;%outputFileName%.mkv&amp;quot;&lt;br /&gt;
# Select a verification command. Archivematica will try to use this tool to ensure that the file your command created works. Archivematica ships with two simple tools, which test whether the file exists and whether it's larger than 0 bytes, but you can create new commands that perform more complicated verifications.&lt;br /&gt;
# Finally, choose a command to produce the &amp;quot;Event detail&amp;quot; text that will be written in the section of the METS file covering the normalization event. Archivematica already includes a suitable command for ffmpeg, but you can also create a custom command.&lt;br /&gt;
# Click &amp;quot;Create command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which will associate your command with the formats it should run on.&lt;br /&gt;
&lt;br /&gt;
==== Normalization command variables and arguments ====&lt;br /&gt;
&lt;br /&gt;
The following variables and arguments control the behaviour of format policy command scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline option (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%fileName%||--input-file=||The filename of the file to process. This variable holds the file's basename, not the whole path.||video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileDirectory%||--file-directory=||The directory containing the input file.||/path/to&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||--file-name=||The fully-qualified path to the file to process.||/path/to/video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtension%||--file-extension=||The file extension of the input file.||mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtensionWithDot%||--file-extension-with-dot=||As above, without stripping the period.||.mov&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The directory to which the output file should be saved.||/path/to/access/copies&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileUUID%||--output-file-uuid=||The unique identifier assigned by Archivematica to the output file.||1abedf3e-3a4b-46d7-97da-bd9ae13859f5&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The fully-qualified path to the directory where the new file should be written.||/var/archivematica/sharedDirectory/www/AIPsStore/uuid&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileName%||--output-file-name=||The fully-qualified path to the output file, minus the file extension.||/path/to/access/copies/video-uuid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customization and automation =&lt;br /&gt;
* Workflow processing decisions can be made in the processingMCP.xml file. [https://www.archivematica.org/wiki/Administrator_manual_0.10#Processing_configuration See here.]&lt;br /&gt;
* Workflows are currently created at the development level. &lt;br /&gt;
*: Some resources avialable&lt;br /&gt;
*:* [[MCP_Basic_Configuration]]&lt;br /&gt;
*:* [[MCP]]&lt;br /&gt;
*:* [[Creating_Custom_Workflows]]&lt;br /&gt;
*:* [[Development]]&lt;br /&gt;
* Normalization commands can be viewed in the preservation planning tab.&lt;br /&gt;
* Normalization paths and commands are currently editable under the preservation planning tab in the dashboard.&lt;br /&gt;
&lt;br /&gt;
= Elasticsearch =&lt;br /&gt;
&lt;br /&gt;
Archivematica has the capability of indexing data about files contained in AIPs and this data can be [[Elasticsearch Development|accessed programatically]] for various applications.&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an ElasticSearch index please see [[ElasticSearch Administration]].&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an Elasticsearch index programmatically, this can be done with pyes using the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    conn.delete_index('aips')&lt;br /&gt;
except:&lt;br /&gt;
    print &amp;quot;Error deleting index or index already deleted.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the AIP index ===&lt;br /&gt;
&lt;br /&gt;
To rebuild the ElasticSearch AIP index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-aip-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-aip-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-aip-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the transfer index ===&lt;br /&gt;
&lt;br /&gt;
Similarly, to rebuild the ElasticSearch transfer data index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-transfer-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-transfer-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-transfer-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Data backup =&lt;br /&gt;
&lt;br /&gt;
In Archivematica there are three types of data you'll likely want to back up:&lt;br /&gt;
* Filesystem (particularly your storage directories)&lt;br /&gt;
* MySQL&lt;br /&gt;
* ElasticSearch&lt;br /&gt;
&lt;br /&gt;
MySQL is used to store short-term processing data. You can back up the MySQL database by using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mysqldump -u &amp;lt;your username&amp;gt; -p&amp;lt;your password&amp;gt; -c MCP &amp;gt; &amp;lt;filename of backup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ElasticSearch is used to store long-term data. Instructions and scripts for backing up and restoring ElasticSearch are available [http://tech.superhappykittymeow.com/?p=296 here].&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
Once you've set up Archivematica it's a good practice, for the sake of security, to change the default passwords.&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
You should create a new MySQL user or change the password of the default &amp;quot;archivematica&amp;quot; MySQL user. The change the password of the default user, enter the following into the command-line:&lt;br /&gt;
&lt;br /&gt;
 $ mysql -u root -p&amp;lt;your MyQL root password&amp;gt; -D mysql \&lt;br /&gt;
    -e &amp;quot;SET PASSWORD FOR 'archivematica'@'localhost' = PASSWORD('&amp;lt;new password&amp;gt;'); \&lt;br /&gt;
    FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you've done this you can change Archivematica's MySQL database access credentials by editing these two files:&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/archivematica/archivematicaCommon/dbsettings&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; settings)&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/share/archivematica/dashboard/settings/common.py&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; settings in the &amp;lt;code&amp;gt;DATABASES&amp;lt;/code&amp;gt; section)&lt;br /&gt;
&lt;br /&gt;
Archivematica does not presently support secured MySQL communication so MySQL should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1645 1645].&lt;br /&gt;
&lt;br /&gt;
== AtoM ==&lt;br /&gt;
&lt;br /&gt;
In addition to changing the MySQL credentials, if you've also installed AtoM you'll want to set the password for it as well. Note that after changing your AtoM credentials you should update the credentials on the AtoM DIP upload administration page as well.&lt;br /&gt;
&lt;br /&gt;
== Gearman ==&lt;br /&gt;
&lt;br /&gt;
Archivematica relies on the German server for queuing work that needs to be done. Gearman currently doesn't support secured connections so Gearman should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1345 1345].&lt;br /&gt;
&lt;br /&gt;
= Questions =&lt;br /&gt;
&lt;br /&gt;
If you run into any difficulties while administrating Archivematica, please check out our FAQ and, if that doesn't help you, contain us using the Archivematica discussion group.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
* [[AM_FAQ|Solutions to common questions]]&lt;br /&gt;
&lt;br /&gt;
== Discussion group ==&lt;br /&gt;
* [http://groups.google.com/group/archivematica?hl=en Discussion group] for questions not covered by the FAQ&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10027</id>
		<title>Administrator manual 1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10027"/>
		<updated>2014-08-07T22:31:21Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Types of FPR entries */ Add Transcription section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; Administrator manual 1.2&lt;br /&gt;
&lt;br /&gt;
This manual covers administrator-specific instructions for Archivematica. It will also provide help for using forms in the Administration tab of the Archivematica dashboard and the administrator capabilities in the Format Policy Registry (FPR), which you will find in the Preservation planning tab of the dashboard.&lt;br /&gt;
&lt;br /&gt;
For end-user instructions, please see the [[User_manual_1.2|user manual]].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
* [[Installation|Instructions for installing the latest build of Archivematica on your server]]&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
Currently, Archivematica does not support upgrading from one version to the next. A re-install is required. After re-installing, you can restore Archivematica's knowledge of your AIPs, by [[#Rebuilding_the_AIP_index|rebuilding the AIP index]] and, if you have transfers stored in the backlog, [[#Rebuilding_the_transfer_index|rebuilding the transfer index]].&lt;br /&gt;
&lt;br /&gt;
= Storage service =&lt;br /&gt;
The Archivematica Storage Service allows the configuration of storage spaces associated with multiple Archivematica pipelines.  It allows a storage administrator to configure what storage is available to each Archivematica installation, both locally and remote.&lt;br /&gt;
&lt;br /&gt;
[[File:SS1-0.png|700px|center|thumb|Home page of Storage Service]]&lt;br /&gt;
&lt;br /&gt;
TODO Discuss how spaces and locations fit into each other, pipelines fit to locations, spaces=config, locations=purpose, packages in locations&lt;br /&gt;
&lt;br /&gt;
== Archivematica Configuration ==&lt;br /&gt;
&lt;br /&gt;
When installing Archivematica, options to configure it with the Storage Service will be presented.&lt;br /&gt;
&lt;br /&gt;
[[File:Install3.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
If you have installed the Storage Service at a different URL, you may change that here. &lt;br /&gt;
&lt;br /&gt;
The top button 'Use default transfer source &amp;amp; AIP storage locations' will attempt to automatically configure default Locations for Archivematica, register a new Pipeline, and generate an error if the Storage Service is not available.  Use this option if you want the Storage Service to automatically set up the configured default values.&lt;br /&gt;
&lt;br /&gt;
The bottom button 'Register this pipeline &amp;amp;amp; set up transfer source and AIP storage locations' will only attempt to register a new Pipeline with the Storage Service, and will not error if not Storage Service can be found.  It will also open a link to the provided Storage Service URL, so that Locations can be configured manually.  Use this option if the default values not desired, or the Storage Service is not running yet.  Locations will have to be configured manually before any Transfers can be processed, or AIPs stored.&lt;br /&gt;
&lt;br /&gt;
If the Storage Service is running, the URL to it should be entered, and Archivematica will attempt to register its dashboard UUID as a new Pipeline.  Otherwise, the dashboard UUID is displayed, and a Pipeline for this Archivematica instance can be manually created and configured. The dashboard UUID is also available in Archivematica under Administration -&amp;gt; General. &lt;br /&gt;
&lt;br /&gt;
=== Change the port in the web server configuration === &lt;br /&gt;
&lt;br /&gt;
The storage services uses nginx by default, so you can edit /etc/nginx/sites-enabled/storage and change the line that says&lt;br /&gt;
&lt;br /&gt;
listen 8000;&lt;br /&gt;
&lt;br /&gt;
change 8000 to whatever port you prefer to use. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that in a default installation of Archivematica 1.0, the dashboard is running in Apache on port 80.  So it is not possible to make nginx run on port 80 on the same machine.  If you install the storage service on its own server, you can set it to use port 80. &lt;br /&gt;
&lt;br /&gt;
Make sure to adjust the dashboard UUID in the Archivematica dashboard under Administration -&amp;gt; General.&lt;br /&gt;
&lt;br /&gt;
== Spaces ==&lt;br /&gt;
[[File:Spaces.png|600px|center]]&lt;br /&gt;
A storage Space contains all the information necessary to connect to the physical storage.  It is where protocol-specific information, like an NFS export path and hostname, or the username of a system accessible only via SSH, is stored.  All locations must be contained in a space.&lt;br /&gt;
&lt;br /&gt;
A space is usually the immediate parent of the Location folders.  For example, if you had transfer source locations at &amp;lt;tt&amp;gt;/home/artefactual/archivematica-sampledata-2013-10-10-09-17-20&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/home/artefactual/maildir_transfers&amp;lt;/tt&amp;gt;, the Space's path would be &amp;lt;tt&amp;gt;/home/artefactual/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently supported protocols are local filesystem, NFS, and pipeline local filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Local Filesystem spaces handle storage that is available locally on the machine running the storage service.  Typically this is the hard drive, SSD or raid array attached to the machine, but it could also encompass remote storage that has already been mounted.  For remote storage that has been locally mounted, we recommend using a more specific Space if one is available.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the Space on the local filesystem&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
=== NFS ===&lt;br /&gt;
&lt;br /&gt;
NFS spaces are for NFS exports mounted on the Storage Service server, and the Archivematica pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path the space is mounted at on the filesystem local to the storage service&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the remote computer exporting the NFS mount.&lt;br /&gt;
* ''Remote path'': Export path on the NFS server&lt;br /&gt;
* ''Version'': nfs or nfs4 - as would be passed to the &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
* ''Manually Mounted'': Check this if it has been mounted already.  Otherwise, the Storage Service will try to mount it. ''Note: this feature is not yet available.''&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Pipeline Local Filesystems refer to the storage that is local to the Archivematica pipeline, but remote to the storage service.  For this Space to work properly, passwordless SSH must be set up between the Storage Service host and the Archivematica host.&lt;br /&gt;
&lt;br /&gt;
For example, the storage service is hosted on &amp;lt;tt&amp;gt;storage_service_host&amp;lt;/tt&amp;gt; and Archivematica is running on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt; .  The transfer sources for Archivematica are stored locally on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt;, but the storage service needs access to them.  The Space for that transfer source would be a Pipeline Local Filesystem.&lt;br /&gt;
&lt;br /&gt;
'''Note: Passwordless SSH must be set up between the Storage Service host and the computer Archivematica is running on.'''&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the space on the remote machine.&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the computer running Archivematica.  Should be SSH accessible from the Storage Service computer.&lt;br /&gt;
* ''Remote user'': Username on the remote host&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
[[File:Locations.png|600px|center]]&lt;br /&gt;
A storage Location is contained in a Space, and knows its purpose in the Archivematica system.  A Location is also where Packages are stored.  Each Location is associated with a pipeline and can only be accessed by that pipeline.&lt;br /&gt;
&lt;br /&gt;
Currently, a Location can have one of three purposes: Transfer Source, Currently Processing, or AIP Storage.  Transfer source locations display in Archivematica's Transfer tab, and any folder in a transfer source can be selected to become a Transfer.  AIP storage locations are where the completed AIPs are put for long-term storage.  During processing, Archivematica uses the currently processing location associated with that pipeline.  Only one currently processing location should be associated with a given pipeline.  If you want the same directory on disk to have multiple purposes, multiple Locations with different purposes can be created.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Purpose'': What use the Location is for&lt;br /&gt;
* ''Pipeline'': Which pipelines this location is available to.&lt;br /&gt;
* ''Relative Path'': Path to this Location, relative to the space that contains it.&lt;br /&gt;
* ''Description'': Description of the Location to be displayed to the user.&lt;br /&gt;
* ''Quota'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Enabled'': If checked, this location is accessible to pipelines associated with it.  If unchecked, it will not show up to any pipeline.&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
[[File:Pipelines.png|600px|center]]&lt;br /&gt;
A pipeline is an Archivematica instance registered with the Storage Service, including the server and all associated clients.  Each pipeline is uniquely identified by a UUID, which can be found in the dashboard under Administration -&amp;gt; General Configuration.  When installing Archivematica, it will attempt to register its UUID with the Storage Service, with a description of &amp;quot;Archivematica on &amp;lt;hostname&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''UUID'': Unique identifier of the Archivematica pipeline&lt;br /&gt;
* ''Description'': Description of the pipeline displayed to the user.  e.g. Sankofa demo site&lt;br /&gt;
* ''Enabled'': If checked, this pipeline can access locations associate with it.  If unchecked, all locations will be disabled, even if associated.&lt;br /&gt;
* ''Default Locations'': If checked, the default locations configured in Administration -&amp;gt; Configuration will be created or associated with the new pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
[[File:Packages.png|600px|center]]&lt;br /&gt;
A Package is a file that Archivematica has stored in the Storage Service, commonly an Archival Information Package (AIP).  They cannot be created or deleted through the Storage Service interface, though a deletion request can be submitted through Archivematica that must be approved or rejected by the storage service administrator. To learn more about deleting an AIP, see [[UM_archival_storage_1.2#Deleting_an_AIP|Deleting an AIP]].&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
[[File:StorageserviceAdmin1.png|600px|center]]&lt;br /&gt;
[[File:StorageserviceAdmin2.png|600px|center]]&lt;br /&gt;
The Administration section manages the users and settings for the Storage Service.&lt;br /&gt;
&lt;br /&gt;
=== Users ===&lt;br /&gt;
&lt;br /&gt;
Only registered users can long into the storage service, and the Users page is where users can be created or modified.&lt;br /&gt;
&lt;br /&gt;
TODO what info means, what admin/active mean, who can edit what&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
Settings control the behavior of the Storage Service.  Default Locations are the created or associated with pipelines when they are created.&lt;br /&gt;
&lt;br /&gt;
'''Pipelines are disabled upon creation?''' sets whether a newly created Pipeline can access its Locations.  If a Pipeline is disabled, it cannot access any of its locations.  By disabling newly created Pipelines, it provides some security against unwanted perusal of the files in Locations, or use by unauthorized Archivematica instances.  This can be configured individually when creating a Pipeline manually through the Storage Service website.&lt;br /&gt;
&lt;br /&gt;
'''Default Locations''' set what existing locations should be associated with a newly created Pipeline, or what new Locations should be created for each new Pipeline.  No matter what is configured here, a Currently Processing location is created for all Pipelines, since one is required.  Multiple Transfer Source or AIP Storage Locations can be configured by holding down Ctrl when selecting them.  New Locations in an existing Space can be created for Pipelines that use default locations by entering the relevant information.&lt;br /&gt;
&lt;br /&gt;
== How to Configure a Location ==&lt;br /&gt;
&lt;br /&gt;
For Spaces of the type &amp;quot;Local Filesystem,&amp;quot; Locations are basically directories (or more accurately, paths to directories). You can create Locations for Transfer Source, Currently Processing, or AIP Storage directories.&lt;br /&gt;
&lt;br /&gt;
To create and configure a new Location:&lt;br /&gt;
&lt;br /&gt;
# In the Storage Service, click on the &amp;quot;Spaces&amp;quot; tab.&lt;br /&gt;
# Under the Space that you want to add the Location to, click on the &amp;quot;Create Location here&amp;quot; link.&lt;br /&gt;
# Choose a purpose (e.g. AIP Storage) and pipeline, and enter a &amp;quot;Relative Path&amp;quot; (e.g. var/mylocation) and human-readable description. The Relative Path is relative to the Path defined in the Space you are adding the Location to, e.g. for the default Space, the Path is '/' so your Location path would be relative to that (in the example here, the complete path would end up being '/var/mylocation'). Note: if the path you are defining in your Location doesn't exist, you must create it manually and make sure it is writable by the archivematica user.&lt;br /&gt;
# Save the Location settings.&lt;br /&gt;
# The new location will now be available as an option under the appropriate options in the Dashboard, for example as a Transfer location (which must be enabled under the Dashboard &amp;quot;Administration&amp;quot; tab) or as a destination for AIP storage.&lt;br /&gt;
&lt;br /&gt;
== Store DIP ==&lt;br /&gt;
&lt;br /&gt;
= Dashboard administration tab =&lt;br /&gt;
&lt;br /&gt;
The Archivematica administration pages, under the Administration tab of the dashboard, allows you to configure application components and manage users.&lt;br /&gt;
&lt;br /&gt;
== Processing configuration ==&lt;br /&gt;
&lt;br /&gt;
When processing a SIP or transfer, you may want to automate some of the workflow choices. Choices can be preconfigured by putting a 'processingMCP.xml' file into the root directory of a SIP/transfer.&lt;br /&gt;
&lt;br /&gt;
If a SIP or transfer is submitted with a 'processingMCP.xml' file, processing decisions will be made with the included file.&lt;br /&gt;
&lt;br /&gt;
The XML file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;processingMCP&amp;gt;&lt;br /&gt;
  &amp;lt;preconfiguredChoices&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Send to quarantine? --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;755b4177-c587-41a7-8c52-015277568302&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;d4404ab1-dc7f-4e9e-b1f8-aa861e766b8e&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Display metadata reminder --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;eeb23509-57e2-4529-8857-9d62525db048&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;5727faac-88af-40e8-8c10-268644b0142d&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Remove from quarantine --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;19adb668-b19a-4fcb-8938-f49d7485eaf3&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;333643b7-122a-4019-8bef-996443f3ecc5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
      &amp;lt;delay unitCtime=&amp;quot;yes&amp;quot;&amp;gt;2419200.0&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Extract packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;dec97e3c-5598-4b99-b26e-f87a435a6b7f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;01d80b27-4ad1-4bd1-8f8d-f819f18bf685&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Delete extracted packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;f19926dd-8fb5-4c79-8ade-c83f61f55b40&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;85b1e45d-8f98-4cae-8336-72f40e12cbef&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select pre-normalize file format identification command --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;7a024896-c4f7-4808-a240-44c87c762bc5&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;3c1faec7-7e1e-4cdd-b3bd-e2f05f4baa9b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression algorithm --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01d64f58-8295-4b7b-9cab-8f1b153a504f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;9475447c-9889-430c-9477-6287a9574c5b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression level --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01c651cb-c174-4ba4-b985-1d87a44d6754&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;414da421-b83f-4648-895f-a34840e3c3f5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
  &amp;lt;/preconfiguredChoices&amp;gt;&lt;br /&gt;
&amp;lt;/processingMCP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where appliesTo is the UUID associated with the micro-service job presented in the dashboard, and goToChain is the UUID of the desired selection. The default processingMCP.xml file is located at '/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/defaultProcessingMCP.xml'.&lt;br /&gt;
&lt;br /&gt;
The processing configuration administration page of the dashboard provides you with an easy form to configure the default 'processingMCP.xml' that's added to a SIP or transfer if it doesn't already contain one. When you change the options using the web interface the necessary XML will be written behind the scenes.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:ProcessingConfig1-1.png|1000px|center|thumb|Processing configuration form in Administration tab of the dashboard]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
*For the approval (yes/no) steps, the user ticks the box on the left-hand side to make a choice. If the box is not ticked, the approval step will appear in the dashboard.&lt;br /&gt;
*For the other steps, if no actions are selected the choices appear in the dashboard&lt;br /&gt;
*You can select whether or not to send transfers to quarantine (yes/no) and decide how long you'd like them to stay there.&lt;br /&gt;
*You can select whether to extract packages as well as whether to keep and/or delete the extracted objects and/or the package itself.&lt;br /&gt;
*You can approve normalization, sending the AIP to storage, and uploading the DIP without interrupting the workflow in the dashboard.&lt;br /&gt;
*You can pre-select which format identification tool and command to run in both/either transfer and/or ingest to base your normalization upon. &lt;br /&gt;
*You can choose to send a transfer to backlog or to create a SIP every time.&lt;br /&gt;
*You can select to be reminded to add PREMIS event metadata about manual normalization should you choose to use that capability.&lt;br /&gt;
*You can select between 7z using lzma and 7zip using bzip or parallel bzip2 algorithms for AIP compression.&lt;br /&gt;
*For select compression level, the options are as follows:&lt;br /&gt;
**1 - fastest mode&lt;br /&gt;
**3 - fast compression mode&lt;br /&gt;
**5 - normal compression mode&lt;br /&gt;
**7 - maximum compression&lt;br /&gt;
**9 - ultra compression&lt;br /&gt;
*You can select one archival storage location where you will consistently send your AIPs.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
 &lt;br /&gt;
In the general configuration section, you can select interface options and set [[Administrator_manual_1.2#Storage_service|Storage Service]] options for your Archivematica client.&lt;br /&gt;
&lt;br /&gt;
[[File:Generalconfig.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
=== Interface options ===&lt;br /&gt;
&lt;br /&gt;
Here, you can hide parts of the interface that you don't need to use. In particular, you can hide CONTENTdm DIP upload link, AtoM DIP upload link and DSpace transfer type.&lt;br /&gt;
&lt;br /&gt;
=== Storage Service options ===&lt;br /&gt;
&lt;br /&gt;
This is where you'll find the complete URL for the Storage Service. See [[Administrator_manual_1.2#Storage_service|Storage Service]] for more information about this feature.&lt;br /&gt;
&lt;br /&gt;
== Failures ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 includes dashboard failure reporting. &lt;br /&gt;
[[File:FailuresAdmin.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
== Transfer source location ==&lt;br /&gt;
&lt;br /&gt;
Archivematica allows you to start transfers using the operating system's file browser or via a web interface. Source files for transfers, however, can't be uploaded using the web interface: they must exist on volumes accessible to the Archivematica MCP server and configured via the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
When starting a transfer you're required to select one or more directories of files to add to the transfer. &lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;Transfer source locations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP storage locations ==&lt;br /&gt;
&lt;br /&gt;
AIP storage directories are directories in which completed AIPs are stored. Storage directories can be specified in a manner similar to transfer source directories using the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;AIP storage locations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AtoM DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can upload DIPs directly to an [https://www.ica-atom.org/ AtoM] website so the contents can be accessed online. The AtoM DIP upload configuration page is where you specify the details of the AtoM installation you'd like the DIPs uploaded to (and, if using Rsync to transfer the DIP files, Rsync transfer details).&lt;br /&gt;
&lt;br /&gt;
The parameters that you'll most likely want to set are &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;. These parameters, respectively, specify the destination AtoM website's URL, the email address used to log in to the website, and the password used to log in to the website.&lt;br /&gt;
&lt;br /&gt;
AtoM DIP upload can also use [http://en.wikipedia.org/wiki/Rsync Rsync] as a transfer mechanism. Rsync is an open source utility for efficiently transferring files. The &amp;lt;code&amp;gt;rsync-target&amp;lt;/code&amp;gt; parameter is used to specify an Rsync-style target host/directory pairing, &amp;quot;foobar.com:~/dips/&amp;quot; for example. The &amp;lt;code&amp;gt;rsync-command&amp;lt;/code&amp;gt; parameter is used to specify rsync connection options, &amp;quot;ssh -p 22222 -l user&amp;quot; for example. If you are using the rsync option, please see AtoM server configuration below.&lt;br /&gt;
&lt;br /&gt;
To set any parameters for AtoM DIP upload change the values, preserving the existing format they're specified in, in the &amp;quot;Command arguments&amp;quot; field then click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that in AtoM, the sword plugin (Admin --&amp;gt; Plugins --&amp;gt; qtSwordPlugin) must be enabled in order for AtoM to receive uploaded DIPs. Enabling Job scheduling (Admin --&amp;gt; Settings --&amp;gt; Job scheduling) is also recommended.&lt;br /&gt;
&lt;br /&gt;
=== AtoM server configuration ===&lt;br /&gt;
&lt;br /&gt;
This server configuration step is necessary to allow Archivematica to log in to the AtoM server without passwords, and only when the user is deploying the rsync option described above in the AtoM DIP upload section. &lt;br /&gt;
&lt;br /&gt;
To enable sending DIPs from Archivematica to the AtoM server:&lt;br /&gt;
&lt;br /&gt;
Generate SSH keys for the Archivematica user. Leave the passphrase field blank.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo -i -u archivematica&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;/var/lib/archivematica/.ssh/id_rsa.pub&amp;lt;/code&amp;gt; somewhere handy, you will need it later.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to configure the AtoM server so Archivematica can send the DIPs using SSH/rsync. For that purpose, you will create a user called &amp;lt;code&amp;gt;archivematica&amp;lt;/code&amp;gt; and we are going to assign that user a restricted shell with access only to rsync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo apt-get install rssh&lt;br /&gt;
 $ sudo useradd -d /home/archivematica -m -s /usr/bin/rssh archivematica&lt;br /&gt;
 $ sudo passswd -l archivematica&lt;br /&gt;
 $ sudo vim /etc/rssh.conf // Make sure that allowrsync is uncommented!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the SSH key that we generated before:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo mkdir /home/archivematica/.ssh&lt;br /&gt;
 $ chmod 700 /home/archivematica/.ssh/&lt;br /&gt;
 $ sudo vim /home/archivematica/.ssh/authorized_keys // Paste here the contents of id_dsa.pub&lt;br /&gt;
 $ chown -R archivematica:archivematica /home/archivematica&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Archivematica, make sure that you update the &amp;lt;code&amp;gt;--rsync-target&amp;lt;/code&amp;gt; accordingly.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are the parameters that we are passing to the upload-qubit microservice.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to the Administration &amp;gt; Upload DIP page in the dashboard.&lt;br /&gt;
&lt;br /&gt;
Generic parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--url=&amp;quot;http://atom-hostname/index.php&amp;quot; \&lt;br /&gt;
--email=&amp;quot;demo@example.com&amp;quot; \&lt;br /&gt;
--password=&amp;quot;demo&amp;quot; \&lt;br /&gt;
--uuid=&amp;quot;%SIPUUID%&amp;quot; \&lt;br /&gt;
--rsync-target=&amp;quot;archivematica@atom-hostname:/tmp&amp;quot; \&lt;br /&gt;
--debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONTENTdm DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can also upload DIPs to [http://www.contentdm.org/ CONTENTdm] instances. Multiple CONTENTdm destinations may be configured.&lt;br /&gt;
&lt;br /&gt;
For each possible CONTENTdm DIP upload destination, you'll specify a brief description and configuration parameters appropriate for the destination. Paramters include &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; (full path to the CONTENTdm API, including the leading 'http://' or 'https://', for example http://example.com:81/dmwebservices/index.php), &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; (Linux user and group on the CONTENTdm server, not a CONTENTdm username). Note that only &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; is required is you are going to produce CONTENTdm Project Client packages; &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; are also required if you are going to use the &amp;quot;direct upload&amp;quot; option for uploading your DIPs into CONTENTdm.&lt;br /&gt;
&lt;br /&gt;
When changing parameters for a CONTENTdm DIP upload destination simply change the values, preserving the existing format they're specified in. To add an upload destination fill in the form at the bottom of the page with the appropriate values. When you've completed your changes click the &amp;quot;Save&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PREMIS agent ==&lt;br /&gt;
&lt;br /&gt;
The PREMIS agent name and code can be set via the administration interface.&lt;br /&gt;
[[File:Premisagent-10.png|center|900px|thumbs]]&lt;br /&gt;
&lt;br /&gt;
== Rest API ==&lt;br /&gt;
&lt;br /&gt;
In addition to automation using the processingMCP.xml file, Archivematica includes a REST API for automating transfer approval. Using this API, you can create a custom script that copies a transfer to the appropriate directory then uses the &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; command, or some other means, to let Archivematica know that the copy is complete.&lt;br /&gt;
&lt;br /&gt;
=== API keys ===&lt;br /&gt;
&lt;br /&gt;
Use of the REST API requires the use of API keys. An API key is associated with a specific user. To generate an API key for a user:&lt;br /&gt;
&lt;br /&gt;
# Browse to &amp;lt;code&amp;gt;/administration/accounts/list/&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click the &amp;quot;Edit&amp;quot; button for the user you'd like to generate an API key for&lt;br /&gt;
# Click the &amp;quot;Regenerate API key&amp;quot; checkbox&lt;br /&gt;
# Click &amp;quot;Save&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After generating an API key, you can click the &amp;quot;Edit&amp;quot; button for the user and you should see the API key.&lt;br /&gt;
&lt;br /&gt;
=== IP whitelist ===&lt;br /&gt;
&lt;br /&gt;
In addition to creating API keys, you'll need to add the IP of any computer making REST requests to the REST API whitelist. The IP whitelist can be edited in the administration interface at &amp;lt;code&amp;gt;/administration/api/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Approving a transfer ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to approve a transfer. The transfer must first be copied into the appropriate watch directory. To determine the location of the appropriate watch directory, first figure out where the shared directory is from the &amp;lt;code&amp;gt;watchDirectoryPath&amp;lt;/code&amp;gt; value of &amp;lt;code&amp;gt;/etc/archivematica/MCPServer/serverConfig.conf&amp;lt;/code&amp;gt;. Within that directory is a subdirectory &amp;lt;code&amp;gt;activeTransfers&amp;lt;/code&amp;gt;. In this subdirectory are watch directories for the various transfer types.&lt;br /&gt;
&lt;br /&gt;
When using the REST API to approve a transfer, if a transfer type isn't specified, the transfer will be deemed a standard transfer.&lt;br /&gt;
&lt;br /&gt;
'''HTTP Method:''' POST&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: directory name of the transfer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (optional): transfer type [standard|dspace|unzipped bag|zipped bag]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl --data &amp;quot;username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;amp;type=standard&amp;amp;directory=MyTransfer&amp;quot; http://127.0.0.1/api/transfer/approve&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&amp;quot;message&amp;quot;: &amp;quot;Approval successful.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Listing unapproved transfers ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to get a list of unapproved transfers. Each transfer's directory name and type is returned.&lt;br /&gt;
&lt;br /&gt;
'''Method:''' &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl &amp;quot;http://127.0.0.1/api/transfer/unapproved?username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;,&lt;br /&gt;
        &amp;quot;results&amp;quot;: [{&lt;br /&gt;
                &amp;quot;directory&amp;quot;: &amp;quot;MyTransfer&amp;quot;,&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;standard&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
The dashboard provides a simple cookie-based user authentication system using the [https://docs.djangoproject.com/en/1.4/topics/auth/ Django authentication framework]. Access to the dashboard is limited only to logged-in users and a login page will be shown when the user is not recognized. If the application can't find any user in the database, the user creation page will be shown instead, allowing the creation of an administrator account.&lt;br /&gt;
&lt;br /&gt;
Users can be also created, modified and deleted from the Administration tab. Only users who are administrators can create and edit user accounts.&lt;br /&gt;
&lt;br /&gt;
You can add a new user to the system by clicking the &amp;quot;Add new&amp;quot; button on the user administration page. By adding a user you provide a way to access Archivematica using a username/password combination. Should you need to change a user's username or password, you can do so by clicking the &amp;quot;Edit&amp;quot; button, corresponding to the user, on the administration page. Should you need to revoke a user's access, you can click the corresponding &amp;quot;Delete&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== CLI creation of administrative users ===&lt;br /&gt;
&lt;br /&gt;
If you need an additional administrator user one can be created via the command-line, issue the following commands:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py createsuperuser&lt;br /&gt;
&lt;br /&gt;
=== CLI password resetting ===&lt;br /&gt;
&lt;br /&gt;
If you've forgotten the password for your administrator user, or any other user, you can change it via the command-line:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py changepassword &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
Archivematica uses [http://en.wikipedia.org/wiki/PBKDF2 PBKDF2] as the default algorithm to store passwords. This should be sufficient for most users: it's quite secure, requiring massive amounts of computing time to break. However, other algorithms could be used as the following document explains: [https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords How Django stores passwords].&lt;br /&gt;
&lt;br /&gt;
Our plan is to extend this functionality in the future adding groups and granular permissions support.&lt;br /&gt;
&lt;br /&gt;
= Dashboard preservation planning tab =&lt;br /&gt;
&lt;br /&gt;
== Format Policy Registry (FPR) ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to the Format Policy Registry ===&lt;br /&gt;
&lt;br /&gt;
The Format Policy Registry (FPR) is a database which allows Archivematica users to define format policies for handling file formats. A format policy indicates the actions, tools and settings to apply to a file of a particular file format (e.g. conversion to preservation format, conversion to access format). Format policies will change as community standards, practices and tools evolve. Format policies are maintained by Artefactual, who provides a freely-available FPR server hosted at [http://fpr.archivematica.org fpr.archivematica.org]. This server stores structured information about normalization format policies for preservation and access. You can update your local FPR from the FPR server using the UPDATE button in the preservation planning tab of the dashboard. In addition, you can maintain local rules to add new formats or customize the behaviour of Archivematica. The Archivematica dashboard communicates with the FPR server via a REST API. &lt;br /&gt;
&lt;br /&gt;
==== First-time configuration ====&lt;br /&gt;
&lt;br /&gt;
The first time a new Archivematica installation is set up, it will attempt to connect to the FPR server as part of the initial configuration process. As a part of the setup, it will register the Archivematica install with the server and pull down the current set of format policies. In order to register the server, Archivematica will send the following information to the FPR Server, over an encrypted connection:&lt;br /&gt;
&lt;br /&gt;
#Agent Identifier (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#Agent Name (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#IP address of host&lt;br /&gt;
#UUID of Archivematica instance&lt;br /&gt;
#current time&lt;br /&gt;
&lt;br /&gt;
*The only information that will be passed back and forth between Archivematica and the FPR Server would be these format policies - what tool to run when normalizing for a given purpose (access, preservation) when a specific File Identification Tool identifies a specific File Format.  No information about the content that has been run through Archivematica, or any details about the Archivematica installation or configuration would be sent to the FPR Server. &lt;br /&gt;
&lt;br /&gt;
* Because Archivematica is an open source project, it is possible for any organization to conduct a software audit/code review before running Archivematica in a production environment in order to independently verify the information being shared with the FPR Server.  An organization could choose to run a private FPR Server, accessible only within their own network(s), to provide at least a limited version of the benefits of sharing format policies, while guaranteeing a completely self-contained preservation system. This is something that Artefactual is not intending to develop, but anyone is free to extend the software as they see fit, or to hire us or other developers to do so.&lt;br /&gt;
&lt;br /&gt;
=== Updating format policies ===&lt;br /&gt;
&lt;br /&gt;
FPR rules can be updated at any time from within the Preservation Planning tab in Archivematica. Clicking the &amp;quot;update&amp;quot; button will initiate an FPR pull which will bring in any new or altered rules since the last time an update was performed.&lt;br /&gt;
&lt;br /&gt;
=== Types of FPR entries ===&lt;br /&gt;
&lt;br /&gt;
==== Format ====&lt;br /&gt;
&lt;br /&gt;
In the FPR, a &amp;quot;format&amp;quot; is a record representing one or more related ''format versions'', which are records representing a specific file format. For example, the format record for &amp;quot;Graphics Interchange Format&amp;quot; (GIF) is comprised of format versions for both GIF 1987a and 1989a.&lt;br /&gt;
&lt;br /&gt;
When creating a new format version, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Description (required) - Text describing the format. This will be saved in METS files.&lt;br /&gt;
* Version (required) - The version number for this specific format version (not the FPR record). For example, for Adobe Illustrator 14 .ai files, you might choose &amp;quot;14&amp;quot;.&lt;br /&gt;
* Pronom id - The specific format version's unique identifier in [http://www.nationalarchives.gov.uk/PRONOM/Default.aspx PRONOM], the UK National Archives's format registry. This is optional, but highly recommended.&lt;br /&gt;
* Access format and Preservation format - Indicates whether this format is suitable as an access format for end users, and for preservation.&lt;br /&gt;
&lt;br /&gt;
==== Format Group ====&lt;br /&gt;
&lt;br /&gt;
A format group is a convenient grouping of related file formats which share common properties. For instance, the FPR includes an &amp;quot;Image (raster)&amp;quot; group which contains format records for GIF, JPEG, and PNG. Each format can belong to one (and only one) format group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Characterization ====&lt;br /&gt;
Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization micro-service always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is fully customizable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
===== Characterization tools =====&lt;br /&gt;
&lt;br /&gt;
Archivematica has four default characterization tools upon installation. Which tool will run on a given file depends on the type of file, as determined by the selected identification tool.&lt;br /&gt;
&lt;br /&gt;
====== Default ======&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
====== Multimedia ======&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduced three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
===== Writing a new characterization command =====&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.2#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Extraction ====&lt;br /&gt;
&lt;br /&gt;
Archivematica supports extracting contents from files during the transfer phase.&lt;br /&gt;
&lt;br /&gt;
Many transfers contain files which are packages of other files; examples of these include compressed archives, such as ZIP files, or disk images. Archivematica provides a transcription microservice which comes with several predefined rules to extract packages, and which is fully customizeable by Archivematica administrators. Administrators can write new commands, and assign existing formats to run for other file formats.&lt;br /&gt;
&lt;br /&gt;
===== Writing a new extraction command =====&lt;br /&gt;
&lt;br /&gt;
Writing an extraction command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
An extraction command is passed two arguments: the ''file to extract'', and the ''path to which the package should be extracted''. Similar to [[Administrator_manual_1.2#Normalization Command|normalization commands]], these arguments will be interpolated directly into &amp;quot;bashScript&amp;quot; and &amp;quot;command&amp;quot; scripts, and passed as positional arguments to &amp;quot;pythonScript&amp;quot; and &amp;quot;asIs&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline position (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||First||The full path to the directory in which the package's contents should be extracted||/path/to/filename-uuid/&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||Second||The full path to the package file||/path/to/filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here's a simple example of how to call an existing tool (7-zip) without any extra logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;7z x -bd -o&amp;quot;%outputDirectory%&amp;quot; &amp;quot;%inputFile%&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Python script example is more complex, and attempts to determine whether any files were extracted in order to determine whether to exit 0 or 1 (and report success or failure):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def extract(package, outdir):&lt;br /&gt;
    # -a extracts only allocated files; we're not capturing unallocated files&lt;br /&gt;
    try:&lt;br /&gt;
        process = subprocess.Popen(['tsk_recover', package, '-a', outdir],&lt;br /&gt;
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)&lt;br /&gt;
        stdout, stderr = process.communicate()&lt;br /&gt;
&lt;br /&gt;
        match = re.match(r'Files Recovered: (\d+)', stdout.splitlines()[0])&lt;br /&gt;
        if match:&lt;br /&gt;
            if match.groups()[0] == '0':&lt;br /&gt;
                raise Exception('tsk_recover failed to extract any files with the message: {}'.format(stdout))&lt;br /&gt;
            else:&lt;br /&gt;
                print(stdout)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        return e&lt;br /&gt;
&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main(package, outdir):&lt;br /&gt;
    return extract(package, outdir)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    package = sys.argv[1]&lt;br /&gt;
    outdir = sys.argv[2]&lt;br /&gt;
    sys.exit(main(package, outdir))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transcription ====&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduces a new transcription microservice. This microservice provides tools to transcribe the contents of media objects. In Archivematica 1.2 it is used to perform OCR on images of textual material, but it can also be used to create commands which perform other kinds of transcription.&lt;br /&gt;
&lt;br /&gt;
===== Writing transcription commands =====&lt;br /&gt;
&lt;br /&gt;
Writing a transcription command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
Transcription commands are expected to write their data to disk inside the SIP. For commands which perform OCR, metadata can be placed inside the &amp;quot;metadata/OCRfiles&amp;quot; directory inside the SIP; other kinds of transcription should produce files within &amp;quot;metadata&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For example, the following bash script is used by Archivematica to transcribe images using the [https://code.google.com/p/tesseract-ocr/ Tesseract] software:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ocrfiles=&amp;quot;%SIPObjectsDirectory%metadata/OCRfiles&amp;quot;&lt;br /&gt;
test -d &amp;quot;$ocrfiles&amp;quot; || mkdir -p &amp;quot;$ocrfiles&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tesseract %fileFullName% &amp;quot;$ocrfiles/%fileName%&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Identification ====&lt;br /&gt;
&lt;br /&gt;
===== Identification Tools =====&lt;br /&gt;
&lt;br /&gt;
The identification tool properties in Archivematica control the ways in which Archivematica identifies files and associates them with the FPR's version records. The current version of the FPR server contains two tools: a script based on the [http://www.openplanetsfoundation.org/ Open Planets Foundation's] [https://github.com/openplanets/fido/ FIDO] tool, which identifies based on the IDs in PRONOM, and a simple script which identifies files by their file extension. You can use the identification tools portion of FPR to customize the behaviour of the existing tools, or to write your own.&lt;br /&gt;
&lt;br /&gt;
===== Identification Commands =====&lt;br /&gt;
&lt;br /&gt;
Identification commands contain the actual code that a tool will run when identifying a file. This command will be run on every file in a transfer.&lt;br /&gt;
&lt;br /&gt;
When adding a new command, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Identifier (mandatory) - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Script type (mandatory) - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
&lt;br /&gt;
When coding a command, you should expect your script to take the path to the file to be identifed as the first commandline argument. When returning an identification, the tool should print a single line containing ''only'' the identifier, and should exit 0. Any informative, diagnostic, and error message can be printed to stderr, where it will be visible to Archivematica users monitoring tool results. On failure, the tool should exit non-zero.&lt;br /&gt;
&lt;br /&gt;
===== Identification Rules =====&lt;br /&gt;
&lt;br /&gt;
These identification rules allow you to define the relationship between the output created by an identification tool, and one of the formats which exists in the FPR. This must be done for the format to be tracked internally by Archivematica, and for it to be used by normalization later on. For instance, if you created a FIDO configuration which returns MIME types, you could create a rule which associates the output &amp;quot;image/jpeg&amp;quot; with the &amp;quot;Generic JPEG&amp;quot; format in the FPR.&lt;br /&gt;
&lt;br /&gt;
Identification rules are necessary only when a tool is configured to return file extensions or MIME types. Because PUIDs are universal, Archivematica will always look these up for you without requiring any rules to be created, regardless of what tool is being used.&lt;br /&gt;
&lt;br /&gt;
When creating an identification rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Format - Allows you to select one of the formats which already exists in the FPR.&lt;br /&gt;
* Command - Indicates the command that produces this specific identification.&lt;br /&gt;
* Output - The text which is written to standard output by the specified command, such as &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Format Policy Tools ====&lt;br /&gt;
&lt;br /&gt;
Format policy tools control how Archivematica processes files during ingest. The most common kind of these tools are normalization tools, which produce preservation and access copies from ingested files. Archivematica comes configured with a number of commands and scripts to normalize several file formats, and you can use this section of the FPR to customize them or to create your own. These are organized similarly to the [[#Identification Tools]] documented above.&lt;br /&gt;
&lt;br /&gt;
Archivematica uses the following kinds of format policy rules:&lt;br /&gt;
&lt;br /&gt;
* Characterization&lt;br /&gt;
* Extraction&lt;br /&gt;
* Normalization - Access, preservation and thumbnails&lt;br /&gt;
* Event detail - Extracts information about a given tool in order to be inserted into a generated METS file.&lt;br /&gt;
* Transcription&lt;br /&gt;
* Verification - Validates a file produced by another command. For instance, a tool could use Exiftool or JHOVE to determine whether a thumbnail produced by a normalization command was valid and well-formed.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Commands ===&lt;br /&gt;
&lt;br /&gt;
Like the [[#Identification Commands]] above, format policy commands are scripts or command line statements which control how a normalization tool runs. This command will be run once on every file being normalized using this tool in a transfer.&lt;br /&gt;
&lt;br /&gt;
When creating a normalization command, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Tool - One or more tools to be associated with this command.&lt;br /&gt;
* Description - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Command - The script's source, or the commandline statement to execute.&lt;br /&gt;
* Script type - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
* Output format (optional) - The format the command outputs. For example, a command to normalize audio to MP3 using ffmpeg would select the appropriate MP3 format from the dropdown.&lt;br /&gt;
* Output location (optional) - The path the normalized file will be written to. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Command usage - The purpose of the command; this will be used by Archivematica to decide whether a command is appropriate to run in different circumstances. Values are &amp;quot;Normalization&amp;quot;, &amp;quot;Event detail&amp;quot;, and &amp;quot;Verification&amp;quot;. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Event detail command - A command to provide information about the software running this command. This will be written to the METS file as the &amp;quot;event detail&amp;quot; property. For example, the normalization commands which use ffmpeg use an event detail command to extract ffmpeg's version number.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Rules ===&lt;br /&gt;
&lt;br /&gt;
Format policy rules allow commands to be associated with specific file types. For instance, this allows you to configure the command that uses ImageMagick to create thumbnails to be run on .gif and .jpeg files, while selecting a different command to be run on .png files.&lt;br /&gt;
&lt;br /&gt;
When creating a format policy rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Purpose - Allows Archivematica to distinguish rules that should be used to normalize for preservation, normalize for access, to extract information, etc.&lt;br /&gt;
* Format - The file format the associated command should be selected for.&lt;br /&gt;
* Command - The specific command to call when this rule is used.&lt;br /&gt;
&lt;br /&gt;
=== Writing a command ===&lt;br /&gt;
&lt;br /&gt;
==== Identification command ====&lt;br /&gt;
&lt;br /&gt;
Identification commands are very simple to write, though they require some familiarity with Unix scripting.&lt;br /&gt;
&lt;br /&gt;
An identification command run once for every file in a transfer. It will be passed a single argument (the path to the file to identify), and no switches.&lt;br /&gt;
&lt;br /&gt;
On success, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print the identifier to stdout&lt;br /&gt;
* Exit 0&lt;br /&gt;
&lt;br /&gt;
On failure, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print nothing to stdout&lt;br /&gt;
* Exit non-zero (Archivematica does not assign special significance to non-zero exit codes)&lt;br /&gt;
&lt;br /&gt;
A command can print anything to stderr on success or error, but this is purely informational - Archivematica won't do anything special with it. Anything printed to stderr by the command will be shown to the user in the Archivematica dashboard's detailed tool output page. You should print any useful error output to stderr if identification fails, but you can also print any useful extra information to stderr if identification succeeds.&lt;br /&gt;
&lt;br /&gt;
Here's a very simple Python script that identifies files by their file extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import os.path, sys&lt;br /&gt;
(_, extension) = os.path.splitext(sys.argv[1])&lt;br /&gt;
if len(extension) == 0:&lt;br /&gt;
	exit(1)&lt;br /&gt;
else:&lt;br /&gt;
	print extension.lower()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's a more complex Python example, which uses [http://www.sno.phy.queensu.ca/~phil/exiftool/ Exiftool]'s XML output to return the MIME type of a file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from lxml import etree&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    xml = subprocess.check_output(['exiftool', '-X', sys.argv[1]])&lt;br /&gt;
    doc = etree.fromstring(xml)&lt;br /&gt;
    print doc.find('.//{http://ns.exiftool.ca/File/1.0/}MIMEType').text&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, e&lt;br /&gt;
    exit(1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've written an identification command, you can register it in the FPR using the following steps:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for the command itself:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Command&amp;quot;.&lt;br /&gt;
# Select your tool from the &amp;quot;Tool&amp;quot; dropdown box.&lt;br /&gt;
# Fill out the Identifier with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Identify MIME-type using Exiftool&amp;quot;.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Enter the source code for your script in the &amp;quot;Command&amp;quot; box.&lt;br /&gt;
# Click &amp;quot;Create Command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which associate the possible outputs of your tool with the FPR's format records. This needs to be done once for every supported format; we'll show it with MP3, as an example.&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Identification Rules&amp;quot; page, and click &amp;quot;Create New Rule&amp;quot;.&lt;br /&gt;
# Choose the appropriate foramt from the Format dropdown - in our case, &amp;quot;Audio: MPEG Audio: MPEG 1/2 Audio Layer 3&amp;quot;.&lt;br /&gt;
# Choose your command from the Command dropdown.&lt;br /&gt;
# Enter the text your command will output when it identifies this format. For example, when our Exiftool command identifies an MP3 file, it will output &amp;quot;audio/mpeg&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this is complete, any new transfers you create will be able to use your new tool in the identification step.&lt;br /&gt;
&lt;br /&gt;
==== Normalization Command ====&lt;br /&gt;
&lt;br /&gt;
Normalization commands are a bit more complex to write because they take a few extra parameters.&lt;br /&gt;
&lt;br /&gt;
The goal of a normalization command is to take an input file and transform it into a new format. For instance, Archivematica provides commands to transform video content into FFV1 for preservation, and into H.264 for access.&lt;br /&gt;
&lt;br /&gt;
Archivematica provides several parameters specifying input and output filenames and other useful information. Several of the most common are shown in the examples below; a more complete list is in a later section of the documentation: [[#Normalization command variables and arguments]]&lt;br /&gt;
&lt;br /&gt;
When writing a bash script or a command line, you can reference the variables directly in your code, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;inkscape -z &amp;quot;%fileFullName%&amp;quot; --export-pdf=&amp;quot;%outputDirectory%%prefix%%fileName%%postfix%.pdf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When writing a script in Python or other languages, the values will be passed to your script as commandline options, which you will need to parse. The following script provides an example using the argparse module that comes with Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import argparse&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument('--file-full-name', dest='filename')&lt;br /&gt;
parser.add_argument('--output-file-name', dest='output')&lt;br /&gt;
parsed, _ = parser.parse_known_args()&lt;br /&gt;
args = [&lt;br /&gt;
    'ffmpeg', '-vsync', 'passthrough',&lt;br /&gt;
    '-i', parsed.filename,&lt;br /&gt;
    '-map', '0:v', '-map', '0:a',&lt;br /&gt;
    '-vcodec', 'ffv1', '-g', '1',&lt;br /&gt;
    '-acodec', 'pcm_s16le',&lt;br /&gt;
    parsed.output+'.mkv'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
subprocess.call(args)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've created a command, the process of registering it is similar to creating a new identification tool. The folling examples will use the Python normalization script above.&lt;br /&gt;
&lt;br /&gt;
First, create a new tool record:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for your new command:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Tool Command&amp;quot;.&lt;br /&gt;
# Fill out the Description with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Normalize to mkv using ffmpeg&amp;quot;.&lt;br /&gt;
# Enter the source for your command in the Command textbox.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Select the appropriate output format from the dropdown. This indicates to Archivematica what kind of file this command will produce. In this case, choose &amp;quot;Video: Matroska: Generic MKV&amp;quot;.&lt;br /&gt;
# Enter the location the video will be saved to, using the script variables. You can usually use the &amp;quot;%outputFileName%&amp;quot; variable, and add the file extension - in this case &amp;quot;%outputFileName%.mkv&amp;quot;&lt;br /&gt;
# Select a verification command. Archivematica will try to use this tool to ensure that the file your command created works. Archivematica ships with two simple tools, which test whether the file exists and whether it's larger than 0 bytes, but you can create new commands that perform more complicated verifications.&lt;br /&gt;
# Finally, choose a command to produce the &amp;quot;Event detail&amp;quot; text that will be written in the section of the METS file covering the normalization event. Archivematica already includes a suitable command for ffmpeg, but you can also create a custom command.&lt;br /&gt;
# Click &amp;quot;Create command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which will associate your command with the formats it should run on.&lt;br /&gt;
&lt;br /&gt;
==== Normalization command variables and arguments ====&lt;br /&gt;
&lt;br /&gt;
The following variables and arguments control the behaviour of format policy command scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline option (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%fileName%||--input-file=||The filename of the file to process. This variable holds the file's basename, not the whole path.||video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileDirectory%||--file-directory=||The directory containing the input file.||/path/to&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||--file-name=||The fully-qualified path to the file to process.||/path/to/video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtension%||--file-extension=||The file extension of the input file.||mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtensionWithDot%||--file-extension-with-dot=||As above, without stripping the period.||.mov&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The directory to which the output file should be saved.||/path/to/access/copies&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileUUID%||--output-file-uuid=||The unique identifier assigned by Archivematica to the output file.||1abedf3e-3a4b-46d7-97da-bd9ae13859f5&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The fully-qualified path to the directory where the new file should be written.||/var/archivematica/sharedDirectory/www/AIPsStore/uuid&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileName%||--output-file-name=||The fully-qualified path to the output file, minus the file extension.||/path/to/access/copies/video-uuid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customization and automation =&lt;br /&gt;
* Workflow processing decisions can be made in the processingMCP.xml file. [https://www.archivematica.org/wiki/Administrator_manual_0.10#Processing_configuration See here.]&lt;br /&gt;
* Workflows are currently created at the development level. &lt;br /&gt;
*: Some resources avialable&lt;br /&gt;
*:* [[MCP_Basic_Configuration]]&lt;br /&gt;
*:* [[MCP]]&lt;br /&gt;
*:* [[Creating_Custom_Workflows]]&lt;br /&gt;
*:* [[Development]]&lt;br /&gt;
* Normalization commands can be viewed in the preservation planning tab.&lt;br /&gt;
* Normalization paths and commands are currently editable under the preservation planning tab in the dashboard.&lt;br /&gt;
&lt;br /&gt;
= Elasticsearch =&lt;br /&gt;
&lt;br /&gt;
Archivematica has the capability of indexing data about files contained in AIPs and this data can be [[Elasticsearch Development|accessed programatically]] for various applications.&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an ElasticSearch index please see [[ElasticSearch Administration]].&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an Elasticsearch index programmatically, this can be done with pyes using the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    conn.delete_index('aips')&lt;br /&gt;
except:&lt;br /&gt;
    print &amp;quot;Error deleting index or index already deleted.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the AIP index ===&lt;br /&gt;
&lt;br /&gt;
To rebuild the ElasticSearch AIP index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-aip-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-aip-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-aip-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the transfer index ===&lt;br /&gt;
&lt;br /&gt;
Similarly, to rebuild the ElasticSearch transfer data index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-transfer-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-transfer-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-transfer-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Data backup =&lt;br /&gt;
&lt;br /&gt;
In Archivematica there are three types of data you'll likely want to back up:&lt;br /&gt;
* Filesystem (particularly your storage directories)&lt;br /&gt;
* MySQL&lt;br /&gt;
* ElasticSearch&lt;br /&gt;
&lt;br /&gt;
MySQL is used to store short-term processing data. You can back up the MySQL database by using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mysqldump -u &amp;lt;your username&amp;gt; -p&amp;lt;your password&amp;gt; -c MCP &amp;gt; &amp;lt;filename of backup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ElasticSearch is used to store long-term data. Instructions and scripts for backing up and restoring ElasticSearch are available [http://tech.superhappykittymeow.com/?p=296 here].&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
Once you've set up Archivematica it's a good practice, for the sake of security, to change the default passwords.&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
You should create a new MySQL user or change the password of the default &amp;quot;archivematica&amp;quot; MySQL user. The change the password of the default user, enter the following into the command-line:&lt;br /&gt;
&lt;br /&gt;
 $ mysql -u root -p&amp;lt;your MyQL root password&amp;gt; -D mysql \&lt;br /&gt;
    -e &amp;quot;SET PASSWORD FOR 'archivematica'@'localhost' = PASSWORD('&amp;lt;new password&amp;gt;'); \&lt;br /&gt;
    FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you've done this you can change Archivematica's MySQL database access credentials by editing these two files:&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/archivematica/archivematicaCommon/dbsettings&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; settings)&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/share/archivematica/dashboard/settings/common.py&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; settings in the &amp;lt;code&amp;gt;DATABASES&amp;lt;/code&amp;gt; section)&lt;br /&gt;
&lt;br /&gt;
Archivematica does not presently support secured MySQL communication so MySQL should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1645 1645].&lt;br /&gt;
&lt;br /&gt;
== AtoM ==&lt;br /&gt;
&lt;br /&gt;
In addition to changing the MySQL credentials, if you've also installed AtoM you'll want to set the password for it as well. Note that after changing your AtoM credentials you should update the credentials on the AtoM DIP upload administration page as well.&lt;br /&gt;
&lt;br /&gt;
== Gearman ==&lt;br /&gt;
&lt;br /&gt;
Archivematica relies on the German server for queuing work that needs to be done. Gearman currently doesn't support secured connections so Gearman should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1345 1345].&lt;br /&gt;
&lt;br /&gt;
= Questions =&lt;br /&gt;
&lt;br /&gt;
If you run into any difficulties while administrating Archivematica, please check out our FAQ and, if that doesn't help you, contain us using the Archivematica discussion group.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
* [[AM_FAQ|Solutions to common questions]]&lt;br /&gt;
&lt;br /&gt;
== Discussion group ==&lt;br /&gt;
* [http://groups.google.com/group/archivematica?hl=en Discussion group] for questions not covered by the FAQ&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10026</id>
		<title>Administrator manual 1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10026"/>
		<updated>2014-08-07T22:10:25Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: /* Types of FPR entries */ Indent Identification by an extra header level&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; Administrator manual 1.2&lt;br /&gt;
&lt;br /&gt;
This manual covers administrator-specific instructions for Archivematica. It will also provide help for using forms in the Administration tab of the Archivematica dashboard and the administrator capabilities in the Format Policy Registry (FPR), which you will find in the Preservation planning tab of the dashboard.&lt;br /&gt;
&lt;br /&gt;
For end-user instructions, please see the [[User_manual_1.2|user manual]].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
* [[Installation|Instructions for installing the latest build of Archivematica on your server]]&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
Currently, Archivematica does not support upgrading from one version to the next. A re-install is required. After re-installing, you can restore Archivematica's knowledge of your AIPs, by [[#Rebuilding_the_AIP_index|rebuilding the AIP index]] and, if you have transfers stored in the backlog, [[#Rebuilding_the_transfer_index|rebuilding the transfer index]].&lt;br /&gt;
&lt;br /&gt;
= Storage service =&lt;br /&gt;
The Archivematica Storage Service allows the configuration of storage spaces associated with multiple Archivematica pipelines.  It allows a storage administrator to configure what storage is available to each Archivematica installation, both locally and remote.&lt;br /&gt;
&lt;br /&gt;
[[File:SS1-0.png|700px|center|thumb|Home page of Storage Service]]&lt;br /&gt;
&lt;br /&gt;
TODO Discuss how spaces and locations fit into each other, pipelines fit to locations, spaces=config, locations=purpose, packages in locations&lt;br /&gt;
&lt;br /&gt;
== Archivematica Configuration ==&lt;br /&gt;
&lt;br /&gt;
When installing Archivematica, options to configure it with the Storage Service will be presented.&lt;br /&gt;
&lt;br /&gt;
[[File:Install3.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
If you have installed the Storage Service at a different URL, you may change that here. &lt;br /&gt;
&lt;br /&gt;
The top button 'Use default transfer source &amp;amp; AIP storage locations' will attempt to automatically configure default Locations for Archivematica, register a new Pipeline, and generate an error if the Storage Service is not available.  Use this option if you want the Storage Service to automatically set up the configured default values.&lt;br /&gt;
&lt;br /&gt;
The bottom button 'Register this pipeline &amp;amp;amp; set up transfer source and AIP storage locations' will only attempt to register a new Pipeline with the Storage Service, and will not error if not Storage Service can be found.  It will also open a link to the provided Storage Service URL, so that Locations can be configured manually.  Use this option if the default values not desired, or the Storage Service is not running yet.  Locations will have to be configured manually before any Transfers can be processed, or AIPs stored.&lt;br /&gt;
&lt;br /&gt;
If the Storage Service is running, the URL to it should be entered, and Archivematica will attempt to register its dashboard UUID as a new Pipeline.  Otherwise, the dashboard UUID is displayed, and a Pipeline for this Archivematica instance can be manually created and configured. The dashboard UUID is also available in Archivematica under Administration -&amp;gt; General. &lt;br /&gt;
&lt;br /&gt;
=== Change the port in the web server configuration === &lt;br /&gt;
&lt;br /&gt;
The storage services uses nginx by default, so you can edit /etc/nginx/sites-enabled/storage and change the line that says&lt;br /&gt;
&lt;br /&gt;
listen 8000;&lt;br /&gt;
&lt;br /&gt;
change 8000 to whatever port you prefer to use. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that in a default installation of Archivematica 1.0, the dashboard is running in Apache on port 80.  So it is not possible to make nginx run on port 80 on the same machine.  If you install the storage service on its own server, you can set it to use port 80. &lt;br /&gt;
&lt;br /&gt;
Make sure to adjust the dashboard UUID in the Archivematica dashboard under Administration -&amp;gt; General.&lt;br /&gt;
&lt;br /&gt;
== Spaces ==&lt;br /&gt;
[[File:Spaces.png|600px|center]]&lt;br /&gt;
A storage Space contains all the information necessary to connect to the physical storage.  It is where protocol-specific information, like an NFS export path and hostname, or the username of a system accessible only via SSH, is stored.  All locations must be contained in a space.&lt;br /&gt;
&lt;br /&gt;
A space is usually the immediate parent of the Location folders.  For example, if you had transfer source locations at &amp;lt;tt&amp;gt;/home/artefactual/archivematica-sampledata-2013-10-10-09-17-20&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/home/artefactual/maildir_transfers&amp;lt;/tt&amp;gt;, the Space's path would be &amp;lt;tt&amp;gt;/home/artefactual/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently supported protocols are local filesystem, NFS, and pipeline local filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Local Filesystem spaces handle storage that is available locally on the machine running the storage service.  Typically this is the hard drive, SSD or raid array attached to the machine, but it could also encompass remote storage that has already been mounted.  For remote storage that has been locally mounted, we recommend using a more specific Space if one is available.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the Space on the local filesystem&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
=== NFS ===&lt;br /&gt;
&lt;br /&gt;
NFS spaces are for NFS exports mounted on the Storage Service server, and the Archivematica pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path the space is mounted at on the filesystem local to the storage service&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the remote computer exporting the NFS mount.&lt;br /&gt;
* ''Remote path'': Export path on the NFS server&lt;br /&gt;
* ''Version'': nfs or nfs4 - as would be passed to the &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
* ''Manually Mounted'': Check this if it has been mounted already.  Otherwise, the Storage Service will try to mount it. ''Note: this feature is not yet available.''&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Pipeline Local Filesystems refer to the storage that is local to the Archivematica pipeline, but remote to the storage service.  For this Space to work properly, passwordless SSH must be set up between the Storage Service host and the Archivematica host.&lt;br /&gt;
&lt;br /&gt;
For example, the storage service is hosted on &amp;lt;tt&amp;gt;storage_service_host&amp;lt;/tt&amp;gt; and Archivematica is running on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt; .  The transfer sources for Archivematica are stored locally on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt;, but the storage service needs access to them.  The Space for that transfer source would be a Pipeline Local Filesystem.&lt;br /&gt;
&lt;br /&gt;
'''Note: Passwordless SSH must be set up between the Storage Service host and the computer Archivematica is running on.'''&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the space on the remote machine.&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the computer running Archivematica.  Should be SSH accessible from the Storage Service computer.&lt;br /&gt;
* ''Remote user'': Username on the remote host&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
[[File:Locations.png|600px|center]]&lt;br /&gt;
A storage Location is contained in a Space, and knows its purpose in the Archivematica system.  A Location is also where Packages are stored.  Each Location is associated with a pipeline and can only be accessed by that pipeline.&lt;br /&gt;
&lt;br /&gt;
Currently, a Location can have one of three purposes: Transfer Source, Currently Processing, or AIP Storage.  Transfer source locations display in Archivematica's Transfer tab, and any folder in a transfer source can be selected to become a Transfer.  AIP storage locations are where the completed AIPs are put for long-term storage.  During processing, Archivematica uses the currently processing location associated with that pipeline.  Only one currently processing location should be associated with a given pipeline.  If you want the same directory on disk to have multiple purposes, multiple Locations with different purposes can be created.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Purpose'': What use the Location is for&lt;br /&gt;
* ''Pipeline'': Which pipelines this location is available to.&lt;br /&gt;
* ''Relative Path'': Path to this Location, relative to the space that contains it.&lt;br /&gt;
* ''Description'': Description of the Location to be displayed to the user.&lt;br /&gt;
* ''Quota'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Enabled'': If checked, this location is accessible to pipelines associated with it.  If unchecked, it will not show up to any pipeline.&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
[[File:Pipelines.png|600px|center]]&lt;br /&gt;
A pipeline is an Archivematica instance registered with the Storage Service, including the server and all associated clients.  Each pipeline is uniquely identified by a UUID, which can be found in the dashboard under Administration -&amp;gt; General Configuration.  When installing Archivematica, it will attempt to register its UUID with the Storage Service, with a description of &amp;quot;Archivematica on &amp;lt;hostname&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''UUID'': Unique identifier of the Archivematica pipeline&lt;br /&gt;
* ''Description'': Description of the pipeline displayed to the user.  e.g. Sankofa demo site&lt;br /&gt;
* ''Enabled'': If checked, this pipeline can access locations associate with it.  If unchecked, all locations will be disabled, even if associated.&lt;br /&gt;
* ''Default Locations'': If checked, the default locations configured in Administration -&amp;gt; Configuration will be created or associated with the new pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
[[File:Packages.png|600px|center]]&lt;br /&gt;
A Package is a file that Archivematica has stored in the Storage Service, commonly an Archival Information Package (AIP).  They cannot be created or deleted through the Storage Service interface, though a deletion request can be submitted through Archivematica that must be approved or rejected by the storage service administrator. To learn more about deleting an AIP, see [[UM_archival_storage_1.2#Deleting_an_AIP|Deleting an AIP]].&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
[[File:StorageserviceAdmin1.png|600px|center]]&lt;br /&gt;
[[File:StorageserviceAdmin2.png|600px|center]]&lt;br /&gt;
The Administration section manages the users and settings for the Storage Service.&lt;br /&gt;
&lt;br /&gt;
=== Users ===&lt;br /&gt;
&lt;br /&gt;
Only registered users can long into the storage service, and the Users page is where users can be created or modified.&lt;br /&gt;
&lt;br /&gt;
TODO what info means, what admin/active mean, who can edit what&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
Settings control the behavior of the Storage Service.  Default Locations are the created or associated with pipelines when they are created.&lt;br /&gt;
&lt;br /&gt;
'''Pipelines are disabled upon creation?''' sets whether a newly created Pipeline can access its Locations.  If a Pipeline is disabled, it cannot access any of its locations.  By disabling newly created Pipelines, it provides some security against unwanted perusal of the files in Locations, or use by unauthorized Archivematica instances.  This can be configured individually when creating a Pipeline manually through the Storage Service website.&lt;br /&gt;
&lt;br /&gt;
'''Default Locations''' set what existing locations should be associated with a newly created Pipeline, or what new Locations should be created for each new Pipeline.  No matter what is configured here, a Currently Processing location is created for all Pipelines, since one is required.  Multiple Transfer Source or AIP Storage Locations can be configured by holding down Ctrl when selecting them.  New Locations in an existing Space can be created for Pipelines that use default locations by entering the relevant information.&lt;br /&gt;
&lt;br /&gt;
== How to Configure a Location ==&lt;br /&gt;
&lt;br /&gt;
For Spaces of the type &amp;quot;Local Filesystem,&amp;quot; Locations are basically directories (or more accurately, paths to directories). You can create Locations for Transfer Source, Currently Processing, or AIP Storage directories.&lt;br /&gt;
&lt;br /&gt;
To create and configure a new Location:&lt;br /&gt;
&lt;br /&gt;
# In the Storage Service, click on the &amp;quot;Spaces&amp;quot; tab.&lt;br /&gt;
# Under the Space that you want to add the Location to, click on the &amp;quot;Create Location here&amp;quot; link.&lt;br /&gt;
# Choose a purpose (e.g. AIP Storage) and pipeline, and enter a &amp;quot;Relative Path&amp;quot; (e.g. var/mylocation) and human-readable description. The Relative Path is relative to the Path defined in the Space you are adding the Location to, e.g. for the default Space, the Path is '/' so your Location path would be relative to that (in the example here, the complete path would end up being '/var/mylocation'). Note: if the path you are defining in your Location doesn't exist, you must create it manually and make sure it is writable by the archivematica user.&lt;br /&gt;
# Save the Location settings.&lt;br /&gt;
# The new location will now be available as an option under the appropriate options in the Dashboard, for example as a Transfer location (which must be enabled under the Dashboard &amp;quot;Administration&amp;quot; tab) or as a destination for AIP storage.&lt;br /&gt;
&lt;br /&gt;
== Store DIP ==&lt;br /&gt;
&lt;br /&gt;
= Dashboard administration tab =&lt;br /&gt;
&lt;br /&gt;
The Archivematica administration pages, under the Administration tab of the dashboard, allows you to configure application components and manage users.&lt;br /&gt;
&lt;br /&gt;
== Processing configuration ==&lt;br /&gt;
&lt;br /&gt;
When processing a SIP or transfer, you may want to automate some of the workflow choices. Choices can be preconfigured by putting a 'processingMCP.xml' file into the root directory of a SIP/transfer.&lt;br /&gt;
&lt;br /&gt;
If a SIP or transfer is submitted with a 'processingMCP.xml' file, processing decisions will be made with the included file.&lt;br /&gt;
&lt;br /&gt;
The XML file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;processingMCP&amp;gt;&lt;br /&gt;
  &amp;lt;preconfiguredChoices&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Send to quarantine? --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;755b4177-c587-41a7-8c52-015277568302&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;d4404ab1-dc7f-4e9e-b1f8-aa861e766b8e&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Display metadata reminder --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;eeb23509-57e2-4529-8857-9d62525db048&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;5727faac-88af-40e8-8c10-268644b0142d&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Remove from quarantine --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;19adb668-b19a-4fcb-8938-f49d7485eaf3&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;333643b7-122a-4019-8bef-996443f3ecc5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
      &amp;lt;delay unitCtime=&amp;quot;yes&amp;quot;&amp;gt;2419200.0&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Extract packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;dec97e3c-5598-4b99-b26e-f87a435a6b7f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;01d80b27-4ad1-4bd1-8f8d-f819f18bf685&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Delete extracted packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;f19926dd-8fb5-4c79-8ade-c83f61f55b40&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;85b1e45d-8f98-4cae-8336-72f40e12cbef&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select pre-normalize file format identification command --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;7a024896-c4f7-4808-a240-44c87c762bc5&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;3c1faec7-7e1e-4cdd-b3bd-e2f05f4baa9b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression algorithm --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01d64f58-8295-4b7b-9cab-8f1b153a504f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;9475447c-9889-430c-9477-6287a9574c5b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression level --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01c651cb-c174-4ba4-b985-1d87a44d6754&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;414da421-b83f-4648-895f-a34840e3c3f5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
  &amp;lt;/preconfiguredChoices&amp;gt;&lt;br /&gt;
&amp;lt;/processingMCP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where appliesTo is the UUID associated with the micro-service job presented in the dashboard, and goToChain is the UUID of the desired selection. The default processingMCP.xml file is located at '/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/defaultProcessingMCP.xml'.&lt;br /&gt;
&lt;br /&gt;
The processing configuration administration page of the dashboard provides you with an easy form to configure the default 'processingMCP.xml' that's added to a SIP or transfer if it doesn't already contain one. When you change the options using the web interface the necessary XML will be written behind the scenes.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:ProcessingConfig1-1.png|1000px|center|thumb|Processing configuration form in Administration tab of the dashboard]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
*For the approval (yes/no) steps, the user ticks the box on the left-hand side to make a choice. If the box is not ticked, the approval step will appear in the dashboard.&lt;br /&gt;
*For the other steps, if no actions are selected the choices appear in the dashboard&lt;br /&gt;
*You can select whether or not to send transfers to quarantine (yes/no) and decide how long you'd like them to stay there.&lt;br /&gt;
*You can select whether to extract packages as well as whether to keep and/or delete the extracted objects and/or the package itself.&lt;br /&gt;
*You can approve normalization, sending the AIP to storage, and uploading the DIP without interrupting the workflow in the dashboard.&lt;br /&gt;
*You can pre-select which format identification tool and command to run in both/either transfer and/or ingest to base your normalization upon. &lt;br /&gt;
*You can choose to send a transfer to backlog or to create a SIP every time.&lt;br /&gt;
*You can select to be reminded to add PREMIS event metadata about manual normalization should you choose to use that capability.&lt;br /&gt;
*You can select between 7z using lzma and 7zip using bzip or parallel bzip2 algorithms for AIP compression.&lt;br /&gt;
*For select compression level, the options are as follows:&lt;br /&gt;
**1 - fastest mode&lt;br /&gt;
**3 - fast compression mode&lt;br /&gt;
**5 - normal compression mode&lt;br /&gt;
**7 - maximum compression&lt;br /&gt;
**9 - ultra compression&lt;br /&gt;
*You can select one archival storage location where you will consistently send your AIPs.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
 &lt;br /&gt;
In the general configuration section, you can select interface options and set [[Administrator_manual_1.2#Storage_service|Storage Service]] options for your Archivematica client.&lt;br /&gt;
&lt;br /&gt;
[[File:Generalconfig.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
=== Interface options ===&lt;br /&gt;
&lt;br /&gt;
Here, you can hide parts of the interface that you don't need to use. In particular, you can hide CONTENTdm DIP upload link, AtoM DIP upload link and DSpace transfer type.&lt;br /&gt;
&lt;br /&gt;
=== Storage Service options ===&lt;br /&gt;
&lt;br /&gt;
This is where you'll find the complete URL for the Storage Service. See [[Administrator_manual_1.2#Storage_service|Storage Service]] for more information about this feature.&lt;br /&gt;
&lt;br /&gt;
== Failures ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 includes dashboard failure reporting. &lt;br /&gt;
[[File:FailuresAdmin.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
== Transfer source location ==&lt;br /&gt;
&lt;br /&gt;
Archivematica allows you to start transfers using the operating system's file browser or via a web interface. Source files for transfers, however, can't be uploaded using the web interface: they must exist on volumes accessible to the Archivematica MCP server and configured via the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
When starting a transfer you're required to select one or more directories of files to add to the transfer. &lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;Transfer source locations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP storage locations ==&lt;br /&gt;
&lt;br /&gt;
AIP storage directories are directories in which completed AIPs are stored. Storage directories can be specified in a manner similar to transfer source directories using the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;AIP storage locations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AtoM DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can upload DIPs directly to an [https://www.ica-atom.org/ AtoM] website so the contents can be accessed online. The AtoM DIP upload configuration page is where you specify the details of the AtoM installation you'd like the DIPs uploaded to (and, if using Rsync to transfer the DIP files, Rsync transfer details).&lt;br /&gt;
&lt;br /&gt;
The parameters that you'll most likely want to set are &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;. These parameters, respectively, specify the destination AtoM website's URL, the email address used to log in to the website, and the password used to log in to the website.&lt;br /&gt;
&lt;br /&gt;
AtoM DIP upload can also use [http://en.wikipedia.org/wiki/Rsync Rsync] as a transfer mechanism. Rsync is an open source utility for efficiently transferring files. The &amp;lt;code&amp;gt;rsync-target&amp;lt;/code&amp;gt; parameter is used to specify an Rsync-style target host/directory pairing, &amp;quot;foobar.com:~/dips/&amp;quot; for example. The &amp;lt;code&amp;gt;rsync-command&amp;lt;/code&amp;gt; parameter is used to specify rsync connection options, &amp;quot;ssh -p 22222 -l user&amp;quot; for example. If you are using the rsync option, please see AtoM server configuration below.&lt;br /&gt;
&lt;br /&gt;
To set any parameters for AtoM DIP upload change the values, preserving the existing format they're specified in, in the &amp;quot;Command arguments&amp;quot; field then click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that in AtoM, the sword plugin (Admin --&amp;gt; Plugins --&amp;gt; qtSwordPlugin) must be enabled in order for AtoM to receive uploaded DIPs. Enabling Job scheduling (Admin --&amp;gt; Settings --&amp;gt; Job scheduling) is also recommended.&lt;br /&gt;
&lt;br /&gt;
=== AtoM server configuration ===&lt;br /&gt;
&lt;br /&gt;
This server configuration step is necessary to allow Archivematica to log in to the AtoM server without passwords, and only when the user is deploying the rsync option described above in the AtoM DIP upload section. &lt;br /&gt;
&lt;br /&gt;
To enable sending DIPs from Archivematica to the AtoM server:&lt;br /&gt;
&lt;br /&gt;
Generate SSH keys for the Archivematica user. Leave the passphrase field blank.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo -i -u archivematica&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;/var/lib/archivematica/.ssh/id_rsa.pub&amp;lt;/code&amp;gt; somewhere handy, you will need it later.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to configure the AtoM server so Archivematica can send the DIPs using SSH/rsync. For that purpose, you will create a user called &amp;lt;code&amp;gt;archivematica&amp;lt;/code&amp;gt; and we are going to assign that user a restricted shell with access only to rsync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo apt-get install rssh&lt;br /&gt;
 $ sudo useradd -d /home/archivematica -m -s /usr/bin/rssh archivematica&lt;br /&gt;
 $ sudo passswd -l archivematica&lt;br /&gt;
 $ sudo vim /etc/rssh.conf // Make sure that allowrsync is uncommented!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the SSH key that we generated before:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo mkdir /home/archivematica/.ssh&lt;br /&gt;
 $ chmod 700 /home/archivematica/.ssh/&lt;br /&gt;
 $ sudo vim /home/archivematica/.ssh/authorized_keys // Paste here the contents of id_dsa.pub&lt;br /&gt;
 $ chown -R archivematica:archivematica /home/archivematica&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Archivematica, make sure that you update the &amp;lt;code&amp;gt;--rsync-target&amp;lt;/code&amp;gt; accordingly.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are the parameters that we are passing to the upload-qubit microservice.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to the Administration &amp;gt; Upload DIP page in the dashboard.&lt;br /&gt;
&lt;br /&gt;
Generic parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--url=&amp;quot;http://atom-hostname/index.php&amp;quot; \&lt;br /&gt;
--email=&amp;quot;demo@example.com&amp;quot; \&lt;br /&gt;
--password=&amp;quot;demo&amp;quot; \&lt;br /&gt;
--uuid=&amp;quot;%SIPUUID%&amp;quot; \&lt;br /&gt;
--rsync-target=&amp;quot;archivematica@atom-hostname:/tmp&amp;quot; \&lt;br /&gt;
--debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONTENTdm DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can also upload DIPs to [http://www.contentdm.org/ CONTENTdm] instances. Multiple CONTENTdm destinations may be configured.&lt;br /&gt;
&lt;br /&gt;
For each possible CONTENTdm DIP upload destination, you'll specify a brief description and configuration parameters appropriate for the destination. Paramters include &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; (full path to the CONTENTdm API, including the leading 'http://' or 'https://', for example http://example.com:81/dmwebservices/index.php), &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; (Linux user and group on the CONTENTdm server, not a CONTENTdm username). Note that only &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; is required is you are going to produce CONTENTdm Project Client packages; &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; are also required if you are going to use the &amp;quot;direct upload&amp;quot; option for uploading your DIPs into CONTENTdm.&lt;br /&gt;
&lt;br /&gt;
When changing parameters for a CONTENTdm DIP upload destination simply change the values, preserving the existing format they're specified in. To add an upload destination fill in the form at the bottom of the page with the appropriate values. When you've completed your changes click the &amp;quot;Save&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PREMIS agent ==&lt;br /&gt;
&lt;br /&gt;
The PREMIS agent name and code can be set via the administration interface.&lt;br /&gt;
[[File:Premisagent-10.png|center|900px|thumbs]]&lt;br /&gt;
&lt;br /&gt;
== Rest API ==&lt;br /&gt;
&lt;br /&gt;
In addition to automation using the processingMCP.xml file, Archivematica includes a REST API for automating transfer approval. Using this API, you can create a custom script that copies a transfer to the appropriate directory then uses the &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; command, or some other means, to let Archivematica know that the copy is complete.&lt;br /&gt;
&lt;br /&gt;
=== API keys ===&lt;br /&gt;
&lt;br /&gt;
Use of the REST API requires the use of API keys. An API key is associated with a specific user. To generate an API key for a user:&lt;br /&gt;
&lt;br /&gt;
# Browse to &amp;lt;code&amp;gt;/administration/accounts/list/&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click the &amp;quot;Edit&amp;quot; button for the user you'd like to generate an API key for&lt;br /&gt;
# Click the &amp;quot;Regenerate API key&amp;quot; checkbox&lt;br /&gt;
# Click &amp;quot;Save&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After generating an API key, you can click the &amp;quot;Edit&amp;quot; button for the user and you should see the API key.&lt;br /&gt;
&lt;br /&gt;
=== IP whitelist ===&lt;br /&gt;
&lt;br /&gt;
In addition to creating API keys, you'll need to add the IP of any computer making REST requests to the REST API whitelist. The IP whitelist can be edited in the administration interface at &amp;lt;code&amp;gt;/administration/api/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Approving a transfer ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to approve a transfer. The transfer must first be copied into the appropriate watch directory. To determine the location of the appropriate watch directory, first figure out where the shared directory is from the &amp;lt;code&amp;gt;watchDirectoryPath&amp;lt;/code&amp;gt; value of &amp;lt;code&amp;gt;/etc/archivematica/MCPServer/serverConfig.conf&amp;lt;/code&amp;gt;. Within that directory is a subdirectory &amp;lt;code&amp;gt;activeTransfers&amp;lt;/code&amp;gt;. In this subdirectory are watch directories for the various transfer types.&lt;br /&gt;
&lt;br /&gt;
When using the REST API to approve a transfer, if a transfer type isn't specified, the transfer will be deemed a standard transfer.&lt;br /&gt;
&lt;br /&gt;
'''HTTP Method:''' POST&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: directory name of the transfer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (optional): transfer type [standard|dspace|unzipped bag|zipped bag]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl --data &amp;quot;username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;amp;type=standard&amp;amp;directory=MyTransfer&amp;quot; http://127.0.0.1/api/transfer/approve&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&amp;quot;message&amp;quot;: &amp;quot;Approval successful.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Listing unapproved transfers ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to get a list of unapproved transfers. Each transfer's directory name and type is returned.&lt;br /&gt;
&lt;br /&gt;
'''Method:''' &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl &amp;quot;http://127.0.0.1/api/transfer/unapproved?username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;,&lt;br /&gt;
        &amp;quot;results&amp;quot;: [{&lt;br /&gt;
                &amp;quot;directory&amp;quot;: &amp;quot;MyTransfer&amp;quot;,&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;standard&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
The dashboard provides a simple cookie-based user authentication system using the [https://docs.djangoproject.com/en/1.4/topics/auth/ Django authentication framework]. Access to the dashboard is limited only to logged-in users and a login page will be shown when the user is not recognized. If the application can't find any user in the database, the user creation page will be shown instead, allowing the creation of an administrator account.&lt;br /&gt;
&lt;br /&gt;
Users can be also created, modified and deleted from the Administration tab. Only users who are administrators can create and edit user accounts.&lt;br /&gt;
&lt;br /&gt;
You can add a new user to the system by clicking the &amp;quot;Add new&amp;quot; button on the user administration page. By adding a user you provide a way to access Archivematica using a username/password combination. Should you need to change a user's username or password, you can do so by clicking the &amp;quot;Edit&amp;quot; button, corresponding to the user, on the administration page. Should you need to revoke a user's access, you can click the corresponding &amp;quot;Delete&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== CLI creation of administrative users ===&lt;br /&gt;
&lt;br /&gt;
If you need an additional administrator user one can be created via the command-line, issue the following commands:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py createsuperuser&lt;br /&gt;
&lt;br /&gt;
=== CLI password resetting ===&lt;br /&gt;
&lt;br /&gt;
If you've forgotten the password for your administrator user, or any other user, you can change it via the command-line:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py changepassword &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
Archivematica uses [http://en.wikipedia.org/wiki/PBKDF2 PBKDF2] as the default algorithm to store passwords. This should be sufficient for most users: it's quite secure, requiring massive amounts of computing time to break. However, other algorithms could be used as the following document explains: [https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords How Django stores passwords].&lt;br /&gt;
&lt;br /&gt;
Our plan is to extend this functionality in the future adding groups and granular permissions support.&lt;br /&gt;
&lt;br /&gt;
= Dashboard preservation planning tab =&lt;br /&gt;
&lt;br /&gt;
== Format Policy Registry (FPR) ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to the Format Policy Registry ===&lt;br /&gt;
&lt;br /&gt;
The Format Policy Registry (FPR) is a database which allows Archivematica users to define format policies for handling file formats. A format policy indicates the actions, tools and settings to apply to a file of a particular file format (e.g. conversion to preservation format, conversion to access format). Format policies will change as community standards, practices and tools evolve. Format policies are maintained by Artefactual, who provides a freely-available FPR server hosted at [http://fpr.archivematica.org fpr.archivematica.org]. This server stores structured information about normalization format policies for preservation and access. You can update your local FPR from the FPR server using the UPDATE button in the preservation planning tab of the dashboard. In addition, you can maintain local rules to add new formats or customize the behaviour of Archivematica. The Archivematica dashboard communicates with the FPR server via a REST API. &lt;br /&gt;
&lt;br /&gt;
==== First-time configuration ====&lt;br /&gt;
&lt;br /&gt;
The first time a new Archivematica installation is set up, it will attempt to connect to the FPR server as part of the initial configuration process. As a part of the setup, it will register the Archivematica install with the server and pull down the current set of format policies. In order to register the server, Archivematica will send the following information to the FPR Server, over an encrypted connection:&lt;br /&gt;
&lt;br /&gt;
#Agent Identifier (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#Agent Name (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#IP address of host&lt;br /&gt;
#UUID of Archivematica instance&lt;br /&gt;
#current time&lt;br /&gt;
&lt;br /&gt;
*The only information that will be passed back and forth between Archivematica and the FPR Server would be these format policies - what tool to run when normalizing for a given purpose (access, preservation) when a specific File Identification Tool identifies a specific File Format.  No information about the content that has been run through Archivematica, or any details about the Archivematica installation or configuration would be sent to the FPR Server. &lt;br /&gt;
&lt;br /&gt;
* Because Archivematica is an open source project, it is possible for any organization to conduct a software audit/code review before running Archivematica in a production environment in order to independently verify the information being shared with the FPR Server.  An organization could choose to run a private FPR Server, accessible only within their own network(s), to provide at least a limited version of the benefits of sharing format policies, while guaranteeing a completely self-contained preservation system. This is something that Artefactual is not intending to develop, but anyone is free to extend the software as they see fit, or to hire us or other developers to do so.&lt;br /&gt;
&lt;br /&gt;
=== Updating format policies ===&lt;br /&gt;
&lt;br /&gt;
FPR rules can be updated at any time from within the Preservation Planning tab in Archivematica. Clicking the &amp;quot;update&amp;quot; button will initiate an FPR pull which will bring in any new or altered rules since the last time an update was performed.&lt;br /&gt;
&lt;br /&gt;
=== Types of FPR entries ===&lt;br /&gt;
&lt;br /&gt;
==== Format ====&lt;br /&gt;
&lt;br /&gt;
In the FPR, a &amp;quot;format&amp;quot; is a record representing one or more related ''format versions'', which are records representing a specific file format. For example, the format record for &amp;quot;Graphics Interchange Format&amp;quot; (GIF) is comprised of format versions for both GIF 1987a and 1989a.&lt;br /&gt;
&lt;br /&gt;
When creating a new format version, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Description (required) - Text describing the format. This will be saved in METS files.&lt;br /&gt;
* Version (required) - The version number for this specific format version (not the FPR record). For example, for Adobe Illustrator 14 .ai files, you might choose &amp;quot;14&amp;quot;.&lt;br /&gt;
* Pronom id - The specific format version's unique identifier in [http://www.nationalarchives.gov.uk/PRONOM/Default.aspx PRONOM], the UK National Archives's format registry. This is optional, but highly recommended.&lt;br /&gt;
* Access format and Preservation format - Indicates whether this format is suitable as an access format for end users, and for preservation.&lt;br /&gt;
&lt;br /&gt;
==== Format Group ====&lt;br /&gt;
&lt;br /&gt;
A format group is a convenient grouping of related file formats which share common properties. For instance, the FPR includes an &amp;quot;Image (raster)&amp;quot; group which contains format records for GIF, JPEG, and PNG. Each format can belong to one (and only one) format group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Characterization ====&lt;br /&gt;
Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization micro-service always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is fully customizable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
===== Characterization tools =====&lt;br /&gt;
&lt;br /&gt;
Archivematica has four default characterization tools upon installation. Which tool will run on a given file depends on the type of file, as determined by the selected identification tool.&lt;br /&gt;
&lt;br /&gt;
====== Default ======&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
====== Multimedia ======&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduced three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
===== Writing a new characterization command =====&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.2#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Extraction ====&lt;br /&gt;
&lt;br /&gt;
Archivematica supports extracting contents from files during the transfer phase.&lt;br /&gt;
&lt;br /&gt;
Many transfers contain files which are packages of other files; examples of these include compressed archives, such as ZIP files, or disk images. Archivematica provides a transcription microservice which comes with several predefined rules to extract packages, and which is fully customizeable by Archivematica administrators. Administrators can write new commands, and assign existing formats to run for other file formats.&lt;br /&gt;
&lt;br /&gt;
===== Writing a new extraction command =====&lt;br /&gt;
&lt;br /&gt;
Writing an extraction command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
An extraction command is passed two arguments: the ''file to extract'', and the ''path to which the package should be extracted''. Similar to [[Administrator_manual_1.2#Normalization Command|normalization commands]], these arguments will be interpolated directly into &amp;quot;bashScript&amp;quot; and &amp;quot;command&amp;quot; scripts, and passed as positional arguments to &amp;quot;pythonScript&amp;quot; and &amp;quot;asIs&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline position (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||First||The full path to the directory in which the package's contents should be extracted||/path/to/filename-uuid/&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||Second||The full path to the package file||/path/to/filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here's a simple example of how to call an existing tool (7-zip) without any extra logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;7z x -bd -o&amp;quot;%outputDirectory%&amp;quot; &amp;quot;%inputFile%&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Python script example is more complex, and attempts to determine whether any files were extracted in order to determine whether to exit 0 or 1 (and report success or failure):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def extract(package, outdir):&lt;br /&gt;
    # -a extracts only allocated files; we're not capturing unallocated files&lt;br /&gt;
    try:&lt;br /&gt;
        process = subprocess.Popen(['tsk_recover', package, '-a', outdir],&lt;br /&gt;
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)&lt;br /&gt;
        stdout, stderr = process.communicate()&lt;br /&gt;
&lt;br /&gt;
        match = re.match(r'Files Recovered: (\d+)', stdout.splitlines()[0])&lt;br /&gt;
        if match:&lt;br /&gt;
            if match.groups()[0] == '0':&lt;br /&gt;
                raise Exception('tsk_recover failed to extract any files with the message: {}'.format(stdout))&lt;br /&gt;
            else:&lt;br /&gt;
                print(stdout)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        return e&lt;br /&gt;
&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main(package, outdir):&lt;br /&gt;
    return extract(package, outdir)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    package = sys.argv[1]&lt;br /&gt;
    outdir = sys.argv[2]&lt;br /&gt;
    sys.exit(main(package, outdir))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Identification ====&lt;br /&gt;
&lt;br /&gt;
===== Identification Tools =====&lt;br /&gt;
&lt;br /&gt;
The identification tool properties in Archivematica control the ways in which Archivematica identifies files and associates them with the FPR's version records. The current version of the FPR server contains two tools: a script based on the [http://www.openplanetsfoundation.org/ Open Planets Foundation's] [https://github.com/openplanets/fido/ FIDO] tool, which identifies based on the IDs in PRONOM, and a simple script which identifies files by their file extension. You can use the identification tools portion of FPR to customize the behaviour of the existing tools, or to write your own.&lt;br /&gt;
&lt;br /&gt;
===== Identification Commands =====&lt;br /&gt;
&lt;br /&gt;
Identification commands contain the actual code that a tool will run when identifying a file. This command will be run on every file in a transfer.&lt;br /&gt;
&lt;br /&gt;
When adding a new command, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Identifier (mandatory) - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Script type (mandatory) - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
&lt;br /&gt;
When coding a command, you should expect your script to take the path to the file to be identifed as the first commandline argument. When returning an identification, the tool should print a single line containing ''only'' the identifier, and should exit 0. Any informative, diagnostic, and error message can be printed to stderr, where it will be visible to Archivematica users monitoring tool results. On failure, the tool should exit non-zero.&lt;br /&gt;
&lt;br /&gt;
===== Identification Rules =====&lt;br /&gt;
&lt;br /&gt;
These identification rules allow you to define the relationship between the output created by an identification tool, and one of the formats which exists in the FPR. This must be done for the format to be tracked internally by Archivematica, and for it to be used by normalization later on. For instance, if you created a FIDO configuration which returns MIME types, you could create a rule which associates the output &amp;quot;image/jpeg&amp;quot; with the &amp;quot;Generic JPEG&amp;quot; format in the FPR.&lt;br /&gt;
&lt;br /&gt;
Identification rules are necessary only when a tool is configured to return file extensions or MIME types. Because PUIDs are universal, Archivematica will always look these up for you without requiring any rules to be created, regardless of what tool is being used.&lt;br /&gt;
&lt;br /&gt;
When creating an identification rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Format - Allows you to select one of the formats which already exists in the FPR.&lt;br /&gt;
* Command - Indicates the command that produces this specific identification.&lt;br /&gt;
* Output - The text which is written to standard output by the specified command, such as &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Format Policy Tools ====&lt;br /&gt;
&lt;br /&gt;
Format policy tools control how Archivematica processes files during ingest. The most common kind of these tools are normalization tools, which produce preservation and access copies from ingested files. Archivematica comes configured with a number of commands and scripts to normalize several file formats, and you can use this section of the FPR to customize them or to create your own. These are organized similarly to the [[#Identification Tools]] documented above.&lt;br /&gt;
&lt;br /&gt;
Archivematica uses the following kinds of format policy rules:&lt;br /&gt;
&lt;br /&gt;
* Characterization&lt;br /&gt;
* Extraction&lt;br /&gt;
* Normalization - Access, preservation and thumbnails&lt;br /&gt;
* Event detail - Extracts information about a given tool in order to be inserted into a generated METS file.&lt;br /&gt;
* Transcription&lt;br /&gt;
* Verification - Validates a file produced by another command. For instance, a tool could use Exiftool or JHOVE to determine whether a thumbnail produced by a normalization command was valid and well-formed.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Commands ===&lt;br /&gt;
&lt;br /&gt;
Like the [[#Identification Commands]] above, format policy commands are scripts or command line statements which control how a normalization tool runs. This command will be run once on every file being normalized using this tool in a transfer.&lt;br /&gt;
&lt;br /&gt;
When creating a normalization command, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Tool - One or more tools to be associated with this command.&lt;br /&gt;
* Description - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Command - The script's source, or the commandline statement to execute.&lt;br /&gt;
* Script type - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
* Output format (optional) - The format the command outputs. For example, a command to normalize audio to MP3 using ffmpeg would select the appropriate MP3 format from the dropdown.&lt;br /&gt;
* Output location (optional) - The path the normalized file will be written to. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Command usage - The purpose of the command; this will be used by Archivematica to decide whether a command is appropriate to run in different circumstances. Values are &amp;quot;Normalization&amp;quot;, &amp;quot;Event detail&amp;quot;, and &amp;quot;Verification&amp;quot;. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Event detail command - A command to provide information about the software running this command. This will be written to the METS file as the &amp;quot;event detail&amp;quot; property. For example, the normalization commands which use ffmpeg use an event detail command to extract ffmpeg's version number.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Rules ===&lt;br /&gt;
&lt;br /&gt;
Format policy rules allow commands to be associated with specific file types. For instance, this allows you to configure the command that uses ImageMagick to create thumbnails to be run on .gif and .jpeg files, while selecting a different command to be run on .png files.&lt;br /&gt;
&lt;br /&gt;
When creating a format policy rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Purpose - Allows Archivematica to distinguish rules that should be used to normalize for preservation, normalize for access, to extract information, etc.&lt;br /&gt;
* Format - The file format the associated command should be selected for.&lt;br /&gt;
* Command - The specific command to call when this rule is used.&lt;br /&gt;
&lt;br /&gt;
=== Writing a command ===&lt;br /&gt;
&lt;br /&gt;
==== Identification command ====&lt;br /&gt;
&lt;br /&gt;
Identification commands are very simple to write, though they require some familiarity with Unix scripting.&lt;br /&gt;
&lt;br /&gt;
An identification command run once for every file in a transfer. It will be passed a single argument (the path to the file to identify), and no switches.&lt;br /&gt;
&lt;br /&gt;
On success, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print the identifier to stdout&lt;br /&gt;
* Exit 0&lt;br /&gt;
&lt;br /&gt;
On failure, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print nothing to stdout&lt;br /&gt;
* Exit non-zero (Archivematica does not assign special significance to non-zero exit codes)&lt;br /&gt;
&lt;br /&gt;
A command can print anything to stderr on success or error, but this is purely informational - Archivematica won't do anything special with it. Anything printed to stderr by the command will be shown to the user in the Archivematica dashboard's detailed tool output page. You should print any useful error output to stderr if identification fails, but you can also print any useful extra information to stderr if identification succeeds.&lt;br /&gt;
&lt;br /&gt;
Here's a very simple Python script that identifies files by their file extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import os.path, sys&lt;br /&gt;
(_, extension) = os.path.splitext(sys.argv[1])&lt;br /&gt;
if len(extension) == 0:&lt;br /&gt;
	exit(1)&lt;br /&gt;
else:&lt;br /&gt;
	print extension.lower()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's a more complex Python example, which uses [http://www.sno.phy.queensu.ca/~phil/exiftool/ Exiftool]'s XML output to return the MIME type of a file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from lxml import etree&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    xml = subprocess.check_output(['exiftool', '-X', sys.argv[1]])&lt;br /&gt;
    doc = etree.fromstring(xml)&lt;br /&gt;
    print doc.find('.//{http://ns.exiftool.ca/File/1.0/}MIMEType').text&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, e&lt;br /&gt;
    exit(1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've written an identification command, you can register it in the FPR using the following steps:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for the command itself:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Command&amp;quot;.&lt;br /&gt;
# Select your tool from the &amp;quot;Tool&amp;quot; dropdown box.&lt;br /&gt;
# Fill out the Identifier with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Identify MIME-type using Exiftool&amp;quot;.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Enter the source code for your script in the &amp;quot;Command&amp;quot; box.&lt;br /&gt;
# Click &amp;quot;Create Command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which associate the possible outputs of your tool with the FPR's format records. This needs to be done once for every supported format; we'll show it with MP3, as an example.&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Identification Rules&amp;quot; page, and click &amp;quot;Create New Rule&amp;quot;.&lt;br /&gt;
# Choose the appropriate foramt from the Format dropdown - in our case, &amp;quot;Audio: MPEG Audio: MPEG 1/2 Audio Layer 3&amp;quot;.&lt;br /&gt;
# Choose your command from the Command dropdown.&lt;br /&gt;
# Enter the text your command will output when it identifies this format. For example, when our Exiftool command identifies an MP3 file, it will output &amp;quot;audio/mpeg&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this is complete, any new transfers you create will be able to use your new tool in the identification step.&lt;br /&gt;
&lt;br /&gt;
==== Normalization Command ====&lt;br /&gt;
&lt;br /&gt;
Normalization commands are a bit more complex to write because they take a few extra parameters.&lt;br /&gt;
&lt;br /&gt;
The goal of a normalization command is to take an input file and transform it into a new format. For instance, Archivematica provides commands to transform video content into FFV1 for preservation, and into H.264 for access.&lt;br /&gt;
&lt;br /&gt;
Archivematica provides several parameters specifying input and output filenames and other useful information. Several of the most common are shown in the examples below; a more complete list is in a later section of the documentation: [[#Normalization command variables and arguments]]&lt;br /&gt;
&lt;br /&gt;
When writing a bash script or a command line, you can reference the variables directly in your code, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;inkscape -z &amp;quot;%fileFullName%&amp;quot; --export-pdf=&amp;quot;%outputDirectory%%prefix%%fileName%%postfix%.pdf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When writing a script in Python or other languages, the values will be passed to your script as commandline options, which you will need to parse. The following script provides an example using the argparse module that comes with Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import argparse&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument('--file-full-name', dest='filename')&lt;br /&gt;
parser.add_argument('--output-file-name', dest='output')&lt;br /&gt;
parsed, _ = parser.parse_known_args()&lt;br /&gt;
args = [&lt;br /&gt;
    'ffmpeg', '-vsync', 'passthrough',&lt;br /&gt;
    '-i', parsed.filename,&lt;br /&gt;
    '-map', '0:v', '-map', '0:a',&lt;br /&gt;
    '-vcodec', 'ffv1', '-g', '1',&lt;br /&gt;
    '-acodec', 'pcm_s16le',&lt;br /&gt;
    parsed.output+'.mkv'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
subprocess.call(args)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've created a command, the process of registering it is similar to creating a new identification tool. The folling examples will use the Python normalization script above.&lt;br /&gt;
&lt;br /&gt;
First, create a new tool record:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for your new command:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Tool Command&amp;quot;.&lt;br /&gt;
# Fill out the Description with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Normalize to mkv using ffmpeg&amp;quot;.&lt;br /&gt;
# Enter the source for your command in the Command textbox.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Select the appropriate output format from the dropdown. This indicates to Archivematica what kind of file this command will produce. In this case, choose &amp;quot;Video: Matroska: Generic MKV&amp;quot;.&lt;br /&gt;
# Enter the location the video will be saved to, using the script variables. You can usually use the &amp;quot;%outputFileName%&amp;quot; variable, and add the file extension - in this case &amp;quot;%outputFileName%.mkv&amp;quot;&lt;br /&gt;
# Select a verification command. Archivematica will try to use this tool to ensure that the file your command created works. Archivematica ships with two simple tools, which test whether the file exists and whether it's larger than 0 bytes, but you can create new commands that perform more complicated verifications.&lt;br /&gt;
# Finally, choose a command to produce the &amp;quot;Event detail&amp;quot; text that will be written in the section of the METS file covering the normalization event. Archivematica already includes a suitable command for ffmpeg, but you can also create a custom command.&lt;br /&gt;
# Click &amp;quot;Create command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which will associate your command with the formats it should run on.&lt;br /&gt;
&lt;br /&gt;
==== Normalization command variables and arguments ====&lt;br /&gt;
&lt;br /&gt;
The following variables and arguments control the behaviour of format policy command scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline option (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%fileName%||--input-file=||The filename of the file to process. This variable holds the file's basename, not the whole path.||video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileDirectory%||--file-directory=||The directory containing the input file.||/path/to&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||--file-name=||The fully-qualified path to the file to process.||/path/to/video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtension%||--file-extension=||The file extension of the input file.||mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtensionWithDot%||--file-extension-with-dot=||As above, without stripping the period.||.mov&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The directory to which the output file should be saved.||/path/to/access/copies&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileUUID%||--output-file-uuid=||The unique identifier assigned by Archivematica to the output file.||1abedf3e-3a4b-46d7-97da-bd9ae13859f5&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The fully-qualified path to the directory where the new file should be written.||/var/archivematica/sharedDirectory/www/AIPsStore/uuid&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileName%||--output-file-name=||The fully-qualified path to the output file, minus the file extension.||/path/to/access/copies/video-uuid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customization and automation =&lt;br /&gt;
* Workflow processing decisions can be made in the processingMCP.xml file. [https://www.archivematica.org/wiki/Administrator_manual_0.10#Processing_configuration See here.]&lt;br /&gt;
* Workflows are currently created at the development level. &lt;br /&gt;
*: Some resources avialable&lt;br /&gt;
*:* [[MCP_Basic_Configuration]]&lt;br /&gt;
*:* [[MCP]]&lt;br /&gt;
*:* [[Creating_Custom_Workflows]]&lt;br /&gt;
*:* [[Development]]&lt;br /&gt;
* Normalization commands can be viewed in the preservation planning tab.&lt;br /&gt;
* Normalization paths and commands are currently editable under the preservation planning tab in the dashboard.&lt;br /&gt;
&lt;br /&gt;
= Elasticsearch =&lt;br /&gt;
&lt;br /&gt;
Archivematica has the capability of indexing data about files contained in AIPs and this data can be [[Elasticsearch Development|accessed programatically]] for various applications.&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an ElasticSearch index please see [[ElasticSearch Administration]].&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an Elasticsearch index programmatically, this can be done with pyes using the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    conn.delete_index('aips')&lt;br /&gt;
except:&lt;br /&gt;
    print &amp;quot;Error deleting index or index already deleted.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the AIP index ===&lt;br /&gt;
&lt;br /&gt;
To rebuild the ElasticSearch AIP index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-aip-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-aip-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-aip-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the transfer index ===&lt;br /&gt;
&lt;br /&gt;
Similarly, to rebuild the ElasticSearch transfer data index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-transfer-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-transfer-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-transfer-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Data backup =&lt;br /&gt;
&lt;br /&gt;
In Archivematica there are three types of data you'll likely want to back up:&lt;br /&gt;
* Filesystem (particularly your storage directories)&lt;br /&gt;
* MySQL&lt;br /&gt;
* ElasticSearch&lt;br /&gt;
&lt;br /&gt;
MySQL is used to store short-term processing data. You can back up the MySQL database by using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mysqldump -u &amp;lt;your username&amp;gt; -p&amp;lt;your password&amp;gt; -c MCP &amp;gt; &amp;lt;filename of backup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ElasticSearch is used to store long-term data. Instructions and scripts for backing up and restoring ElasticSearch are available [http://tech.superhappykittymeow.com/?p=296 here].&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
Once you've set up Archivematica it's a good practice, for the sake of security, to change the default passwords.&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
You should create a new MySQL user or change the password of the default &amp;quot;archivematica&amp;quot; MySQL user. The change the password of the default user, enter the following into the command-line:&lt;br /&gt;
&lt;br /&gt;
 $ mysql -u root -p&amp;lt;your MyQL root password&amp;gt; -D mysql \&lt;br /&gt;
    -e &amp;quot;SET PASSWORD FOR 'archivematica'@'localhost' = PASSWORD('&amp;lt;new password&amp;gt;'); \&lt;br /&gt;
    FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you've done this you can change Archivematica's MySQL database access credentials by editing these two files:&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/archivematica/archivematicaCommon/dbsettings&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; settings)&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/share/archivematica/dashboard/settings/common.py&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; settings in the &amp;lt;code&amp;gt;DATABASES&amp;lt;/code&amp;gt; section)&lt;br /&gt;
&lt;br /&gt;
Archivematica does not presently support secured MySQL communication so MySQL should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1645 1645].&lt;br /&gt;
&lt;br /&gt;
== AtoM ==&lt;br /&gt;
&lt;br /&gt;
In addition to changing the MySQL credentials, if you've also installed AtoM you'll want to set the password for it as well. Note that after changing your AtoM credentials you should update the credentials on the AtoM DIP upload administration page as well.&lt;br /&gt;
&lt;br /&gt;
== Gearman ==&lt;br /&gt;
&lt;br /&gt;
Archivematica relies on the German server for queuing work that needs to be done. Gearman currently doesn't support secured connections so Gearman should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1345 1345].&lt;br /&gt;
&lt;br /&gt;
= Questions =&lt;br /&gt;
&lt;br /&gt;
If you run into any difficulties while administrating Archivematica, please check out our FAQ and, if that doesn't help you, contain us using the Archivematica discussion group.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
* [[AM_FAQ|Solutions to common questions]]&lt;br /&gt;
&lt;br /&gt;
== Discussion group ==&lt;br /&gt;
* [http://groups.google.com/group/archivematica?hl=en Discussion group] for questions not covered by the FAQ&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10025</id>
		<title>Administrator manual 1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Administrator_manual_1.2&amp;diff=10025"/>
		<updated>2014-08-07T21:47:35Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Document extraction commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Documentation]] &amp;gt; Administrator manual 1.2&lt;br /&gt;
&lt;br /&gt;
This manual covers administrator-specific instructions for Archivematica. It will also provide help for using forms in the Administration tab of the Archivematica dashboard and the administrator capabilities in the Format Policy Registry (FPR), which you will find in the Preservation planning tab of the dashboard.&lt;br /&gt;
&lt;br /&gt;
For end-user instructions, please see the [[User_manual_1.2|user manual]].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
* [[Installation|Instructions for installing the latest build of Archivematica on your server]]&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
Currently, Archivematica does not support upgrading from one version to the next. A re-install is required. After re-installing, you can restore Archivematica's knowledge of your AIPs, by [[#Rebuilding_the_AIP_index|rebuilding the AIP index]] and, if you have transfers stored in the backlog, [[#Rebuilding_the_transfer_index|rebuilding the transfer index]].&lt;br /&gt;
&lt;br /&gt;
= Storage service =&lt;br /&gt;
The Archivematica Storage Service allows the configuration of storage spaces associated with multiple Archivematica pipelines.  It allows a storage administrator to configure what storage is available to each Archivematica installation, both locally and remote.&lt;br /&gt;
&lt;br /&gt;
[[File:SS1-0.png|700px|center|thumb|Home page of Storage Service]]&lt;br /&gt;
&lt;br /&gt;
TODO Discuss how spaces and locations fit into each other, pipelines fit to locations, spaces=config, locations=purpose, packages in locations&lt;br /&gt;
&lt;br /&gt;
== Archivematica Configuration ==&lt;br /&gt;
&lt;br /&gt;
When installing Archivematica, options to configure it with the Storage Service will be presented.&lt;br /&gt;
&lt;br /&gt;
[[File:Install3.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
If you have installed the Storage Service at a different URL, you may change that here. &lt;br /&gt;
&lt;br /&gt;
The top button 'Use default transfer source &amp;amp; AIP storage locations' will attempt to automatically configure default Locations for Archivematica, register a new Pipeline, and generate an error if the Storage Service is not available.  Use this option if you want the Storage Service to automatically set up the configured default values.&lt;br /&gt;
&lt;br /&gt;
The bottom button 'Register this pipeline &amp;amp;amp; set up transfer source and AIP storage locations' will only attempt to register a new Pipeline with the Storage Service, and will not error if not Storage Service can be found.  It will also open a link to the provided Storage Service URL, so that Locations can be configured manually.  Use this option if the default values not desired, or the Storage Service is not running yet.  Locations will have to be configured manually before any Transfers can be processed, or AIPs stored.&lt;br /&gt;
&lt;br /&gt;
If the Storage Service is running, the URL to it should be entered, and Archivematica will attempt to register its dashboard UUID as a new Pipeline.  Otherwise, the dashboard UUID is displayed, and a Pipeline for this Archivematica instance can be manually created and configured. The dashboard UUID is also available in Archivematica under Administration -&amp;gt; General. &lt;br /&gt;
&lt;br /&gt;
=== Change the port in the web server configuration === &lt;br /&gt;
&lt;br /&gt;
The storage services uses nginx by default, so you can edit /etc/nginx/sites-enabled/storage and change the line that says&lt;br /&gt;
&lt;br /&gt;
listen 8000;&lt;br /&gt;
&lt;br /&gt;
change 8000 to whatever port you prefer to use. &lt;br /&gt;
&lt;br /&gt;
Keep in mind that in a default installation of Archivematica 1.0, the dashboard is running in Apache on port 80.  So it is not possible to make nginx run on port 80 on the same machine.  If you install the storage service on its own server, you can set it to use port 80. &lt;br /&gt;
&lt;br /&gt;
Make sure to adjust the dashboard UUID in the Archivematica dashboard under Administration -&amp;gt; General.&lt;br /&gt;
&lt;br /&gt;
== Spaces ==&lt;br /&gt;
[[File:Spaces.png|600px|center]]&lt;br /&gt;
A storage Space contains all the information necessary to connect to the physical storage.  It is where protocol-specific information, like an NFS export path and hostname, or the username of a system accessible only via SSH, is stored.  All locations must be contained in a space.&lt;br /&gt;
&lt;br /&gt;
A space is usually the immediate parent of the Location folders.  For example, if you had transfer source locations at &amp;lt;tt&amp;gt;/home/artefactual/archivematica-sampledata-2013-10-10-09-17-20&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/home/artefactual/maildir_transfers&amp;lt;/tt&amp;gt;, the Space's path would be &amp;lt;tt&amp;gt;/home/artefactual/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently supported protocols are local filesystem, NFS, and pipeline local filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Local Filesystem spaces handle storage that is available locally on the machine running the storage service.  Typically this is the hard drive, SSD or raid array attached to the machine, but it could also encompass remote storage that has already been mounted.  For remote storage that has been locally mounted, we recommend using a more specific Space if one is available.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the Space on the local filesystem&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
&lt;br /&gt;
=== NFS ===&lt;br /&gt;
&lt;br /&gt;
NFS spaces are for NFS exports mounted on the Storage Service server, and the Archivematica pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path the space is mounted at on the filesystem local to the storage service&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the remote computer exporting the NFS mount.&lt;br /&gt;
* ''Remote path'': Export path on the NFS server&lt;br /&gt;
* ''Version'': nfs or nfs4 - as would be passed to the &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
* ''Manually Mounted'': Check this if it has been mounted already.  Otherwise, the Storage Service will try to mount it. ''Note: this feature is not yet available.''&lt;br /&gt;
&lt;br /&gt;
=== Pipeline Local Filesystem ===&lt;br /&gt;
&lt;br /&gt;
Pipeline Local Filesystems refer to the storage that is local to the Archivematica pipeline, but remote to the storage service.  For this Space to work properly, passwordless SSH must be set up between the Storage Service host and the Archivematica host.&lt;br /&gt;
&lt;br /&gt;
For example, the storage service is hosted on &amp;lt;tt&amp;gt;storage_service_host&amp;lt;/tt&amp;gt; and Archivematica is running on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt; .  The transfer sources for Archivematica are stored locally on &amp;lt;tt&amp;gt;archivematica1&amp;lt;/tt&amp;gt;, but the storage service needs access to them.  The Space for that transfer source would be a Pipeline Local Filesystem.&lt;br /&gt;
&lt;br /&gt;
'''Note: Passwordless SSH must be set up between the Storage Service host and the computer Archivematica is running on.'''&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Path'': Absolute path to the space on the remote machine.&lt;br /&gt;
* ''Size'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Remote name'': Hostname or IP address of the computer running Archivematica.  Should be SSH accessible from the Storage Service computer.&lt;br /&gt;
* ''Remote user'': Username on the remote host&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
[[File:Locations.png|600px|center]]&lt;br /&gt;
A storage Location is contained in a Space, and knows its purpose in the Archivematica system.  A Location is also where Packages are stored.  Each Location is associated with a pipeline and can only be accessed by that pipeline.&lt;br /&gt;
&lt;br /&gt;
Currently, a Location can have one of three purposes: Transfer Source, Currently Processing, or AIP Storage.  Transfer source locations display in Archivematica's Transfer tab, and any folder in a transfer source can be selected to become a Transfer.  AIP storage locations are where the completed AIPs are put for long-term storage.  During processing, Archivematica uses the currently processing location associated with that pipeline.  Only one currently processing location should be associated with a given pipeline.  If you want the same directory on disk to have multiple purposes, multiple Locations with different purposes can be created.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''Purpose'': What use the Location is for&lt;br /&gt;
* ''Pipeline'': Which pipelines this location is available to.&lt;br /&gt;
* ''Relative Path'': Path to this Location, relative to the space that contains it.&lt;br /&gt;
* ''Description'': Description of the Location to be displayed to the user.&lt;br /&gt;
* ''Quota'': (Optional) Maximum size allowed for this space.  Set to 0 or leave blank for unlimited.&lt;br /&gt;
* ''Enabled'': If checked, this location is accessible to pipelines associated with it.  If unchecked, it will not show up to any pipeline.&lt;br /&gt;
&lt;br /&gt;
== Pipeline ==&lt;br /&gt;
[[File:Pipelines.png|600px|center]]&lt;br /&gt;
A pipeline is an Archivematica instance registered with the Storage Service, including the server and all associated clients.  Each pipeline is uniquely identified by a UUID, which can be found in the dashboard under Administration -&amp;gt; General Configuration.  When installing Archivematica, it will attempt to register its UUID with the Storage Service, with a description of &amp;quot;Archivematica on &amp;lt;hostname&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Fields ====&lt;br /&gt;
* ''UUID'': Unique identifier of the Archivematica pipeline&lt;br /&gt;
* ''Description'': Description of the pipeline displayed to the user.  e.g. Sankofa demo site&lt;br /&gt;
* ''Enabled'': If checked, this pipeline can access locations associate with it.  If unchecked, all locations will be disabled, even if associated.&lt;br /&gt;
* ''Default Locations'': If checked, the default locations configured in Administration -&amp;gt; Configuration will be created or associated with the new pipeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
[[File:Packages.png|600px|center]]&lt;br /&gt;
A Package is a file that Archivematica has stored in the Storage Service, commonly an Archival Information Package (AIP).  They cannot be created or deleted through the Storage Service interface, though a deletion request can be submitted through Archivematica that must be approved or rejected by the storage service administrator. To learn more about deleting an AIP, see [[UM_archival_storage_1.2#Deleting_an_AIP|Deleting an AIP]].&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
[[File:StorageserviceAdmin1.png|600px|center]]&lt;br /&gt;
[[File:StorageserviceAdmin2.png|600px|center]]&lt;br /&gt;
The Administration section manages the users and settings for the Storage Service.&lt;br /&gt;
&lt;br /&gt;
=== Users ===&lt;br /&gt;
&lt;br /&gt;
Only registered users can long into the storage service, and the Users page is where users can be created or modified.&lt;br /&gt;
&lt;br /&gt;
TODO what info means, what admin/active mean, who can edit what&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
Settings control the behavior of the Storage Service.  Default Locations are the created or associated with pipelines when they are created.&lt;br /&gt;
&lt;br /&gt;
'''Pipelines are disabled upon creation?''' sets whether a newly created Pipeline can access its Locations.  If a Pipeline is disabled, it cannot access any of its locations.  By disabling newly created Pipelines, it provides some security against unwanted perusal of the files in Locations, or use by unauthorized Archivematica instances.  This can be configured individually when creating a Pipeline manually through the Storage Service website.&lt;br /&gt;
&lt;br /&gt;
'''Default Locations''' set what existing locations should be associated with a newly created Pipeline, or what new Locations should be created for each new Pipeline.  No matter what is configured here, a Currently Processing location is created for all Pipelines, since one is required.  Multiple Transfer Source or AIP Storage Locations can be configured by holding down Ctrl when selecting them.  New Locations in an existing Space can be created for Pipelines that use default locations by entering the relevant information.&lt;br /&gt;
&lt;br /&gt;
== How to Configure a Location ==&lt;br /&gt;
&lt;br /&gt;
For Spaces of the type &amp;quot;Local Filesystem,&amp;quot; Locations are basically directories (or more accurately, paths to directories). You can create Locations for Transfer Source, Currently Processing, or AIP Storage directories.&lt;br /&gt;
&lt;br /&gt;
To create and configure a new Location:&lt;br /&gt;
&lt;br /&gt;
# In the Storage Service, click on the &amp;quot;Spaces&amp;quot; tab.&lt;br /&gt;
# Under the Space that you want to add the Location to, click on the &amp;quot;Create Location here&amp;quot; link.&lt;br /&gt;
# Choose a purpose (e.g. AIP Storage) and pipeline, and enter a &amp;quot;Relative Path&amp;quot; (e.g. var/mylocation) and human-readable description. The Relative Path is relative to the Path defined in the Space you are adding the Location to, e.g. for the default Space, the Path is '/' so your Location path would be relative to that (in the example here, the complete path would end up being '/var/mylocation'). Note: if the path you are defining in your Location doesn't exist, you must create it manually and make sure it is writable by the archivematica user.&lt;br /&gt;
# Save the Location settings.&lt;br /&gt;
# The new location will now be available as an option under the appropriate options in the Dashboard, for example as a Transfer location (which must be enabled under the Dashboard &amp;quot;Administration&amp;quot; tab) or as a destination for AIP storage.&lt;br /&gt;
&lt;br /&gt;
== Store DIP ==&lt;br /&gt;
&lt;br /&gt;
= Dashboard administration tab =&lt;br /&gt;
&lt;br /&gt;
The Archivematica administration pages, under the Administration tab of the dashboard, allows you to configure application components and manage users.&lt;br /&gt;
&lt;br /&gt;
== Processing configuration ==&lt;br /&gt;
&lt;br /&gt;
When processing a SIP or transfer, you may want to automate some of the workflow choices. Choices can be preconfigured by putting a 'processingMCP.xml' file into the root directory of a SIP/transfer.&lt;br /&gt;
&lt;br /&gt;
If a SIP or transfer is submitted with a 'processingMCP.xml' file, processing decisions will be made with the included file.&lt;br /&gt;
&lt;br /&gt;
The XML file format is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;processingMCP&amp;gt;&lt;br /&gt;
  &amp;lt;preconfiguredChoices&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Send to quarantine? --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;755b4177-c587-41a7-8c52-015277568302&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;d4404ab1-dc7f-4e9e-b1f8-aa861e766b8e&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Display metadata reminder --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;eeb23509-57e2-4529-8857-9d62525db048&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;5727faac-88af-40e8-8c10-268644b0142d&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Remove from quarantine --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;19adb668-b19a-4fcb-8938-f49d7485eaf3&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;333643b7-122a-4019-8bef-996443f3ecc5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
      &amp;lt;delay unitCtime=&amp;quot;yes&amp;quot;&amp;gt;2419200.0&amp;lt;/delay&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Extract packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;dec97e3c-5598-4b99-b26e-f87a435a6b7f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;01d80b27-4ad1-4bd1-8f8d-f819f18bf685&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Delete extracted packages --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;f19926dd-8fb5-4c79-8ade-c83f61f55b40&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;85b1e45d-8f98-4cae-8336-72f40e12cbef&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select pre-normalize file format identification command --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;7a024896-c4f7-4808-a240-44c87c762bc5&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;3c1faec7-7e1e-4cdd-b3bd-e2f05f4baa9b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression algorithm --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01d64f58-8295-4b7b-9cab-8f1b153a504f&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;9475447c-9889-430c-9477-6287a9574c5b&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Select compression level --&amp;gt;&lt;br /&gt;
    &amp;lt;preconfiguredChoice&amp;gt;&lt;br /&gt;
      &amp;lt;appliesTo&amp;gt;01c651cb-c174-4ba4-b985-1d87a44d6754&amp;lt;/appliesTo&amp;gt;&lt;br /&gt;
      &amp;lt;goToChain&amp;gt;414da421-b83f-4648-895f-a34840e3c3f5&amp;lt;/goToChain&amp;gt;&lt;br /&gt;
    &amp;lt;/preconfiguredChoice&amp;gt;&lt;br /&gt;
  &amp;lt;/preconfiguredChoices&amp;gt;&lt;br /&gt;
&amp;lt;/processingMCP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where appliesTo is the UUID associated with the micro-service job presented in the dashboard, and goToChain is the UUID of the desired selection. The default processingMCP.xml file is located at '/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/processingMCPConfigs/defaultProcessingMCP.xml'.&lt;br /&gt;
&lt;br /&gt;
The processing configuration administration page of the dashboard provides you with an easy form to configure the default 'processingMCP.xml' that's added to a SIP or transfer if it doesn't already contain one. When you change the options using the web interface the necessary XML will be written behind the scenes.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:ProcessingConfig1-1.png|1000px|center|thumb|Processing configuration form in Administration tab of the dashboard]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
*For the approval (yes/no) steps, the user ticks the box on the left-hand side to make a choice. If the box is not ticked, the approval step will appear in the dashboard.&lt;br /&gt;
*For the other steps, if no actions are selected the choices appear in the dashboard&lt;br /&gt;
*You can select whether or not to send transfers to quarantine (yes/no) and decide how long you'd like them to stay there.&lt;br /&gt;
*You can select whether to extract packages as well as whether to keep and/or delete the extracted objects and/or the package itself.&lt;br /&gt;
*You can approve normalization, sending the AIP to storage, and uploading the DIP without interrupting the workflow in the dashboard.&lt;br /&gt;
*You can pre-select which format identification tool and command to run in both/either transfer and/or ingest to base your normalization upon. &lt;br /&gt;
*You can choose to send a transfer to backlog or to create a SIP every time.&lt;br /&gt;
*You can select to be reminded to add PREMIS event metadata about manual normalization should you choose to use that capability.&lt;br /&gt;
*You can select between 7z using lzma and 7zip using bzip or parallel bzip2 algorithms for AIP compression.&lt;br /&gt;
*For select compression level, the options are as follows:&lt;br /&gt;
**1 - fastest mode&lt;br /&gt;
**3 - fast compression mode&lt;br /&gt;
**5 - normal compression mode&lt;br /&gt;
**7 - maximum compression&lt;br /&gt;
**9 - ultra compression&lt;br /&gt;
*You can select one archival storage location where you will consistently send your AIPs.&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
 &lt;br /&gt;
In the general configuration section, you can select interface options and set [[Administrator_manual_1.2#Storage_service|Storage Service]] options for your Archivematica client.&lt;br /&gt;
&lt;br /&gt;
[[File:Generalconfig.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
=== Interface options ===&lt;br /&gt;
&lt;br /&gt;
Here, you can hide parts of the interface that you don't need to use. In particular, you can hide CONTENTdm DIP upload link, AtoM DIP upload link and DSpace transfer type.&lt;br /&gt;
&lt;br /&gt;
=== Storage Service options ===&lt;br /&gt;
&lt;br /&gt;
This is where you'll find the complete URL for the Storage Service. See [[Administrator_manual_1.2#Storage_service|Storage Service]] for more information about this feature.&lt;br /&gt;
&lt;br /&gt;
== Failures ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 includes dashboard failure reporting. &lt;br /&gt;
[[File:FailuresAdmin.png|1000px|center|thumb|General configuration options in Administration tab of the dashboard]] &lt;br /&gt;
&lt;br /&gt;
== Transfer source location ==&lt;br /&gt;
&lt;br /&gt;
Archivematica allows you to start transfers using the operating system's file browser or via a web interface. Source files for transfers, however, can't be uploaded using the web interface: they must exist on volumes accessible to the Archivematica MCP server and configured via the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
When starting a transfer you're required to select one or more directories of files to add to the transfer. &lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;Transfer source locations&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AIP storage locations ==&lt;br /&gt;
&lt;br /&gt;
AIP storage directories are directories in which completed AIPs are stored. Storage directories can be specified in a manner similar to transfer source directories using the [[Administrator_manual_1.2#Storage_service|Storage Service]].&lt;br /&gt;
&lt;br /&gt;
You can view your transfer source directories in the Administrative tab of the dashboard under &amp;quot;AIP storage locations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== AtoM DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can upload DIPs directly to an [https://www.ica-atom.org/ AtoM] website so the contents can be accessed online. The AtoM DIP upload configuration page is where you specify the details of the AtoM installation you'd like the DIPs uploaded to (and, if using Rsync to transfer the DIP files, Rsync transfer details).&lt;br /&gt;
&lt;br /&gt;
The parameters that you'll most likely want to set are &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;. These parameters, respectively, specify the destination AtoM website's URL, the email address used to log in to the website, and the password used to log in to the website.&lt;br /&gt;
&lt;br /&gt;
AtoM DIP upload can also use [http://en.wikipedia.org/wiki/Rsync Rsync] as a transfer mechanism. Rsync is an open source utility for efficiently transferring files. The &amp;lt;code&amp;gt;rsync-target&amp;lt;/code&amp;gt; parameter is used to specify an Rsync-style target host/directory pairing, &amp;quot;foobar.com:~/dips/&amp;quot; for example. The &amp;lt;code&amp;gt;rsync-command&amp;lt;/code&amp;gt; parameter is used to specify rsync connection options, &amp;quot;ssh -p 22222 -l user&amp;quot; for example. If you are using the rsync option, please see AtoM server configuration below.&lt;br /&gt;
&lt;br /&gt;
To set any parameters for AtoM DIP upload change the values, preserving the existing format they're specified in, in the &amp;quot;Command arguments&amp;quot; field then click &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that in AtoM, the sword plugin (Admin --&amp;gt; Plugins --&amp;gt; qtSwordPlugin) must be enabled in order for AtoM to receive uploaded DIPs. Enabling Job scheduling (Admin --&amp;gt; Settings --&amp;gt; Job scheduling) is also recommended.&lt;br /&gt;
&lt;br /&gt;
=== AtoM server configuration ===&lt;br /&gt;
&lt;br /&gt;
This server configuration step is necessary to allow Archivematica to log in to the AtoM server without passwords, and only when the user is deploying the rsync option described above in the AtoM DIP upload section. &lt;br /&gt;
&lt;br /&gt;
To enable sending DIPs from Archivematica to the AtoM server:&lt;br /&gt;
&lt;br /&gt;
Generate SSH keys for the Archivematica user. Leave the passphrase field blank.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo -i -u archivematica&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;/var/lib/archivematica/.ssh/id_rsa.pub&amp;lt;/code&amp;gt; somewhere handy, you will need it later.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to configure the AtoM server so Archivematica can send the DIPs using SSH/rsync. For that purpose, you will create a user called &amp;lt;code&amp;gt;archivematica&amp;lt;/code&amp;gt; and we are going to assign that user a restricted shell with access only to rsync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo apt-get install rssh&lt;br /&gt;
 $ sudo useradd -d /home/archivematica -m -s /usr/bin/rssh archivematica&lt;br /&gt;
 $ sudo passswd -l archivematica&lt;br /&gt;
 $ sudo vim /etc/rssh.conf // Make sure that allowrsync is uncommented!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the SSH key that we generated before:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ sudo mkdir /home/archivematica/.ssh&lt;br /&gt;
 $ chmod 700 /home/archivematica/.ssh/&lt;br /&gt;
 $ sudo vim /home/archivematica/.ssh/authorized_keys // Paste here the contents of id_dsa.pub&lt;br /&gt;
 $ chown -R archivematica:archivematica /home/archivematica&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Archivematica, make sure that you update the &amp;lt;code&amp;gt;--rsync-target&amp;lt;/code&amp;gt; accordingly.&amp;lt;br /&amp;gt;&lt;br /&gt;
These are the parameters that we are passing to the upload-qubit microservice.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go to the Administration &amp;gt; Upload DIP page in the dashboard.&lt;br /&gt;
&lt;br /&gt;
Generic parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--url=&amp;quot;http://atom-hostname/index.php&amp;quot; \&lt;br /&gt;
--email=&amp;quot;demo@example.com&amp;quot; \&lt;br /&gt;
--password=&amp;quot;demo&amp;quot; \&lt;br /&gt;
--uuid=&amp;quot;%SIPUUID%&amp;quot; \&lt;br /&gt;
--rsync-target=&amp;quot;archivematica@atom-hostname:/tmp&amp;quot; \&lt;br /&gt;
--debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONTENTdm DIP upload ==&lt;br /&gt;
&lt;br /&gt;
Archivematica can also upload DIPs to [http://www.contentdm.org/ CONTENTdm] instances. Multiple CONTENTdm destinations may be configured.&lt;br /&gt;
&lt;br /&gt;
For each possible CONTENTdm DIP upload destination, you'll specify a brief description and configuration parameters appropriate for the destination. Paramters include &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; (full path to the CONTENTdm API, including the leading 'http://' or 'https://', for example http://example.com:81/dmwebservices/index.php), &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; (Linux user and group on the CONTENTdm server, not a CONTENTdm username). Note that only &amp;lt;code&amp;gt;%ContentdmServer%&amp;lt;/code&amp;gt; is required is you are going to produce CONTENTdm Project Client packages; &amp;lt;code&amp;gt;%ContentdmUser%&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%ContentdmGroup%&amp;lt;/code&amp;gt; are also required if you are going to use the &amp;quot;direct upload&amp;quot; option for uploading your DIPs into CONTENTdm.&lt;br /&gt;
&lt;br /&gt;
When changing parameters for a CONTENTdm DIP upload destination simply change the values, preserving the existing format they're specified in. To add an upload destination fill in the form at the bottom of the page with the appropriate values. When you've completed your changes click the &amp;quot;Save&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PREMIS agent ==&lt;br /&gt;
&lt;br /&gt;
The PREMIS agent name and code can be set via the administration interface.&lt;br /&gt;
[[File:Premisagent-10.png|center|900px|thumbs]]&lt;br /&gt;
&lt;br /&gt;
== Rest API ==&lt;br /&gt;
&lt;br /&gt;
In addition to automation using the processingMCP.xml file, Archivematica includes a REST API for automating transfer approval. Using this API, you can create a custom script that copies a transfer to the appropriate directory then uses the &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; command, or some other means, to let Archivematica know that the copy is complete.&lt;br /&gt;
&lt;br /&gt;
=== API keys ===&lt;br /&gt;
&lt;br /&gt;
Use of the REST API requires the use of API keys. An API key is associated with a specific user. To generate an API key for a user:&lt;br /&gt;
&lt;br /&gt;
# Browse to &amp;lt;code&amp;gt;/administration/accounts/list/&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click the &amp;quot;Edit&amp;quot; button for the user you'd like to generate an API key for&lt;br /&gt;
# Click the &amp;quot;Regenerate API key&amp;quot; checkbox&lt;br /&gt;
# Click &amp;quot;Save&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After generating an API key, you can click the &amp;quot;Edit&amp;quot; button for the user and you should see the API key.&lt;br /&gt;
&lt;br /&gt;
=== IP whitelist ===&lt;br /&gt;
&lt;br /&gt;
In addition to creating API keys, you'll need to add the IP of any computer making REST requests to the REST API whitelist. The IP whitelist can be edited in the administration interface at &amp;lt;code&amp;gt;/administration/api/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Approving a transfer ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to approve a transfer. The transfer must first be copied into the appropriate watch directory. To determine the location of the appropriate watch directory, first figure out where the shared directory is from the &amp;lt;code&amp;gt;watchDirectoryPath&amp;lt;/code&amp;gt; value of &amp;lt;code&amp;gt;/etc/archivematica/MCPServer/serverConfig.conf&amp;lt;/code&amp;gt;. Within that directory is a subdirectory &amp;lt;code&amp;gt;activeTransfers&amp;lt;/code&amp;gt;. In this subdirectory are watch directories for the various transfer types.&lt;br /&gt;
&lt;br /&gt;
When using the REST API to approve a transfer, if a transfer type isn't specified, the transfer will be deemed a standard transfer.&lt;br /&gt;
&lt;br /&gt;
'''HTTP Method:''' POST&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/approve&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;directory&amp;lt;/code&amp;gt;: directory name of the transfer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; (optional): transfer type [standard|dspace|unzipped bag|zipped bag]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl --data &amp;quot;username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;amp;type=standard&amp;amp;directory=MyTransfer&amp;quot; http://127.0.0.1/api/transfer/approve&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&amp;quot;message&amp;quot;: &amp;quot;Approval successful.&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Listing unapproved transfers ===&lt;br /&gt;
&lt;br /&gt;
The REST API can be used to get a list of unapproved transfers. Each transfer's directory name and type is returned.&lt;br /&gt;
&lt;br /&gt;
'''Method:''' &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''URL:''' &amp;lt;code&amp;gt;/api/transfer/unapproved&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Parameters:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;: an API key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt;: the username associated with the API key&lt;br /&gt;
&lt;br /&gt;
Example curl command:&lt;br /&gt;
&lt;br /&gt;
    curl &amp;quot;http://127.0.0.1/api/transfer/unapproved?username=rick&amp;amp;api_key=f12d6b323872b3cef0b71be64eddd52f87b851a6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example result:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;Fetched unapproved transfers successfully.&amp;quot;,&lt;br /&gt;
        &amp;quot;results&amp;quot;: [{&lt;br /&gt;
                &amp;quot;directory&amp;quot;: &amp;quot;MyTransfer&amp;quot;,&lt;br /&gt;
               &amp;quot;type&amp;quot;: &amp;quot;standard&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
The dashboard provides a simple cookie-based user authentication system using the [https://docs.djangoproject.com/en/1.4/topics/auth/ Django authentication framework]. Access to the dashboard is limited only to logged-in users and a login page will be shown when the user is not recognized. If the application can't find any user in the database, the user creation page will be shown instead, allowing the creation of an administrator account.&lt;br /&gt;
&lt;br /&gt;
Users can be also created, modified and deleted from the Administration tab. Only users who are administrators can create and edit user accounts.&lt;br /&gt;
&lt;br /&gt;
You can add a new user to the system by clicking the &amp;quot;Add new&amp;quot; button on the user administration page. By adding a user you provide a way to access Archivematica using a username/password combination. Should you need to change a user's username or password, you can do so by clicking the &amp;quot;Edit&amp;quot; button, corresponding to the user, on the administration page. Should you need to revoke a user's access, you can click the corresponding &amp;quot;Delete&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== CLI creation of administrative users ===&lt;br /&gt;
&lt;br /&gt;
If you need an additional administrator user one can be created via the command-line, issue the following commands:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py createsuperuser&lt;br /&gt;
&lt;br /&gt;
=== CLI password resetting ===&lt;br /&gt;
&lt;br /&gt;
If you've forgotten the password for your administrator user, or any other user, you can change it via the command-line:&lt;br /&gt;
&lt;br /&gt;
    cd /usr/share/archivematica/dashboard&lt;br /&gt;
    export PATH=$PATH:/usr/share/archivematica/dashboard&lt;br /&gt;
    export DJANGO_SETTINGS_MODULE=settings.common&lt;br /&gt;
    python manage.py changepassword &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
Archivematica uses [http://en.wikipedia.org/wiki/PBKDF2 PBKDF2] as the default algorithm to store passwords. This should be sufficient for most users: it's quite secure, requiring massive amounts of computing time to break. However, other algorithms could be used as the following document explains: [https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords How Django stores passwords].&lt;br /&gt;
&lt;br /&gt;
Our plan is to extend this functionality in the future adding groups and granular permissions support.&lt;br /&gt;
&lt;br /&gt;
= Dashboard preservation planning tab =&lt;br /&gt;
&lt;br /&gt;
== Format Policy Registry (FPR) ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to the Format Policy Registry ===&lt;br /&gt;
&lt;br /&gt;
The Format Policy Registry (FPR) is a database which allows Archivematica users to define format policies for handling file formats. A format policy indicates the actions, tools and settings to apply to a file of a particular file format (e.g. conversion to preservation format, conversion to access format). Format policies will change as community standards, practices and tools evolve. Format policies are maintained by Artefactual, who provides a freely-available FPR server hosted at [http://fpr.archivematica.org fpr.archivematica.org]. This server stores structured information about normalization format policies for preservation and access. You can update your local FPR from the FPR server using the UPDATE button in the preservation planning tab of the dashboard. In addition, you can maintain local rules to add new formats or customize the behaviour of Archivematica. The Archivematica dashboard communicates with the FPR server via a REST API. &lt;br /&gt;
&lt;br /&gt;
==== First-time configuration ====&lt;br /&gt;
&lt;br /&gt;
The first time a new Archivematica installation is set up, it will attempt to connect to the FPR server as part of the initial configuration process. As a part of the setup, it will register the Archivematica install with the server and pull down the current set of format policies. In order to register the server, Archivematica will send the following information to the FPR Server, over an encrypted connection:&lt;br /&gt;
&lt;br /&gt;
#Agent Identifier (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#Agent Name (supplied by the user during registration while installing Archivematica)&lt;br /&gt;
#IP address of host&lt;br /&gt;
#UUID of Archivematica instance&lt;br /&gt;
#current time&lt;br /&gt;
&lt;br /&gt;
*The only information that will be passed back and forth between Archivematica and the FPR Server would be these format policies - what tool to run when normalizing for a given purpose (access, preservation) when a specific File Identification Tool identifies a specific File Format.  No information about the content that has been run through Archivematica, or any details about the Archivematica installation or configuration would be sent to the FPR Server. &lt;br /&gt;
&lt;br /&gt;
* Because Archivematica is an open source project, it is possible for any organization to conduct a software audit/code review before running Archivematica in a production environment in order to independently verify the information being shared with the FPR Server.  An organization could choose to run a private FPR Server, accessible only within their own network(s), to provide at least a limited version of the benefits of sharing format policies, while guaranteeing a completely self-contained preservation system. This is something that Artefactual is not intending to develop, but anyone is free to extend the software as they see fit, or to hire us or other developers to do so.&lt;br /&gt;
&lt;br /&gt;
=== Updating format policies ===&lt;br /&gt;
&lt;br /&gt;
FPR rules can be updated at any time from within the Preservation Planning tab in Archivematica. Clicking the &amp;quot;update&amp;quot; button will initiate an FPR pull which will bring in any new or altered rules since the last time an update was performed.&lt;br /&gt;
&lt;br /&gt;
=== Types of FPR entries ===&lt;br /&gt;
&lt;br /&gt;
==== Format ====&lt;br /&gt;
&lt;br /&gt;
In the FPR, a &amp;quot;format&amp;quot; is a record representing one or more related ''format versions'', which are records representing a specific file format. For example, the format record for &amp;quot;Graphics Interchange Format&amp;quot; (GIF) is comprised of format versions for both GIF 1987a and 1989a.&lt;br /&gt;
&lt;br /&gt;
When creating a new format version, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Description (required) - Text describing the format. This will be saved in METS files.&lt;br /&gt;
* Version (required) - The version number for this specific format version (not the FPR record). For example, for Adobe Illustrator 14 .ai files, you might choose &amp;quot;14&amp;quot;.&lt;br /&gt;
* Pronom id - The specific format version's unique identifier in [http://www.nationalarchives.gov.uk/PRONOM/Default.aspx PRONOM], the UK National Archives's format registry. This is optional, but highly recommended.&lt;br /&gt;
* Access format and Preservation format - Indicates whether this format is suitable as an access format for end users, and for preservation.&lt;br /&gt;
&lt;br /&gt;
==== Format Group ====&lt;br /&gt;
&lt;br /&gt;
A format group is a convenient grouping of related file formats which share common properties. For instance, the FPR includes an &amp;quot;Image (raster)&amp;quot; group which contains format records for GIF, JPEG, and PNG. Each format can belong to one (and only one) format group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Characterization ====&lt;br /&gt;
Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization micro-service always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is fully customizable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
===== Characterization tools =====&lt;br /&gt;
&lt;br /&gt;
Archivematica has four default characterization tools upon installation. Which tool will run on a given file depends on the type of file, as determined by the selected identification tool.&lt;br /&gt;
&lt;br /&gt;
====== Default ======&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
====== Multimedia ======&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduced three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
===== Writing a new characterization command =====&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.2#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Extraction ====&lt;br /&gt;
&lt;br /&gt;
Archivematica supports extracting contents from files during the transfer phase.&lt;br /&gt;
&lt;br /&gt;
Many transfers contain files which are packages of other files; examples of these include compressed archives, such as ZIP files, or disk images. Archivematica provides a transcription microservice which comes with several predefined rules to extract packages, and which is fully customizeable by Archivematica administrators. Administrators can write new commands, and assign existing formats to run for other file formats.&lt;br /&gt;
&lt;br /&gt;
===== Writing a new extraction command =====&lt;br /&gt;
&lt;br /&gt;
Writing an extraction command is very similar to writing an [[Administrator_manual_1.2#Identificaton Command|identification command]] or a [[Administrator_manual_1.2#Normalization Command|normalization command]].&lt;br /&gt;
&lt;br /&gt;
An extraction command is passed two arguments: the ''file to extract'', and the ''path to which the package should be extracted''. Similar to [[Administrator_manual_1.2#Normalization Command|normalization commands]], these arguments will be interpolated directly into &amp;quot;bashScript&amp;quot; and &amp;quot;command&amp;quot; scripts, and passed as positional arguments to &amp;quot;pythonScript&amp;quot; and &amp;quot;asIs&amp;quot; scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline position (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||First||The full path to the directory in which the package's contents should be extracted||/path/to/filename-uuid/&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||Second||The full path to the package file||/path/to/filename&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here's a simple example of how to call an existing tool (7-zip) without any extra logic:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;7z x -bd -o&amp;quot;%outputDirectory%&amp;quot; &amp;quot;%inputFile%&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Python script example is more complex, and attempts to determine whether any files were extracted in order to determine whether to exit 0 or 1 (and report success or failure):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from __future__ import print_function&lt;br /&gt;
import re&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def extract(package, outdir):&lt;br /&gt;
    # -a extracts only allocated files; we're not capturing unallocated files&lt;br /&gt;
    try:&lt;br /&gt;
        process = subprocess.Popen(['tsk_recover', package, '-a', outdir],&lt;br /&gt;
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)&lt;br /&gt;
        stdout, stderr = process.communicate()&lt;br /&gt;
&lt;br /&gt;
        match = re.match(r'Files Recovered: (\d+)', stdout.splitlines()[0])&lt;br /&gt;
        if match:&lt;br /&gt;
            if match.groups()[0] == '0':&lt;br /&gt;
                raise Exception('tsk_recover failed to extract any files with the message: {}'.format(stdout))&lt;br /&gt;
            else:&lt;br /&gt;
                print(stdout)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        return e&lt;br /&gt;
&lt;br /&gt;
    return 0&lt;br /&gt;
&lt;br /&gt;
def main(package, outdir):&lt;br /&gt;
    return extract(package, outdir)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    package = sys.argv[1]&lt;br /&gt;
    outdir = sys.argv[2]&lt;br /&gt;
    sys.exit(main(package, outdir))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Identification Tools ====&lt;br /&gt;
&lt;br /&gt;
The identification tool properties in Archivematica control the ways in which Archivematica identifies files and associates them with the FPR's version records. The current version of the FPR server contains two tools: a script based on the [http://www.openplanetsfoundation.org/ Open Planets Foundation's] [https://github.com/openplanets/fido/ FIDO] tool, which identifies based on the IDs in PRONOM, and a simple script which identifies files by their file extension. You can use the identification tools portion of FPR to customize the behaviour of the existing tools, or to write your own.&lt;br /&gt;
&lt;br /&gt;
==== Identification Commands ====&lt;br /&gt;
&lt;br /&gt;
Identification commands contain the actual code that a tool will run when identifying a file. This command will be run on every file in a transfer.&lt;br /&gt;
&lt;br /&gt;
When adding a new command, the following fields are available:&lt;br /&gt;
&lt;br /&gt;
* Identifier (mandatory) - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Script type (mandatory) - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
&lt;br /&gt;
When coding a command, you should expect your script to take the path to the file to be identifed as the first commandline argument. When returning an identification, the tool should print a single line containing ''only'' the identifier, and should exit 0. Any informative, diagnostic, and error message can be printed to stderr, where it will be visible to Archivematica users monitoring tool results. On failure, the tool should exit non-zero.&lt;br /&gt;
&lt;br /&gt;
==== Identification Rules ====&lt;br /&gt;
&lt;br /&gt;
These identification rules allow you to define the relationship between the output created by an identification tool, and one of the formats which exists in the FPR. This must be done for the format to be tracked internally by Archivematica, and for it to be used by normalization later on. For instance, if you created a FIDO configuration which returns MIME types, you could create a rule which associates the output &amp;quot;image/jpeg&amp;quot; with the &amp;quot;Generic JPEG&amp;quot; format in the FPR.&lt;br /&gt;
&lt;br /&gt;
Identification rules are necessary only when a tool is configured to return file extensions or MIME types. Because PUIDs are universal, Archivematica will always look these up for you without requiring any rules to be created, regardless of what tool is being used.&lt;br /&gt;
&lt;br /&gt;
When creating an identification rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Format - Allows you to select one of the formats which already exists in the FPR.&lt;br /&gt;
* Command - Indicates the command that produces this specific identification.&lt;br /&gt;
* Output - The text which is written to standard output by the specified command, such as &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Format Policy Tools ====&lt;br /&gt;
&lt;br /&gt;
Format policy tools control how Archivematica processes files during ingest. The most common kind of these tools are normalization tools, which produce preservation and access copies from ingested files. Archivematica comes configured with a number of commands and scripts to normalize several file formats, and you can use this section of the FPR to customize them or to create your own. These are organized similarly to the [[#Identification Tools]] documented above.&lt;br /&gt;
&lt;br /&gt;
Archivematica uses the following kinds of format policy rules:&lt;br /&gt;
&lt;br /&gt;
* Characterization&lt;br /&gt;
* Extraction&lt;br /&gt;
* Normalization - Access, preservation and thumbnails&lt;br /&gt;
* Event detail - Extracts information about a given tool in order to be inserted into a generated METS file.&lt;br /&gt;
* Transcription&lt;br /&gt;
* Verification - Validates a file produced by another command. For instance, a tool could use Exiftool or JHOVE to determine whether a thumbnail produced by a normalization command was valid and well-formed.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Commands ===&lt;br /&gt;
&lt;br /&gt;
Like the [[#Identification Commands]] above, format policy commands are scripts or command line statements which control how a normalization tool runs. This command will be run once on every file being normalized using this tool in a transfer.&lt;br /&gt;
&lt;br /&gt;
When creating a normalization command, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Tool - One or more tools to be associated with this command.&lt;br /&gt;
* Description - Human-readable identifier for the command. This will be displayed to the user when choosing an identification tool, so choose carefully.&lt;br /&gt;
* Command - The script's source, or the commandline statement to execute.&lt;br /&gt;
* Script type - Options are &amp;quot;Bash Script&amp;quot;, &amp;quot;Python Script&amp;quot;, &amp;quot;Command Line&amp;quot;, and &amp;quot;No shebang&amp;quot;. The first two options will have the appropriate shebang added as the first line before being executed directly. &amp;quot;No shebang&amp;quot; allows you to write a script in any language as long as the shebang is included as the first line.&lt;br /&gt;
* Output format (optional) - The format the command outputs. For example, a command to normalize audio to MP3 using ffmpeg would select the appropriate MP3 format from the dropdown.&lt;br /&gt;
* Output location (optional) - The path the normalized file will be written to. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Command usage - The purpose of the command; this will be used by Archivematica to decide whether a command is appropriate to run in different circumstances. Values are &amp;quot;Normalization&amp;quot;, &amp;quot;Event detail&amp;quot;, and &amp;quot;Verification&amp;quot;. See the [[#Writing a command]] section of the documentation for more information.&lt;br /&gt;
* Event detail command - A command to provide information about the software running this command. This will be written to the METS file as the &amp;quot;event detail&amp;quot; property. For example, the normalization commands which use ffmpeg use an event detail command to extract ffmpeg's version number.&lt;br /&gt;
&lt;br /&gt;
=== Format Policy Rules ===&lt;br /&gt;
&lt;br /&gt;
Format policy rules allow commands to be associated with specific file types. For instance, this allows you to configure the command that uses ImageMagick to create thumbnails to be run on .gif and .jpeg files, while selecting a different command to be run on .png files.&lt;br /&gt;
&lt;br /&gt;
When creating a format policy rule, the following mandatory fields must be filled out:&lt;br /&gt;
&lt;br /&gt;
* Purpose - Allows Archivematica to distinguish rules that should be used to normalize for preservation, normalize for access, to extract information, etc.&lt;br /&gt;
* Format - The file format the associated command should be selected for.&lt;br /&gt;
* Command - The specific command to call when this rule is used.&lt;br /&gt;
&lt;br /&gt;
=== Writing a command ===&lt;br /&gt;
&lt;br /&gt;
==== Identification command ====&lt;br /&gt;
&lt;br /&gt;
Identification commands are very simple to write, though they require some familiarity with Unix scripting.&lt;br /&gt;
&lt;br /&gt;
An identification command run once for every file in a transfer. It will be passed a single argument (the path to the file to identify), and no switches.&lt;br /&gt;
&lt;br /&gt;
On success, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print the identifier to stdout&lt;br /&gt;
* Exit 0&lt;br /&gt;
&lt;br /&gt;
On failure, a command should:&lt;br /&gt;
&lt;br /&gt;
* Print nothing to stdout&lt;br /&gt;
* Exit non-zero (Archivematica does not assign special significance to non-zero exit codes)&lt;br /&gt;
&lt;br /&gt;
A command can print anything to stderr on success or error, but this is purely informational - Archivematica won't do anything special with it. Anything printed to stderr by the command will be shown to the user in the Archivematica dashboard's detailed tool output page. You should print any useful error output to stderr if identification fails, but you can also print any useful extra information to stderr if identification succeeds.&lt;br /&gt;
&lt;br /&gt;
Here's a very simple Python script that identifies files by their file extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import os.path, sys&lt;br /&gt;
(_, extension) = os.path.splitext(sys.argv[1])&lt;br /&gt;
if len(extension) == 0:&lt;br /&gt;
	exit(1)&lt;br /&gt;
else:&lt;br /&gt;
	print extension.lower()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's a more complex Python example, which uses [http://www.sno.phy.queensu.ca/~phil/exiftool/ Exiftool]'s XML output to return the MIME type of a file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from lxml import etree&lt;br /&gt;
import subprocess&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    xml = subprocess.check_output(['exiftool', '-X', sys.argv[1]])&lt;br /&gt;
    doc = etree.fromstring(xml)&lt;br /&gt;
    print doc.find('.//{http://ns.exiftool.ca/File/1.0/}MIMEType').text&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, e&lt;br /&gt;
    exit(1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've written an identification command, you can register it in the FPR using the following steps:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for the command itself:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Command&amp;quot;.&lt;br /&gt;
# Select your tool from the &amp;quot;Tool&amp;quot; dropdown box.&lt;br /&gt;
# Fill out the Identifier with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Identify MIME-type using Exiftool&amp;quot;.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Enter the source code for your script in the &amp;quot;Command&amp;quot; box.&lt;br /&gt;
# Click &amp;quot;Create Command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which associate the possible outputs of your tool with the FPR's format records. This needs to be done once for every supported format; we'll show it with MP3, as an example.&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Identification Rules&amp;quot; page, and click &amp;quot;Create New Rule&amp;quot;.&lt;br /&gt;
# Choose the appropriate foramt from the Format dropdown - in our case, &amp;quot;Audio: MPEG Audio: MPEG 1/2 Audio Layer 3&amp;quot;.&lt;br /&gt;
# Choose your command from the Command dropdown.&lt;br /&gt;
# Enter the text your command will output when it identifies this format. For example, when our Exiftool command identifies an MP3 file, it will output &amp;quot;audio/mpeg&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this is complete, any new transfers you create will be able to use your new tool in the identification step.&lt;br /&gt;
&lt;br /&gt;
==== Normalization Command ====&lt;br /&gt;
&lt;br /&gt;
Normalization commands are a bit more complex to write because they take a few extra parameters.&lt;br /&gt;
&lt;br /&gt;
The goal of a normalization command is to take an input file and transform it into a new format. For instance, Archivematica provides commands to transform video content into FFV1 for preservation, and into H.264 for access.&lt;br /&gt;
&lt;br /&gt;
Archivematica provides several parameters specifying input and output filenames and other useful information. Several of the most common are shown in the examples below; a more complete list is in a later section of the documentation: [[#Normalization command variables and arguments]]&lt;br /&gt;
&lt;br /&gt;
When writing a bash script or a command line, you can reference the variables directly in your code, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;inkscape -z &amp;quot;%fileFullName%&amp;quot; --export-pdf=&amp;quot;%outputDirectory%%prefix%%fileName%%postfix%.pdf&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When writing a script in Python or other languages, the values will be passed to your script as commandline options, which you will need to parse. The following script provides an example using the argparse module that comes with Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;import argparse&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument('--file-full-name', dest='filename')&lt;br /&gt;
parser.add_argument('--output-file-name', dest='output')&lt;br /&gt;
parsed, _ = parser.parse_known_args()&lt;br /&gt;
args = [&lt;br /&gt;
    'ffmpeg', '-vsync', 'passthrough',&lt;br /&gt;
    '-i', parsed.filename,&lt;br /&gt;
    '-map', '0:v', '-map', '0:a',&lt;br /&gt;
    '-vcodec', 'ffv1', '-g', '1',&lt;br /&gt;
    '-acodec', 'pcm_s16le',&lt;br /&gt;
    parsed.output+'.mkv'&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
subprocess.call(args)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've created a command, the process of registering it is similar to creating a new identification tool. The folling examples will use the Python normalization script above.&lt;br /&gt;
&lt;br /&gt;
First, create a new tool record:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the &amp;quot;Preservation Planning&amp;quot; tab in the Archivematica dashboard.&lt;br /&gt;
# Navigate to the &amp;quot;Identification Tools&amp;quot; page, and click &amp;quot;Create New Tool&amp;quot;.&lt;br /&gt;
# Fill out the name of the tool and the version number of the tool in use. In our example, this would be &amp;quot;exiftool&amp;quot; and &amp;quot;9.37&amp;quot;.&lt;br /&gt;
# Click &amp;quot;Create&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Next, create a record for your new command:&lt;br /&gt;
&lt;br /&gt;
# Click &amp;quot;Create New Tool Command&amp;quot;.&lt;br /&gt;
# Fill out the Description with text to describe to a user what this tool does. For instance, we might choose &amp;quot;Normalize to mkv using ffmpeg&amp;quot;.&lt;br /&gt;
# Enter the source for your command in the Command textbox.&lt;br /&gt;
# Select the appropriate script type - in this case, &amp;quot;Python Script&amp;quot;.&lt;br /&gt;
# Select the appropriate output format from the dropdown. This indicates to Archivematica what kind of file this command will produce. In this case, choose &amp;quot;Video: Matroska: Generic MKV&amp;quot;.&lt;br /&gt;
# Enter the location the video will be saved to, using the script variables. You can usually use the &amp;quot;%outputFileName%&amp;quot; variable, and add the file extension - in this case &amp;quot;%outputFileName%.mkv&amp;quot;&lt;br /&gt;
# Select a verification command. Archivematica will try to use this tool to ensure that the file your command created works. Archivematica ships with two simple tools, which test whether the file exists and whether it's larger than 0 bytes, but you can create new commands that perform more complicated verifications.&lt;br /&gt;
# Finally, choose a command to produce the &amp;quot;Event detail&amp;quot; text that will be written in the section of the METS file covering the normalization event. Archivematica already includes a suitable command for ffmpeg, but you can also create a custom command.&lt;br /&gt;
# Click &amp;quot;Create command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Finally, you must create rules which will associate your command with the formats it should run on.&lt;br /&gt;
&lt;br /&gt;
==== Normalization command variables and arguments ====&lt;br /&gt;
&lt;br /&gt;
The following variables and arguments control the behaviour of format policy command scripts.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Name (bashScript and command)||Commandline option (pythonScript and asIs)||Description||Sample value&lt;br /&gt;
|-&lt;br /&gt;
|%fileName%||--input-file=||The filename of the file to process. This variable holds the file's basename, not the whole path.||video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileDirectory%||--file-directory=||The directory containing the input file.||/path/to&lt;br /&gt;
|-&lt;br /&gt;
|%inputFile%||--file-name=||The fully-qualified path to the file to process.||/path/to/video.mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtension%||--file-extension=||The file extension of the input file.||mov&lt;br /&gt;
|-&lt;br /&gt;
|%fileExtensionWithDot%||--file-extension-with-dot=||As above, without stripping the period.||.mov&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The directory to which the output file should be saved.||/path/to/access/copies&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileUUID%||--output-file-uuid=||The unique identifier assigned by Archivematica to the output file.||1abedf3e-3a4b-46d7-97da-bd9ae13859f5&lt;br /&gt;
|-&lt;br /&gt;
|%outputDirectory%||--output-directory=||The fully-qualified path to the directory where the new file should be written.||/var/archivematica/sharedDirectory/www/AIPsStore/uuid&lt;br /&gt;
|-&lt;br /&gt;
|%outputFileName%||--output-file-name=||The fully-qualified path to the output file, minus the file extension.||/path/to/access/copies/video-uuid&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Customization and automation =&lt;br /&gt;
* Workflow processing decisions can be made in the processingMCP.xml file. [https://www.archivematica.org/wiki/Administrator_manual_0.10#Processing_configuration See here.]&lt;br /&gt;
* Workflows are currently created at the development level. &lt;br /&gt;
*: Some resources avialable&lt;br /&gt;
*:* [[MCP_Basic_Configuration]]&lt;br /&gt;
*:* [[MCP]]&lt;br /&gt;
*:* [[Creating_Custom_Workflows]]&lt;br /&gt;
*:* [[Development]]&lt;br /&gt;
* Normalization commands can be viewed in the preservation planning tab.&lt;br /&gt;
* Normalization paths and commands are currently editable under the preservation planning tab in the dashboard.&lt;br /&gt;
&lt;br /&gt;
= Elasticsearch =&lt;br /&gt;
&lt;br /&gt;
Archivematica has the capability of indexing data about files contained in AIPs and this data can be [[Elasticsearch Development|accessed programatically]] for various applications.&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an ElasticSearch index please see [[ElasticSearch Administration]].&lt;br /&gt;
&lt;br /&gt;
If, for whatever reason, you need to delete an Elasticsearch index programmatically, this can be done with pyes using the following code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
sys.path.append(&amp;quot;/home/demo/archivematica/src/archivematicaCommon/lib/externals&amp;quot;)&lt;br /&gt;
from pyes import *&lt;br /&gt;
conn = ES('127.0.0.1:9200')&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    conn.delete_index('aips')&lt;br /&gt;
except:&lt;br /&gt;
    print &amp;quot;Error deleting index or index already deleted.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the AIP index ===&lt;br /&gt;
&lt;br /&gt;
To rebuild the ElasticSearch AIP index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-aip-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-aip-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-aip-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the transfer index ===&lt;br /&gt;
&lt;br /&gt;
Similarly, to rebuild the ElasticSearch transfer data index enter the following to find the location of the rebuilding script:&lt;br /&gt;
&lt;br /&gt;
    locate rebuild-elasticsearch-transfer-index-from-files&lt;br /&gt;
&lt;br /&gt;
Copy the location of the script then enter the following to perform the rebuild (substituting &amp;quot;/your/script/location/rebuild-elasticsearch-transfer-index-from-files&amp;quot; with the location of the script):&lt;br /&gt;
&lt;br /&gt;
    /your/script/location/rebuild-elasticsearch-transfer-index-from-files &amp;lt;location of your AIP store&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Data backup =&lt;br /&gt;
&lt;br /&gt;
In Archivematica there are three types of data you'll likely want to back up:&lt;br /&gt;
* Filesystem (particularly your storage directories)&lt;br /&gt;
* MySQL&lt;br /&gt;
* ElasticSearch&lt;br /&gt;
&lt;br /&gt;
MySQL is used to store short-term processing data. You can back up the MySQL database by using the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mysqldump -u &amp;lt;your username&amp;gt; -p&amp;lt;your password&amp;gt; -c MCP &amp;gt; &amp;lt;filename of backup&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ElasticSearch is used to store long-term data. Instructions and scripts for backing up and restoring ElasticSearch are available [http://tech.superhappykittymeow.com/?p=296 here].&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
Once you've set up Archivematica it's a good practice, for the sake of security, to change the default passwords.&lt;br /&gt;
&lt;br /&gt;
== MySQL ==&lt;br /&gt;
&lt;br /&gt;
You should create a new MySQL user or change the password of the default &amp;quot;archivematica&amp;quot; MySQL user. The change the password of the default user, enter the following into the command-line:&lt;br /&gt;
&lt;br /&gt;
 $ mysql -u root -p&amp;lt;your MyQL root password&amp;gt; -D mysql \&lt;br /&gt;
    -e &amp;quot;SET PASSWORD FOR 'archivematica'@'localhost' = PASSWORD('&amp;lt;new password&amp;gt;'); \&lt;br /&gt;
    FLUSH PRIVILEGES;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you've done this you can change Archivematica's MySQL database access credentials by editing these two files:&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/archivematica/archivematicaCommon/dbsettings&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt; settings)&lt;br /&gt;
* &amp;lt;code&amp;gt;/usr/share/archivematica/dashboard/settings/common.py&amp;lt;/code&amp;gt; (change the &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; settings in the &amp;lt;code&amp;gt;DATABASES&amp;lt;/code&amp;gt; section)&lt;br /&gt;
&lt;br /&gt;
Archivematica does not presently support secured MySQL communication so MySQL should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1645 1645].&lt;br /&gt;
&lt;br /&gt;
== AtoM ==&lt;br /&gt;
&lt;br /&gt;
In addition to changing the MySQL credentials, if you've also installed AtoM you'll want to set the password for it as well. Note that after changing your AtoM credentials you should update the credentials on the AtoM DIP upload administration page as well.&lt;br /&gt;
&lt;br /&gt;
== Gearman ==&lt;br /&gt;
&lt;br /&gt;
Archivematica relies on the German server for queuing work that needs to be done. Gearman currently doesn't support secured connections so Gearman should be run locally or on a secure, isolated network. See issue [https://projects.artefactual.com/issues/1345 1345].&lt;br /&gt;
&lt;br /&gt;
= Questions =&lt;br /&gt;
&lt;br /&gt;
If you run into any difficulties while administrating Archivematica, please check out our FAQ and, if that doesn't help you, contain us using the Archivematica discussion group.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
* [[AM_FAQ|Solutions to common questions]]&lt;br /&gt;
&lt;br /&gt;
== Discussion group ==&lt;br /&gt;
* [http://groups.google.com/group/archivematica?hl=en Discussion group] for questions not covered by the FAQ&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=User:Mdemeo/Characterization&amp;diff=10011</id>
		<title>User:Mdemeo/Characterization</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=User:Mdemeo/Characterization&amp;diff=10011"/>
		<updated>2014-08-07T00:35:06Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Created page with &amp;quot;Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties, and ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Characterization is the process of producing technical metadata for an object. Archivematica's characterization aims both to document the object's significant properties, and to extract technical metadata contained within the object.&lt;br /&gt;
&lt;br /&gt;
Prior to Archivematica 1.2, the characterization microservice always ran the [http://projects.iq.harvard.edu/fits FITS] tool. As of Archivematica 1.2, characterization is now fully customizeable by the Archivematica administrator.&lt;br /&gt;
&lt;br /&gt;
== Characterization tools ==&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 ships with four characterization tools. Which tool will run on a given file depends on the type of file, as determined by Archivematica's identification tool.&lt;br /&gt;
&lt;br /&gt;
=== Default ===&lt;br /&gt;
&lt;br /&gt;
The default characterization tool is FITS; it will be used if no specific characterization rule exists for the file being scanned.&lt;br /&gt;
&lt;br /&gt;
It is possible to create new default characterization commands, which can either replace FITS or run alongside it on every file.&lt;br /&gt;
&lt;br /&gt;
=== Multimedia ===&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.2 introduces three new multimedia characterization tools. These tools were selected for their rich metadata extraction, as well as for their speed. Depending on the type of the file being scanned, one or more of these tools may be called instead of FITS.&lt;br /&gt;
&lt;br /&gt;
* [http://ffmpeg.org/ FFprobe], a characterization tool built on top of the same core as FFmpeg, the normalization software used by Archivematica&lt;br /&gt;
* [http://mediaarea.net/en/MediaInfo MediaInfo], a characterization tool oriented towards audio and video data&lt;br /&gt;
* [http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ExifTool], a characterization tool oriented towards still image data and extraction of embedded metadata&lt;br /&gt;
&lt;br /&gt;
== Writing a new characterization command ==&lt;br /&gt;
&lt;br /&gt;
Information on writing new characterization commands can be found in the [[Administrator_manual_1.1#Format_Policy_Rules|FPR administrator's manual]].&lt;br /&gt;
&lt;br /&gt;
Writing a characterization command is very similar to writing an [[Administrator_manual_1.1#Identificaton Command|identification command]] or a [[Administrator_manual_1.1#Normalization Command|normalization command]]. Like an identification command, a characterization command is designed to run a tool and produce output to standard out. Output from characterization commands is expected to be valid XML, and will be included in the AIP's METS document within the file's &amp;lt;objectCharacteristicsExtension&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
When creating a characterization command, the &amp;quot;output format&amp;quot; should be set to &amp;quot;XML 1.0&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Install-1.0-packages&amp;diff=9316</id>
		<title>Install-1.0-packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Install-1.0-packages&amp;diff=9316"/>
		<updated>2014-01-10T19:37:31Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Fix uwsgi instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Deploying Archivematica 1.0 packages ==&lt;br /&gt;
&lt;br /&gt;
Archivematica packages are hosted on Launchpad, in an Ubuntu PPA (Personal Package Archive).  There are a number of Archivematica PPA's, the test versions of Archivematica 1.0 packages are hosted in the archivematica/daily ppa.  In order to install software onto your Ubuntu 12.04 system from this PPA:&lt;br /&gt;
&lt;br /&gt;
*Update your system to the most recent 12.04 release (12.04.3)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Add the archivematica/daily PPA to your list of trusted repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:archivematica/daily&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: The daily PPA is used for daily snapshots, it is not suitable for use in a production environment. When testing of the packages in the daily PPA is complete, they will be copied to the archivematica/release ppa for production use.&lt;br /&gt;
&lt;br /&gt;
*Fetch a list of the software from the archivematica/daily ppa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Install the storage service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install archivematica-storage-service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Configure the storage service&lt;br /&gt;
note:these steps are safe to do on a desktop, or a machine dedicated to Archivematica.  They may not be advisable on an existing web server.  Consult with your web server administrator if you are unsure. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rm /etc/nginx/sites-enabled/default&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/storage /etc/nginx/sites-enabled/storage&lt;br /&gt;
sudo ln -s /etc/uwsgi/apps-available/storage.ini /etc/uwsgi/apps-enabled/storage.ini&lt;br /&gt;
sudo service uwsgi restart&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Test the storage service&lt;br /&gt;
go to the following link in a web browser:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8000  (or use the ip address of the machine you have been installing on).  &amp;lt;p&amp;gt;&lt;br /&gt;
log in as user: test pass: test&lt;br /&gt;
&lt;br /&gt;
* Delete the test user and create a new user&lt;br /&gt;
&lt;br /&gt;
The storage service runs as a separate web app from the Archivematica dashboard, and has its own set of users.  You should add at least one user, and delete or modify the test user.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9068</id>
		<title>Forensic imaging steps for 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9068"/>
		<updated>2013-11-01T16:51:38Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Note more completed tasks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; [[:Category:Development documentation|Development documentation]] &amp;gt; [[Digital forensics image ingest]] &amp;gt; Forensic imaging steps for 1.1&lt;br /&gt;
[[Category:Development documentation]]&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlines the mandatory steps that still need to be completed for forensic imaging in 1.1, and some additional steps that would let Archivematica generalize the functionality into the standard transfer.&lt;br /&gt;
&lt;br /&gt;
== Necessary improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Disk image imaging metadata must be able to be added ===&lt;br /&gt;
&lt;br /&gt;
Forensic image transfers need to provide the ability to include some [[Digital forensics image ingest#Metadata_requirements|metadata at the beginning of the transfer]].&lt;br /&gt;
&lt;br /&gt;
This is partially implemented and needs to be rebased onto the 1.0 branch.&lt;br /&gt;
&lt;br /&gt;
=== File identification commands must recognize disk images ===&lt;br /&gt;
&lt;br /&gt;
Since the new extraction model is based on the FPR, and hence requires file identification, it will be necessary to ensure the identification microservices can identify disk images in order to allow them to be extracted.&lt;br /&gt;
&lt;br /&gt;
=== Forensic tools must be packaged ===&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Disk image extraction commands must be added to the FPR &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Currently an extraction command using tsk_recover exists; this will allow sleuthkit-based images to be extracted. Other formats may be needed as well.&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5843&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Extracted package deletion must be optional &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Currently, whether or not extracted packages will be retained after decompression is hardcoded in the package extraction script, as it was in the old extraction code. (The current behaviour is to always delete the package after decompression.) This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5894&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Users should be offered the choice of whether to extract packages &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5894&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; New &amp;quot;Examine Contents&amp;quot; microservice must be added &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5880&lt;br /&gt;
&lt;br /&gt;
This step [[Digital forensics image ingest#Detail|runs the bulk_extractor tool]] and indexes the output to allow for later visualization and examination.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; New characterization scripts must be written for fiwalk &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5866&lt;br /&gt;
&lt;br /&gt;
It's previously been suggested that Archivematica use [[Digital forensics image ingest#fiwalk|Mark Matienzo's fiwalk configuration that uses FIDO]] but this may no longer be necessary now that FIDO is implemented as a general identification tool - extracted contents will always be identifiable using FIDO if the user selects that as their identification tool.&lt;br /&gt;
&lt;br /&gt;
== Potential improvements ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Alternate characterization tools should be implemented &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Implemented in https://projects.artefactual.com/issues/5866&lt;br /&gt;
&lt;br /&gt;
Disk image characterization should be [[Digital forensics image ingest#Detail|done with fiwalk]].&lt;br /&gt;
&lt;br /&gt;
Currently the &amp;quot;characterize and extract metadata&amp;quot; step always uses FITS, but in 1.0 the groundwork was laid for allowing this to be controllable using the FPR instead. If this is completed, then we can simply write FPR rules to control characterization of disk images.&lt;br /&gt;
&lt;br /&gt;
=== Provide robust identification fallbacks using additional microservice(s) ===&lt;br /&gt;
&lt;br /&gt;
Currently identification happens using a single tool; if identification fails, the file will not be identified. We provide a single case fallback in the scripts that handle file identification and FIDO. Providing a more robust fallback would be desirable - e.g., by allowing individual files to fall back to other IDTools if identification fails. This would allow alternate tools to provide identification results for things that FIDO currently can't identify, such as disk images, without needing to clutter the existing scripts.&lt;br /&gt;
&lt;br /&gt;
=== Recursive package extraction ===&lt;br /&gt;
&lt;br /&gt;
The current package extraction code extracts in one pass. If a package contains additional packages that Archivematica can extract, they currently won't be extracted. The code should be updated in order to allow extraction of nested packages - for instance ZIP files containing other ZIPs; tarballs in uncommon compression formats (such as .tar.xz); and disk images containing compressed archives.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9065</id>
		<title>Forensic imaging steps for 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9065"/>
		<updated>2013-10-30T21:58:00Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Document completed tasks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; [[:Category:Development documentation|Development documentation]] &amp;gt; [[Digital forensics image ingest]] &amp;gt; Forensic imaging steps for 1.1&lt;br /&gt;
[[Category:Development documentation]]&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlines the mandatory steps that still need to be completed for forensic imaging in 1.1, and some additional steps that would let Archivematica generalize the functionality into the standard transfer.&lt;br /&gt;
&lt;br /&gt;
== Necessary improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Disk image imaging metadata must be able to be added ===&lt;br /&gt;
&lt;br /&gt;
Forensic image transfers need to provide the ability to include some [[Digital forensics image ingest#Metadata_requirements|metadata at the beginning of the transfer]].&lt;br /&gt;
&lt;br /&gt;
This is partially implemented and needs to be rebased onto the 1.0 branch.&lt;br /&gt;
&lt;br /&gt;
=== File identification commands must recognize disk images ===&lt;br /&gt;
&lt;br /&gt;
Since the new extraction model is based on the FPR, and hence requires file identification, it will be necessary to ensure the identification microservices can identify disk images in order to allow them to be extracted.&lt;br /&gt;
&lt;br /&gt;
=== Forensic tools must be packaged ===&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Disk image extraction commands must be added to the FPR &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Currently an extraction command using tsk_recover exists; this will allow sleuthkit-based images to be extracted. Other formats may be needed as well.&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5843&lt;br /&gt;
&lt;br /&gt;
=== Extracted package deletion must be optional ===&lt;br /&gt;
&lt;br /&gt;
Currently, whether or not extracted packages will be retained after decompression is hardcoded in the package extraction script, as it was in the old extraction code. (The current behaviour is to always delete the package after decompression.) This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== Users should be offered the choice of whether to extract packages ===&lt;br /&gt;
&lt;br /&gt;
This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; New &amp;quot;Examine Contents&amp;quot; microservice must be added &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5880&lt;br /&gt;
&lt;br /&gt;
This step [[Digital forensics image ingest#Detail|runs the bulk_extractor tool]] and indexes the output to allow for later visualization and examination.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; New characterization scripts must be written for fiwalk &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Being tracked in https://projects.artefactual.com/issues/5866&lt;br /&gt;
&lt;br /&gt;
It's previously been suggested that Archivematica use [[Digital forensics image ingest#fiwalk|Mark Matienzo's fiwalk configuration that uses FIDO]] but this may no longer be necessary now that FIDO is implemented as a general identification tool - extracted contents will always be identifiable using FIDO if the user selects that as their identification tool.&lt;br /&gt;
&lt;br /&gt;
== Potential improvements ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt; Alternate characterization tools should be implemented &amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Implemented in https://projects.artefactual.com/issues/5866&lt;br /&gt;
&lt;br /&gt;
Disk image characterization should be [[Digital forensics image ingest#Detail|done with fiwalk]].&lt;br /&gt;
&lt;br /&gt;
Currently the &amp;quot;characterize and extract metadata&amp;quot; step always uses FITS, but in 1.0 the groundwork was laid for allowing this to be controllable using the FPR instead. If this is completed, then we can simply write FPR rules to control characterization of disk images.&lt;br /&gt;
&lt;br /&gt;
=== Provide robust identification fallbacks using additional microservice(s) ===&lt;br /&gt;
&lt;br /&gt;
Currently identification happens using a single tool; if identification fails, the file will not be identified. We provide a single case fallback in the scripts that handle file identification and FIDO. Providing a more robust fallback would be desirable - e.g., by allowing individual files to fall back to other IDTools if identification fails. This would allow alternate tools to provide identification results for things that FIDO currently can't identify, such as disk images, without needing to clutter the existing scripts.&lt;br /&gt;
&lt;br /&gt;
=== Recursive package extraction ===&lt;br /&gt;
&lt;br /&gt;
The current package extraction code extracts in one pass. If a package contains additional packages that Archivematica can extract, they currently won't be extracted. The code should be updated in order to allow extraction of nested packages - for instance ZIP files containing other ZIPs; tarballs in uncommon compression formats (such as .tar.xz); and disk images containing compressed archives.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9020</id>
		<title>Forensic imaging steps for 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9020"/>
		<updated>2013-10-21T22:20:56Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Add category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; [[:Category:Development documentation|Development documentation]] &amp;gt; [[Digital forensics image ingest]] &amp;gt; Forensic imaging steps for 1.1&lt;br /&gt;
[[Category:Development documentation]]&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlines the mandatory steps that still need to be completed for forensic imaging in 1.1, and some additional steps that would let Archivematica generalize the functionality into the standard transfer.&lt;br /&gt;
&lt;br /&gt;
== Necessary improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Disk image imaging metadata must be able to be added ===&lt;br /&gt;
&lt;br /&gt;
Forensic image transfers need to provide the ability to include some [[Digital forensics image ingest#Metadata_requirements|metadata at the beginning of the transfer]].&lt;br /&gt;
&lt;br /&gt;
This is partially implemented and needs to be rebased onto the 1.0 branch.&lt;br /&gt;
&lt;br /&gt;
=== File identification commands must recognize disk images ===&lt;br /&gt;
&lt;br /&gt;
Since the new extraction model is based on the FPR, and hence requires file identification, it will be necessary to ensure the identification microservices can identify disk images in order to allow them to be extracted.&lt;br /&gt;
&lt;br /&gt;
=== Forensic tools must be packaged ===&lt;br /&gt;
&lt;br /&gt;
=== Disk image extraction commands must be added to the FPR ===&lt;br /&gt;
&lt;br /&gt;
=== Extracted package deletion must be optional ===&lt;br /&gt;
&lt;br /&gt;
Currently, whether or not extracted packages will be retained after decompression is hardcoded in the package extraction script, as it was in the old extraction code. (The current behaviour is to always delete the package after decompression.) This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== Users should be offered the choice of whether to extract packages ===&lt;br /&gt;
&lt;br /&gt;
This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== New &amp;quot;Examine Contents&amp;quot; microservice must be added ===&lt;br /&gt;
&lt;br /&gt;
This step [[Digital forensics image ingest#Detail|runs the bulk_extractor tool]] and indexes the output to allow for later visualization and examination.&lt;br /&gt;
&lt;br /&gt;
=== New characterization scripts must be written for fiwalk ===&lt;br /&gt;
&lt;br /&gt;
It's previously been suggested that Archivematica use [[Digital forensics image ingest#fiwalk|Mark Matienzo's fiwalk configuration that uses FIDO]] but this may no longer be necessary now that FIDO is implemented as a general identification tool - extracted contents will always be identifiable using FIDO if the user selects that as their identification tool.&lt;br /&gt;
&lt;br /&gt;
== Potential improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Alternate characterization tools should be implemented ===&lt;br /&gt;
&lt;br /&gt;
Disk image characterization should be [[Digital forensics image ingest#Detail|done with fiwalk]].&lt;br /&gt;
&lt;br /&gt;
Currently the &amp;quot;characterize and extract metadata&amp;quot; step always uses FITS, but in 1.0 the groundwork was laid for allowing this to be controllable using the FPR instead. If this is completed, then we can simply write FPR rules to control characterization of disk images.&lt;br /&gt;
&lt;br /&gt;
=== Provide robust identification fallbacks using additional microservice(s) ===&lt;br /&gt;
&lt;br /&gt;
Currently identification happens using a single tool; if identification fails, the file will not be identified. We provide a single case fallback in the scripts that handle file identification and FIDO. Providing a more robust fallback would be desirable - e.g., by allowing individual files to fall back to other IDTools if identification fails. This would allow alternate tools to provide identification results for things that FIDO currently can't identify, such as disk images, without needing to clutter the existing scripts.&lt;br /&gt;
&lt;br /&gt;
=== Recursive package extraction ===&lt;br /&gt;
&lt;br /&gt;
The current package extraction code extracts in one pass. If a package contains additional packages that Archivematica can extract, they currently won't be extracted. The code should be updated in order to allow extraction of nested packages - for instance ZIP files containing other ZIPs; tarballs in uncommon compression formats (such as .tar.xz); and disk images containing compressed archives.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9019</id>
		<title>Forensic imaging steps for 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9019"/>
		<updated>2013-10-21T22:17:47Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Add version header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; [[:Category:Development documentation|Development documentation]] &amp;gt; [[Digital forensics image ingest]] &amp;gt; Forensic imaging steps for 1.1&lt;br /&gt;
&lt;br /&gt;
Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlines the mandatory steps that still need to be completed for forensic imaging in 1.1, and some additional steps that would let Archivematica generalize the functionality into the standard transfer.&lt;br /&gt;
&lt;br /&gt;
== Necessary improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Disk image imaging metadata must be able to be added ===&lt;br /&gt;
&lt;br /&gt;
Forensic image transfers need to provide the ability to include some [[Digital forensics image ingest#Metadata_requirements|metadata at the beginning of the transfer]].&lt;br /&gt;
&lt;br /&gt;
This is partially implemented and needs to be rebased onto the 1.0 branch.&lt;br /&gt;
&lt;br /&gt;
=== File identification commands must recognize disk images ===&lt;br /&gt;
&lt;br /&gt;
Since the new extraction model is based on the FPR, and hence requires file identification, it will be necessary to ensure the identification microservices can identify disk images in order to allow them to be extracted.&lt;br /&gt;
&lt;br /&gt;
=== Forensic tools must be packaged ===&lt;br /&gt;
&lt;br /&gt;
=== Disk image extraction commands must be added to the FPR ===&lt;br /&gt;
&lt;br /&gt;
=== Extracted package deletion must be optional ===&lt;br /&gt;
&lt;br /&gt;
Currently, whether or not extracted packages will be retained after decompression is hardcoded in the package extraction script, as it was in the old extraction code. (The current behaviour is to always delete the package after decompression.) This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== Users should be offered the choice of whether to extract packages ===&lt;br /&gt;
&lt;br /&gt;
This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== New &amp;quot;Examine Contents&amp;quot; microservice must be added ===&lt;br /&gt;
&lt;br /&gt;
This step [[Digital forensics image ingest#Detail|runs the bulk_extractor tool]] and indexes the output to allow for later visualization and examination.&lt;br /&gt;
&lt;br /&gt;
=== New characterization scripts must be written for fiwalk ===&lt;br /&gt;
&lt;br /&gt;
It's previously been suggested that Archivematica use [[Digital forensics image ingest#fiwalk|Mark Matienzo's fiwalk configuration that uses FIDO]] but this may no longer be necessary now that FIDO is implemented as a general identification tool - extracted contents will always be identifiable using FIDO if the user selects that as their identification tool.&lt;br /&gt;
&lt;br /&gt;
== Potential improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Alternate characterization tools should be implemented ===&lt;br /&gt;
&lt;br /&gt;
Disk image characterization should be [[Digital forensics image ingest#Detail|done with fiwalk]].&lt;br /&gt;
&lt;br /&gt;
Currently the &amp;quot;characterize and extract metadata&amp;quot; step always uses FITS, but in 1.0 the groundwork was laid for allowing this to be controllable using the FPR instead. If this is completed, then we can simply write FPR rules to control characterization of disk images.&lt;br /&gt;
&lt;br /&gt;
=== Provide robust identification fallbacks using additional microservice(s) ===&lt;br /&gt;
&lt;br /&gt;
Currently identification happens using a single tool; if identification fails, the file will not be identified. We provide a single case fallback in the scripts that handle file identification and FIDO. Providing a more robust fallback would be desirable - e.g., by allowing individual files to fall back to other IDTools if identification fails. This would allow alternate tools to provide identification results for things that FIDO currently can't identify, such as disk images, without needing to clutter the existing scripts.&lt;br /&gt;
&lt;br /&gt;
=== Recursive package extraction ===&lt;br /&gt;
&lt;br /&gt;
The current package extraction code extracts in one pass. If a package contains additional packages that Archivematica can extract, they currently won't be extracted. The code should be updated in order to allow extraction of nested packages - for instance ZIP files containing other ZIPs; tarballs in uncommon compression formats (such as .tar.xz); and disk images containing compressed archives.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9018</id>
		<title>Forensic imaging steps for 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Forensic_imaging_steps_for_1.1&amp;diff=9018"/>
		<updated>2013-10-21T22:16:40Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Created page with &amp;quot;Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Archivematica 1.0 has changed the way that several processes work, which has changed the scope of what's necessary to implement for forensic disk imaging. This document outlines the mandatory steps that still need to be completed for forensic imaging in 1.1, and some additional steps that would let Archivematica generalize the functionality into the standard transfer.&lt;br /&gt;
&lt;br /&gt;
== Necessary improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Disk image imaging metadata must be able to be added ===&lt;br /&gt;
&lt;br /&gt;
Forensic image transfers need to provide the ability to include some [[Digital forensics image ingest#Metadata_requirements|metadata at the beginning of the transfer]].&lt;br /&gt;
&lt;br /&gt;
This is partially implemented and needs to be rebased onto the 1.0 branch.&lt;br /&gt;
&lt;br /&gt;
=== File identification commands must recognize disk images ===&lt;br /&gt;
&lt;br /&gt;
Since the new extraction model is based on the FPR, and hence requires file identification, it will be necessary to ensure the identification microservices can identify disk images in order to allow them to be extracted.&lt;br /&gt;
&lt;br /&gt;
=== Forensic tools must be packaged ===&lt;br /&gt;
&lt;br /&gt;
=== Disk image extraction commands must be added to the FPR ===&lt;br /&gt;
&lt;br /&gt;
=== Extracted package deletion must be optional ===&lt;br /&gt;
&lt;br /&gt;
Currently, whether or not extracted packages will be retained after decompression is hardcoded in the package extraction script, as it was in the old extraction code. (The current behaviour is to always delete the package after decompression.) This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== Users should be offered the choice of whether to extract packages ===&lt;br /&gt;
&lt;br /&gt;
This must be made optional via user choice in the UI, and should be exposed as a persistent option in the processing configuration.&lt;br /&gt;
&lt;br /&gt;
=== New &amp;quot;Examine Contents&amp;quot; microservice must be added ===&lt;br /&gt;
&lt;br /&gt;
This step [[Digital forensics image ingest#Detail|runs the bulk_extractor tool]] and indexes the output to allow for later visualization and examination.&lt;br /&gt;
&lt;br /&gt;
=== New characterization scripts must be written for fiwalk ===&lt;br /&gt;
&lt;br /&gt;
It's previously been suggested that Archivematica use [[Digital forensics image ingest#fiwalk|Mark Matienzo's fiwalk configuration that uses FIDO]] but this may no longer be necessary now that FIDO is implemented as a general identification tool - extracted contents will always be identifiable using FIDO if the user selects that as their identification tool.&lt;br /&gt;
&lt;br /&gt;
== Potential improvements ==&lt;br /&gt;
&lt;br /&gt;
=== Alternate characterization tools should be implemented ===&lt;br /&gt;
&lt;br /&gt;
Disk image characterization should be [[Digital forensics image ingest#Detail|done with fiwalk]].&lt;br /&gt;
&lt;br /&gt;
Currently the &amp;quot;characterize and extract metadata&amp;quot; step always uses FITS, but in 1.0 the groundwork was laid for allowing this to be controllable using the FPR instead. If this is completed, then we can simply write FPR rules to control characterization of disk images.&lt;br /&gt;
&lt;br /&gt;
=== Provide robust identification fallbacks using additional microservice(s) ===&lt;br /&gt;
&lt;br /&gt;
Currently identification happens using a single tool; if identification fails, the file will not be identified. We provide a single case fallback in the scripts that handle file identification and FIDO. Providing a more robust fallback would be desirable - e.g., by allowing individual files to fall back to other IDTools if identification fails. This would allow alternate tools to provide identification results for things that FIDO currently can't identify, such as disk images, without needing to clutter the existing scripts.&lt;br /&gt;
&lt;br /&gt;
=== Recursive package extraction ===&lt;br /&gt;
&lt;br /&gt;
The current package extraction code extracts in one pass. If a package contains additional packages that Archivematica can extract, they currently won't be extracted. The code should be updated in order to allow extraction of nested packages - for instance ZIP files containing other ZIPs; tarballs in uncommon compression formats (such as .tar.xz); and disk images containing compressed archives.&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=Digital_forensics_image_ingest&amp;diff=9017</id>
		<title>Digital forensics image ingest</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=Digital_forensics_image_ingest&amp;diff=9017"/>
		<updated>2013-10-21T21:59:35Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Add link to forensic images development steps document&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Main Page]] &amp;gt; [[Development]] &amp;gt; [[:Category:Development documentation|Development documentation]] &amp;gt; Digital forensics image ingest&lt;br /&gt;
[[Category:Development documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Related issues: #5265&lt;br /&gt;
NOTE: Wherever possible, use BitCurator packages for forensics tools.&lt;br /&gt;
&lt;br /&gt;
The current status of implementation can be found at: [[Forensic imaging steps for 1.1]]&lt;br /&gt;
&lt;br /&gt;
== Forensics image transfer type ==&lt;br /&gt;
&lt;br /&gt;
* Archivematica transfer type: forensic image&lt;br /&gt;
** One or more images make up a transfer&lt;br /&gt;
** Repository makes image using outside imaging software prior to ingest&lt;br /&gt;
** Some metadata from ingest process will be included, first from FTK Imager, but later from other tools like Guymager (see metadata requirements below)&lt;br /&gt;
* Image types to base development on (more analysis needed): raw sector images =dd, bin, ISO; E01, AFF, AD1; ISO images with CUE files that contain track information; STREAM images (Kryoflux STREAM: This is a representation of non-decoded raw magnetic flux transitions acquired using a Kryoflux.) (these formats are sponsored, support for the formats listed [http://www.forensicswiki.org/wiki/Forensic_file_formats here] is desirable in future releases)&lt;br /&gt;
&lt;br /&gt;
== Forensics image transfer workflow ==&lt;br /&gt;
[[File:ArchivematicaForensicImageIngest.png|900px|thumb|center|]]&lt;br /&gt;
[[File:ArchivematicaForensicImageIngest(2).png|700px|thumb|center|]]&lt;br /&gt;
====Detail====&lt;br /&gt;
&lt;br /&gt;
* User images external media outside the Archivematica workflow&lt;br /&gt;
* User uploads image(s) into the Archivematica transfer tab of the dashboard by browsing to the appropriate transfer source directory and selecting a directory containing their image(s)&lt;br /&gt;
* User enters transfer name and accession number&lt;br /&gt;
* User selects MD entry template for entering MD about the imaging process &lt;br /&gt;
** User enters MD (see MD requirements below)&lt;br /&gt;
** User saves MD and starts transfer processes&lt;br /&gt;
* User selects Start transfer to begin Archivematica transfer processing&lt;br /&gt;
* Fiwalk with Fido or BitCurator fiwalk package completes the Characterize and extract metadata micro-service&lt;br /&gt;
* Archivematica runs [http://www.forensicswiki.org/wiki/Bulk_extractor Bulk Extractor] tool('''Examine contents micro-service''') and indexes output (this is to allow for reporting and visualization in the transfer backlog search for SIP creation and/or the AIP advanced search to allow for minimal description)&lt;br /&gt;
* Transfer micro-services complete&lt;br /&gt;
* At Create SIP from Transfer micro-service, user selects one of two options:&lt;br /&gt;
** If the user is an archivist/curator ready to process the image through to storage and/or access, choose Create single SIP and continue processing&lt;br /&gt;
** If the user is uploading multiple images as part of one accession, for processing by an archivist/curator later, choose Send to backlog&lt;br /&gt;
*** In the second scenario, once all images from an accession are in the backlog, user alerts archivist/curator that the accession is ready for further processing&lt;br /&gt;
** Archivist searches for the accession in the transfer backlog, selects the appropriate transfers, and selects Create SIP &lt;br /&gt;
* In ingest tab, user approves SIP creation&lt;br /&gt;
* In ingest tab, prior to normalization, there is a decision point at '''Extract packages micro-service''' - User selects from drop-down: Extract objects from image, Do not extract objects from image, Reject&lt;br /&gt;
** If user chooses not to extract objects, then skip micro-service decision about tool output to base normalization on, choose normalization for preservation only or no normalization, and continue standard micro-services to store AIP.&lt;br /&gt;
** If user chooses to extract objects, Archivematica runs FITS on the extracted contents. The user continues standard workflow, choosing any of the normalization options (including manual normalization) and continues processing to storage and/or access.&lt;br /&gt;
&lt;br /&gt;
* EXCEPTIONS:&lt;br /&gt;
** In the case of AD1 images, user should be able to choose to extract the objects from the AD1 image before transfer. Archivematica should recognize an AD1 image and issue an alert/warning. If the user chooses to proceed with the transfer/ingest then the AD1 file just gets stored without any normalization or metadata extraction.&lt;br /&gt;
&lt;br /&gt;
==Metadata requirements==&lt;br /&gt;
When the user selects Forensic image transfer type, each image uploaded as part of the transfer will include a metadata form icon that, if selected, will open a form in another browser tab. There, the user will enter some or all of the MD indicated below in the Template for manual data entry list. &lt;br /&gt;
&lt;br /&gt;
* Template for manual data entry&lt;br /&gt;
**accession number - recorded in transfer upload in dashboard&lt;br /&gt;
**media number - manual &lt;br /&gt;
**label text - manual (long text field)&lt;br /&gt;
**media manufacture - manual&lt;br /&gt;
**serial number - manual&lt;br /&gt;
**media format - manual, could be controlled value list&lt;br /&gt;
**media density - manual, could be controlled value list&lt;br /&gt;
**source filesystem&lt;br /&gt;
**notes about the imaging process&lt;br /&gt;
**imaging interface - manual, could be controlled value list&lt;br /&gt;
**examiner - AUTOPOPULATED based on Archivematica user (PREMIS agent)&lt;br /&gt;
**image format - manual, could be controlled value list&lt;br /&gt;
**imaging software - manual, could be controlled value list&lt;br /&gt;
**notes about the imaging process - manual (long text field)&lt;br /&gt;
&lt;br /&gt;
* Import from imaging tool FTK or fiwalk/sleuthkit&lt;br /&gt;
**imaging date (FTK or other imaging tool output)&lt;br /&gt;
**imaging success - Yes, Yes with errors (FTK or other imaging tool output)&lt;br /&gt;
**image fixity (FTK or other imaging tool output&lt;br /&gt;
**source filesystem (fiwalk)&lt;br /&gt;
**accession data about extent (fiwalk)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!'''element'''&lt;br /&gt;
!'''description'''&lt;br /&gt;
!'''DACS (2013)'''&lt;br /&gt;
!'''ISAD(G)'''&lt;br /&gt;
!'''EAD'''&lt;br /&gt;
!'''PREMIS 2.2'''&lt;br /&gt;
|-&lt;br /&gt;
|media number&lt;br /&gt;
|repository specific alphanumeric designation assigned to individual physical media/carrier&lt;br /&gt;
|2.1.3 local identifier - At the highest level of a multilevel description or in a single level description,&lt;br /&gt;
provide a unique identifier for the materials being described in accordance with the&lt;br /&gt;
institution’s administrative control system. Optionally, devise unique identifiers at lower&lt;br /&gt;
levels of a multilevel description.&lt;br /&gt;
|3.1.1 - Reference codes&lt;br /&gt;
|&amp;lt;unitid&amp;gt; &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|label text&lt;br /&gt;
|textual transcription&lt;br /&gt;
|7.1.2 Record, as needed, information not accommodated by any of the defined elements of description. &lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|media manufacturer&lt;br /&gt;
|&lt;br /&gt;
|7.1.4 - If the materials being described are in electronic form, give details of any migration or logical reformatting since its transfer to archival custody. Indicate the location of any relevant documentation. Information regarding digitization is provided in the Existence and Location of Copies Element (6.2).&lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|serial number&lt;br /&gt;
|when applicable to external media&lt;br /&gt;
|7.1.4 or 7.1.6 If appropriate at the file or item level of description, make a note of any important numbers borne by the unit being described. &lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|media format&lt;br /&gt;
|a controlled value list (e.g. 3.5&amp;quot; floppy, 5.25&amp;quot; floppy, CD-R, etc)&lt;br /&gt;
|7.1.4 &lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|media density&lt;br /&gt;
|a controlled value list (e.g. single density, double density, quad density, high density)&lt;br /&gt;
|7.1.4 &lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|source filesystem&lt;br /&gt;
|a controlled file list(e.g. HFS, FAT, etc.) with the ability to add terms&lt;br /&gt;
|7.1.4&lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|notes about the imaging process&lt;br /&gt;
|textual field to describe more detail about the imaging process&lt;br /&gt;
|7.1.4&lt;br /&gt;
|3.6.1 Note&lt;br /&gt;
|&amp;lt;odd&amp;gt;, &amp;lt;note&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|imaging interface&lt;br /&gt;
|a controlled value list (e.g. Catweasel, Firewire, USB, IDE, etc.)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Event: Image capture&lt;br /&gt;
|-&lt;br /&gt;
|examiner&lt;br /&gt;
|the person doing the imaging&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Agent&lt;br /&gt;
|-&lt;br /&gt;
|imaging date&lt;br /&gt;
|date of imaging&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Event: Image capture&lt;br /&gt;
|-&lt;br /&gt;
|imaging success&lt;br /&gt;
|ex Yes/Yes, with errors&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Event: Image capture&lt;br /&gt;
|-&lt;br /&gt;
|image format&lt;br /&gt;
|a controlled value list (e.g. AFF3, dd/secort image, AD1, etc.) with the ability to add terms&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Object&lt;br /&gt;
|-&lt;br /&gt;
|imaging software&lt;br /&gt;
|a controlled value list (e.g. FTK imager 3.1.0.1514, Kryoflux, DTC 2.00 beta 9, etc.) with the ability to add terms&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Agent&lt;br /&gt;
|-&lt;br /&gt;
|image fixity&lt;br /&gt;
|type(s) and value(s) from FTK csv output&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|2.2 - Object&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Forensic image transfer tools ==&lt;br /&gt;
&lt;br /&gt;
===fiwalk===&lt;br /&gt;
 &lt;br /&gt;
* Characterize and extract metadata micro-service&lt;br /&gt;
* Use Mark Matienzo's github version which includes FIDO for format identification since fiwalk's format identification is libmagic (unsatisfactory for our purposes)&lt;br /&gt;
&lt;br /&gt;
Sample fiwalk xml output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version='1.0' encoding='ISO-8859-1'?&amp;gt;&lt;br /&gt;
&amp;lt;fiwalk xmloutputversion='0.2'&amp;gt;&lt;br /&gt;
  &amp;lt;metadata &lt;br /&gt;
  xmlns='http://example.org/myapp/' &lt;br /&gt;
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' &lt;br /&gt;
  xmlns:dc='http://purl.org/dc/elements/1.1/'&amp;gt;&lt;br /&gt;
    &amp;lt;dc:type&amp;gt;Disk Image&amp;lt;/dc:type&amp;gt;&lt;br /&gt;
  &amp;lt;/metadata&amp;gt;&lt;br /&gt;
  &amp;lt;creator&amp;gt;&lt;br /&gt;
    &amp;lt;program&amp;gt;fiwalk&amp;lt;/program&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;0.5.7&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;os&amp;gt;Darwin&amp;lt;/os&amp;gt;&lt;br /&gt;
    &amp;lt;library name=&amp;quot;tsk&amp;quot; version=&amp;quot;3.0.1&amp;quot;&amp;gt;&amp;lt;/library&amp;gt;&lt;br /&gt;
    &amp;lt;library name=&amp;quot;afflib&amp;quot; version=&amp;quot;3.5.2&amp;quot;&amp;gt;&amp;lt;/library&amp;gt;&lt;br /&gt;
    &amp;lt;command_line&amp;gt;fiwalk -x /dev/disk2&amp;lt;/command_line&amp;gt;&lt;br /&gt;
  &amp;lt;/creator&amp;gt;&lt;br /&gt;
  &amp;lt;source&amp;gt;&lt;br /&gt;
    &amp;lt;imagefile&amp;gt;/dev/disk2&amp;lt;/imagefile&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!-- fs start: 512 --&amp;gt;&lt;br /&gt;
  &amp;lt;volume offset='512'&amp;gt;&lt;br /&gt;
    &amp;lt;Partition_Offset&amp;gt;512&amp;lt;/Partition_Offset&amp;gt;&lt;br /&gt;
    &amp;lt;block_size&amp;gt;512&amp;lt;/block_size&amp;gt;&lt;br /&gt;
    &amp;lt;ftype&amp;gt;2&amp;lt;/ftype&amp;gt;&lt;br /&gt;
    &amp;lt;ftype_str&amp;gt;fat12&amp;lt;/ftype_str&amp;gt;&lt;br /&gt;
    &amp;lt;block_count&amp;gt;5062&amp;lt;/block_count&amp;gt;&lt;br /&gt;
    &amp;lt;first_block&amp;gt;0&amp;lt;/first_block&amp;gt;&lt;br /&gt;
    &amp;lt;last_block&amp;gt;5061&amp;lt;/last_block&amp;gt;&lt;br /&gt;
    &amp;lt;fileobject&amp;gt;&lt;br /&gt;
      &amp;lt;filename&amp;gt;README.txt&amp;lt;/filename&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;filesize&amp;gt;43&amp;lt;/filesize&amp;gt;&lt;br /&gt;
      &amp;lt;partition&amp;gt;1&amp;lt;/partition&amp;gt;&lt;br /&gt;
      &amp;lt;alloc&amp;gt;1&amp;lt;/alloc&amp;gt;&lt;br /&gt;
      &amp;lt;used&amp;gt;1&amp;lt;/used&amp;gt;&lt;br /&gt;
      &amp;lt;inode&amp;gt;6&amp;lt;/inode&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;1&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;mode&amp;gt;511&amp;lt;/mode&amp;gt;&lt;br /&gt;
      &amp;lt;nlink&amp;gt;1&amp;lt;/nlink&amp;gt;&lt;br /&gt;
      &amp;lt;uid&amp;gt;0&amp;lt;/uid&amp;gt;&lt;br /&gt;
      &amp;lt;gid&amp;gt;0&amp;lt;/gid&amp;gt;&lt;br /&gt;
      &amp;lt;mtime&amp;gt;1258916904&amp;lt;/mtime&amp;gt;&lt;br /&gt;
      &amp;lt;atime&amp;gt;1258876800&amp;lt;/atime&amp;gt;&lt;br /&gt;
      &amp;lt;crtime&amp;gt;1258916900&amp;lt;/crtime&amp;gt;&lt;br /&gt;
      &amp;lt;byte_runs&amp;gt;&lt;br /&gt;
       &amp;lt;run file_offset='0' fs_offset='37376' img_offset='37888' len='43'/&amp;gt;&lt;br /&gt;
      &amp;lt;/byte_runs&amp;gt;&lt;br /&gt;
      &amp;lt;hashdigest type='md5'&amp;gt;2bbe5c3b554b14ff710a0a2e77ce8c4d&amp;lt;/hashdigest&amp;gt;&lt;br /&gt;
      &amp;lt;hashdigest type='sha1'&amp;gt;b3ccdbe2db1c568e817c25bf516e3bf976a1dea6&amp;lt;/hashdigest&amp;gt;&lt;br /&gt;
    &amp;lt;/fileobject&amp;gt;&lt;br /&gt;
  &amp;lt;/volume&amp;gt;&lt;br /&gt;
&amp;lt;!-- end of volume --&amp;gt;&lt;br /&gt;
&amp;lt;!-- clock: 0 --&amp;gt;&lt;br /&gt;
  &amp;lt;runstats&amp;gt;&lt;br /&gt;
    &amp;lt;user_seconds&amp;gt;0&amp;lt;/user_seconds&amp;gt;&lt;br /&gt;
    &amp;lt;system_seconds&amp;gt;0&amp;lt;/system_seconds&amp;gt;&lt;br /&gt;
    &amp;lt;maxrss&amp;gt;1814528&amp;lt;/maxrss&amp;gt;&lt;br /&gt;
    &amp;lt;reclaims&amp;gt;546&amp;lt;/reclaims&amp;gt;&lt;br /&gt;
    &amp;lt;faults&amp;gt;1&amp;lt;/faults&amp;gt;&lt;br /&gt;
    &amp;lt;swaps&amp;gt;0&amp;lt;/swaps&amp;gt;&lt;br /&gt;
    &amp;lt;inputs&amp;gt;56&amp;lt;/inputs&amp;gt;&lt;br /&gt;
    &amp;lt;outputs&amp;gt;0&amp;lt;/outputs&amp;gt;&lt;br /&gt;
    &amp;lt;stop_time&amp;gt;Sun Nov 22 11:08:36 2009&amp;lt;/stop_time&amp;gt;&lt;br /&gt;
  &amp;lt;/runstats&amp;gt;&lt;br /&gt;
&amp;lt;/fiwalk&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Bulk Extractor===&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8746</id>
		<title>External tools/FITS performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8746"/>
		<updated>2013-08-24T00:16:02Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Comparing FITS against individual tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JVM startup lag =&lt;br /&gt;
&lt;br /&gt;
A significant part of FITS's startup is spent instantiating the JVM, which is relatively slow. To speed this up, it may be possible to use the [http://martiansoftware.com/nailgun/ nailgun] tool, which creates a single shared JVM instance that a tool can connect to, thus bypassing the overhead of needing to start up a JVM every time FITS is run.&lt;br /&gt;
&lt;br /&gt;
A simple test of FITS's startup time was performed using the `fits -h` help command; since the help command performs no actual characterization, most of the time of running this command is spent creating a JVM. Results:&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
* Average time without a persistent JVM, averaged over 10 iterations: 4.2852s&lt;br /&gt;
* Average time with a persistent Nailgun JVM, averaged over 10 iterations: 1.7022s&lt;br /&gt;
&lt;br /&gt;
= DROID startup =&lt;br /&gt;
&lt;br /&gt;
The other largest component of FITS startup is the DROID component. The official FITS 0.6.2 uses an older version of DROID, which takes approximately a second to load its signature data at startup. [https://github.com/gmcgath/fits-mcgath Gary McGath's fork of FITS] has been updated to use a more modern version of DROID, substantially improving startup time&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
* Average startup time for FITS 0.6.2 (with Nailgun), averaged over 10 iterations: 1.7022s&lt;br /&gt;
* Average time for FITS-McGath 0.7.5 (with Nailgun), over 10 iterations: 0.7526s&lt;br /&gt;
&lt;br /&gt;
= Running specialized tools for specific formats =&lt;br /&gt;
&lt;br /&gt;
For certain formats which are relatively well-known, such as video formats, audio formats, and images, it may be possible to run individual tools to extract useful characterization metadata. For instance, when profiling video files, it would be useful to run DROID and exiftool (both also run by FITS) as well as mediainfo. Experiments indicate that FITS introduces a major overhead, and significant speed improvements can be had by using running tools directly.&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
These benchmarks come from a single run of each tool, though later experiments with the tool indicate that they are broadly representative of the tool's average performance.&lt;br /&gt;
&lt;br /&gt;
=== MXF ===&lt;br /&gt;
&lt;br /&gt;
The scanned MXF video was approximately 4GB.&lt;br /&gt;
&lt;br /&gt;
* DROID alone: 0m4.739s&lt;br /&gt;
* exiftool alone: 0m0.167s&lt;br /&gt;
* mediainfo alone: 0m3.105s&lt;br /&gt;
* FITS 0.6.2: 3m54.016s&lt;br /&gt;
&lt;br /&gt;
=== MOV ===&lt;br /&gt;
&lt;br /&gt;
The scanned MOV video was approximately 1GB.&lt;br /&gt;
&lt;br /&gt;
* DROID alone: 0m4.920s&lt;br /&gt;
* exiftool alone: 0m0.096s&lt;br /&gt;
* mediainfo alone: 0m0.276s&lt;br /&gt;
* FITS 0.6.2: 3m53.458s&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8744</id>
		<title>External tools/FITS performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8744"/>
		<updated>2013-08-22T21:41:06Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JVM startup lag =&lt;br /&gt;
&lt;br /&gt;
A significant part of FITS's startup is spent instantiating the JVM, which is relatively slow. To speed this up, it may be possible to use the [http://martiansoftware.com/nailgun/ nailgun] tool, which creates a single shared JVM instance that a tool can connect to, thus bypassing the overhead of needing to start up a JVM every time FITS is run.&lt;br /&gt;
&lt;br /&gt;
A simple test of FITS's startup time was performed using the `fits -h` help command; since the help command performs no actual characterization, most of the time of running this command is spent creating a JVM. Results:&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
* Average time without a persistent JVM, averaged over 10 iterations: 4.2852s&lt;br /&gt;
* Average time with a persistent Nailgun JVM, averaged over 10 iterations: 1.7022s&lt;br /&gt;
&lt;br /&gt;
= DROID startup =&lt;br /&gt;
&lt;br /&gt;
The other largest component of FITS startup is the DROID component. The official FITS 0.6.2 uses an older version of DROID, which takes approximately a second to load its signature data at startup. [https://github.com/gmcgath/fits-mcgath Gary McGath's fork of FITS] has been updated to use a more modern version of DROID, substantially improving startup time&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
* Average startup time for FITS 0.6.2 (with Nailgun), averaged over 10 iterations: 1.7022s&lt;br /&gt;
* Average time for FITS-McGath 0.7.5 (with Nailgun), over 10 iterations: 0.7526s&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
	<entry>
		<id>https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8743</id>
		<title>External tools/FITS performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.archivematica.org/index.php?title=External_tools/FITS_performance&amp;diff=8743"/>
		<updated>2013-08-22T19:13:55Z</updated>

		<summary type="html">&lt;p&gt;Mdemeo: Began work on JVM startup lag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JVM startup lag =&lt;br /&gt;
&lt;br /&gt;
A significant part of FITS's startup is spent instantiating the JVM, which is relatively slow. To speed this up, it may be possible to use the [http://martiansoftware.com/nailgun/ nailgun] tool, which creates a single shared JVM instance that a tool can connect to, thus bypassing the overhead of needing to start up a JVM every time FITS is run.&lt;br /&gt;
&lt;br /&gt;
A simple test of FITS's startup time was performed using the `fits -h` help command; since the help command performs no actual characterization, most of the time of running this command is spent creating a JVM. Results:&lt;br /&gt;
&lt;br /&gt;
* Average time without a persistent JVM, averaged over 10 iterations: 4.2852s&lt;br /&gt;
* Average time with a persistent Nailgun JVM, averaged over 10 iterations: 1.7022s&lt;/div&gt;</summary>
		<author><name>Mdemeo</name></author>
	</entry>
</feed>