[open-ils-commits] [GIT] Evergreen ILS branch master updated. 3ba41e17c0e97a89c4d1b5977bc885ed5ab30dd9

Evergreen Git git at git.evergreen-ils.org
Sun Dec 9 00:35:34 EST 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  3ba41e17c0e97a89c4d1b5977bc885ed5ab30dd9 (commit)
       via  a839cfce0af7e45d09f298876f8f2df565a284ad (commit)
       via  e1e2894b3426f3f989eeed55ea690aee4b466fc5 (commit)
       via  196b60a711726c80608d3516c8ac73b1f2579e8e (commit)
      from  a850606073fea6e0c25baf1468a2abb06aeaba82 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3ba41e17c0e97a89c4d1b5977bc885ed5ab30dd9
Author: Dan Scott <dscott at laurentian.ca>
Date:   Sun Dec 9 00:30:29 2012 -0500

    Add acquisitions setup chapter
    
    Another product of the Evergreen in Action documentation sprint!
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>

diff --git a/docs/admin_initial_setup/ordering_materials.txt b/docs/admin_initial_setup/ordering_materials.txt
new file mode 100644
index 0000000..e13d57d
--- /dev/null
+++ b/docs/admin_initial_setup/ordering_materials.txt
@@ -0,0 +1,238 @@
+Ordering materials
+==================
+
+Acquisitions allows you to order materials, track the expenditure of your
+collections funds, track invoices and set up policies for manual claiming. In
+this chapter, we're going to be describing how to use the most essential
+functions of acquisitions in the Evergreen system.
+
+When should libraries use acquisitions?
+---------------------------------------
+* When you want to track spending of your collections budget.
+* When you want to use Evergreen to place orders electronically with your
+  vendors.
+* When you want to import large batches of records to quickly get your on-order
+  titles into the system.
+
+If your library simply wants to add on-order copies to the catalog so that
+patrons can view and place holds on titles that have not yet arrived,
+acquisitions may be more than you need. Adding those on-order records via
+cataloging is a simpler option that works well for this use case.
+
+Below are the basic administrative settings to be configured to get started
+with acquisitions. At a minimum, a library must configure *Funding Sources*,
+*Funds*, and *Providers* to use acquisitions.
+
+Managing Funds
+--------------
+
+Funding Sources (Required)
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+Funding sources allow you to specify the sources that contribute monies to your
+fund(s). You can create as few or as many funding sources as you need. These
+can be used to track exact amounts for accounts in your general ledger.
+
+Example funding sources might be:
+
+* A municipal allocation for your materials budget;
+* A trust fund used for collections;
+* A revolving account that is used to replace lost materials;
+* Grant funds to be used for collections.
+
+Funding sources are not tied to fiscal or calendar years, so you can continue
+to add money to the same funding source over multiple years, e.g. County
+Funding. Alternatively, you can name funding sources by year, e.g. County
+Funding 2010 and County Funding 2011, and apply credits each year to the
+matching source.
+
+. To create a funding source, select *Admin > Server Administration >
+  Acquisitions > Funding Source*. Click the *New Funding Source* button. Give
+  the funding source a name, an owning library, and code. You should also
+  identify the type of currency that is used for the fund.
+. You must add money to the funding source before you can use it. Click the
+  hyperlinked name of the funding source and then click the *Apply Credit*
+  button. Add the amount of funds you need to add. The *Note* field is optional.
+
+Funds (Required)
+~~~~~~~~~~~~~~~~
+Funds allow you to allocate credits toward specific purchases. They typically
+are used to track spending and purchases for specific collections. Some
+libraries may choose to define very broad funds for their collections (e.g.
+children's materials, adult materials) while others may choose to define more
+specific funds (e.g. adult non-fiction DVD's for BR1).
+
+If your library does not wish to track fund accounting, you can create one
+large generic fund and use that fund for all of your purchases.
+
+. To create a fund, select *Admin > Server Administration > Acquisitions >
+  Funds*. Click the *New Fund* button. Give the fund a name and code.
+. The *Year* can either be the fiscal or calendar year for the fund.
+. If you are a multi-branch library that will be ordering titles for multiple
+  branches, you should select the system as the owning *Org Unit*, even if this
+  fund will only be used for collections at a specific branch. If you are a
+  one-branch library or if your branches do their own ordering, you can select
+  the branch as the owning *Org Unit*.
+. Select the *Currency Type* that will be used for this fund.
+. You must select the *Active* checkbox to use the fund.
+. Enter a *Balance Stop Percent*. The balance stop percent prevents you from
+  making purchases when only a specified amount of the fund remains. For example,
+  if you want to spend 95 percent of your funds, leaving a five percent balance
+  in the fund, then you would enter 95 in the field. When the fund reaches its
+  balance stop percent, it will appear in red when you apply funds to copies.
+. Enter a *Balance Warning Percent*. The balance warning percent gives you a
+  warning that the fund is low. You can specify any percent. For example, if you
+  want to spend 90 percent of your funds and be warned when the fund has only 10
+  percent of its balance remaining, then enter 90 in the field. When the fund
+  reaches its balance warning percent, it will appear in yellow when you apply
+  funds to copies.
+. Check the *Propagate* box to propagate funds. When you propagate a fund, the
+  system will create a new fund for the following fiscal year with the same
+  parameters as your current fund. All of the settings transfer except for the
+  year and the amount of money in the fund. Propagation occurs during the fiscal
+  year close-out operation.
+. Check the *Rollover* box if you want to roll over remaining encumbrances and
+  funds into the same fund next year. If you need the ability to roll over
+  encumbrances without rolling over funds, go to the *Library Settings Editor*
+  (*Admin > Local Administration > Library Settings Editor*) and set *Allow
+  funds to be rolled over without bringing the money along* to *True*.
+. You must add money to the fund before you can begin using it. Click the
+  hyperlinked name of the fund. Click the *Create Allocation button*. Select a
+  *Funding Source* from which the allocation will be drawn and then enter an
+  amount for the allocation. The *Note* field is optional.
+
+Fund Tags (Optional)
+~~~~~~~~~~~~~~~~~~~~
+You can apply tags to funds so that you can group funds for easy reporting. For
+example, you have three funds for children’s materials: Children's Board Books,
+Children's DVDs, and Children's CDs. Assign a fund tag of children's to each
+fund. When you need to report on the amount that has been spent on all
+children's materials, you can run a report on the fund tag to find total
+expenditures on children's materials rather than reporting on each individual
+fund.
+
+. To create a fund tag, select *Admin > Server Administration > Acquisitions >
+  Fund Tags*. Click the the *New Fund Tag* button. Select a owning library and
+  add the name for the fund tag.
+. To apply a fund tag to a fund, select *Admin > Server Administration >
+  Acquisitions > Funds*. Click on the hyperlinked name for the fund. Click the
+  *Tags* tab and then click the *Add Tag* button. Select the tag from the
+  dropdown menu.
+
+Ordering
+--------
+
+Providers (Required)
+~~~~~~~~~~~~~~~~~~~~
+Providers are the vendors from whom you order titles.
+
+. To add a provider record,  select *Admin > Server Administration >
+  Acquisitions > Providers*.
+. Enter information about the provider. At a minimum, you need to add a
+  *Provider Name*, *Code*, *Owner*, and *Currency*. You also need to select the
+  *Active* checkbox to use the provider.
+
+Distribution Formulas (Optional)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you are ordering for a multi-branch library system, distribution formulas
+are a useful way to specify the number of copies that should be distributed to
+specific branches and copy locations.
+
+. To create a distribution formula, select *Admin > Server Administration >
+  Acquisitions > Distribution Formulas*. Click the *New Formula* button. Enter
+  the formula name and select the owning library. Ignore the *Skip Count* field.
+. Click *New Entry*. Select an Owning Library from the drop down menu. This
+  indicates the branch that will receive the items.
+. Select a Shelving Location from the drop down menu.
+. In the Item Count field, enter the number of items that should be distributed
+  to that branch and copy location. You can enter the number or use the arrows on
+  the right side of the field.
+. Keep adding entries until the distribution formula is complete.
+
+Helpful acquisitions Library Settings
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+There are several acquisitions Library Settings available that will help with
+acquisitions workflow. These settings can be found at *Admin > Local
+Administration > Library Settings Editor*.
+
+* Default circulation modifier - Automatically applies a default circulation
+  modifier to all of your acquisitions copies. Useful if you use a specific
+  circulation modifier for on-order copies.
+* Default copy location - Automatically applies a default copy location (e.g.
+  On Order) to acquisitions copies.
+* Temporary barcode prefix - Applies a unique prefix to the barcode that is
+  automatically generated during the acquisitions process.
+* Temporary call number prefix - Applies a unique prefix to the start of the
+  call number that is automatically generated during the acquisitions process.
+
+Preparing for order record loading
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If your library is planning to upload order records in a batch, you need to add
+some information to your provider records so that Evergreen knows how to map
+the copy data contained in the order record.
+
+. Retrieve the record for the provider that has supplied the order records by
+  selecting *Admin > Server Administration > Acquisitions > Providers*. Click on
+  the hyperlinked Provider name.
+. In the top frame, add the MARC tag that contains your holdings data in the
+  *Holdings Tag* field (this tag can also be entered at the time you create the
+  provider record.)
+. To map the tag's subfields to the appropriate copy data, click the *Holding
+  Subfield* tab.  Click the *New Holding Subfield* button and select the copy
+  data that you are mapping. Add the subfield that contains that data and click
+  *Save*.
++
+image::media/order_record_loading.png[]
++
+. If your vendor is sending other data in a MARC tag that needs to be mapped to
+a field in acquisitions, you can do so by clicking the Attribute Definitions
+tab. As an example, if you need to import the PO Name, you could set up an
+attribute definition by adding an XPath similar to:
++
+------------------------------------------------------------------------------
+code => purchase_order
+xpath => //*[@tag="962"]/*[@code="p"]
+Is Identifier => false
+------------------------------------------------------------------------------
++
+where 962 is the holdings tag and p is the subfield that contains the PO Name.
+
+Preparing to send electronic orders from Evergreen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If your library wants to transmit electronic order information to a vendor, you
+will need to configure your server to use EDI. You need to install the EDI
+translator and EDI scripts on your server by following the instructions in the
+Evergreen 2.3 documentation.
+(http://docs.evergreen-ils.org/2.3/_installation.html)
+
+Configure your provider's EDI information by selecting *Admin > Server
+Administration > Acquisitions > EDI Accounts*. Give the account a name in the
+*Label* box.
+
+. *Host* is the vendor-assigned FTP/SFTP/SSH hostname.
+. *Username* is the vendor-assigned FTP/SFTP/SSH username.
+. *Password* is the vendor-assigned FTP/SFTP/SSH password.
+. *Account* is the vendor-assigned account number associated with your
+  organization.
+. *Owner* is the organizational unit who owns the EDI account
+. *Last Activity* is the date of last activity for the account
+. *Provider* is a link to the codes for the Provider record.
+. *Path* is the path on the vendor’s server where Evergreen will send its
+  outgoing .epo files.
+. *Incoming Directory* is the path on the vendor’s server where incoming .epo
+  files are stored.
+. *Vendor Account Number* is the Vendor assigned account number.
+. *Vendor Assigned Code* is usually a sub-account designation. It can be used
+  with or without the Vendor Account Number.
+
+You now need to add this *EDI Account* and the *SAN* code to the provider's record.
+
+. Select *Admin > Server Administration > Acquisitions > Providers*.
+. Click the hyperlinked Provider name.
+. Select the account you just created in the *EDI Default* field.
+. Add the vendor-provided SAN code to the *SAN* field.
+
+The last step is to add your library's SAN code to Evergreen.
+
+. Select *Admin > Server Administration > Organizational Units*.
+. Select your library from the organizational hierarchy in the left pane.
+. Click the *Addresses* tab and add your library's SAN code to the *SAN* field.
diff --git a/docs/media/order_record_loading.png b/docs/media/order_record_loading.png
new file mode 100644
index 0000000..160af6a
Binary files /dev/null and b/docs/media/order_record_loading.png differ

commit a839cfce0af7e45d09f298876f8f2df565a284ad
Author: Dan Scott <dscott at laurentian.ca>
Date:   Sat Dec 8 19:55:24 2012 -0500

    Add the "Importing via the staff client" chapter
    
    ... from the Evergreen In Action doc sprint.
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>

diff --git a/docs/admin_initial_setup/importing_via_staff_client.txt b/docs/admin_initial_setup/importing_via_staff_client.txt
new file mode 100644
index 0000000..9aacdc9
--- /dev/null
+++ b/docs/admin_initial_setup/importing_via_staff_client.txt
@@ -0,0 +1,190 @@
+Importing materials in the staff client
+=======================================
+
+Evergreen exists to connect users to the materials represented by bibliographic
+records, call numbers, and copies -- so getting these materials into your
+Evergreen system is vital to a successful system. There are two primary means
+of getting materials into Evergreen:
+
+* The Evergreen staff client offers the *MARC Batch Importer*, which is a
+  flexible interface primarily used for small batches of records;
+* Alternately, import scripts can load data directly into the database, which is
+  a highly flexible but much more complex method of loading materials suitable
+  for large batches of records such as the initial migration from your legacy
+  library system.
+
+Staff client batch record imports
+---------------------------------
+The staff client has a utility for importing batches of bibliographic and copy
+records available through *Cataloging > MARC Batch Import/Export*. In addition
+to importing new records, this interface can be used to match incoming records
+to existing records in the database, add or overlay MARC fields in the existing
+record, and add copies to those records.
+
+The MARC Batch Import interface may also be colloquially referred to as
+"Vandelay" in the Evergreen community, referring to this interface's internals
+in the system.You will also see this name used in several places in the editor.
+For instance, when you click on the *Record Match Sets*, the title on the screen
+will be *Vandelay Match Sets*.
+
+When to use the MARC Batch Importer
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* When importing in batches of up to 500 to 1,000 records.
+* When you need the system to match those incoming records to existing records
+  and overlay or add fields to the existing record.
+* When you need to add copies to existing records in the system.
+
+The MARC Batch Importer should only be used for importing copies that already
+have barcodes and call numbers. Use *Acquisitions > Load MARC Order Records* to
+add on-order copies that do not yet have barcodes and call numbers.
+
+Record Match Sets
+~~~~~~~~~~~~~~~~~
+Click the *Record Match Sets* button to identify how Evergreen should match
+incoming records to existing records in the system.
+
+These record match sets can be used when importing records through the MARC
+Batch Importer or when importing order records through the Acquisitions Load
+MARC Order Records interface.
+
+Common match points used when creating a match set include:
+
+* MARC tag 020a (ISBN)
+* MARC tag 022a (ISSN)
+* MARC tag 024a (UPC)
+* MARC tag 028a (Publisher number)
+
+Create Match Sets
+~~~~~~~~~~~~~~~~~
+. On the *Record Match Sets* screen, click *New Match Set* to create a set of
+  record match points. Give the set a *Name*. Assign the *Owning Library* from
+  the dropdown list. The *Match Set Type* should remain as *biblio*. Click
+  *Save*.
+. If you don't see your new set in the list, in the upper left corner of the
+  staff client window, click the *Reload* button.
+. If you had to reload, click the *Record Match Sets* button to get back to
+  that screen. Find your new set in the list and click its name. (The name will
+  appear to be a hyperlink.) This will bring you to the *Vandelay Match Set
+  Editor*.
+. Create an expression that will define the match points for the incoming
+  record. You can choose from two areas to create a match: Record Attribute (MARC
+  fixed fields) or MARC Tag and Subfield. You can use the Boolean operators AND
+  and OR to combine these elements to create a match set.
+. When adding a Record Attribute or MARC tag/subfield, you also can enter a
+  Match Score. The Match Score indicates the relative importance of that match
+  point as Evergreen evaluates an incoming record against an existing record. You
+  can enter any integer into this field. The number that you enter is only
+  important as it relates to other match points.
++
+Recommended practice is that you create a match score of one (1) for the least
+important match point and assign increasing match points to the power of 2 to
+working points in increasing importance.
+. After creating a match point, drag the completed match point under the folder
+  with the appropriately-named Boolean folder under the Expression tree.
++
+image::media/create_match_sets.png[]
+. Click *Save Changes to Expression*.
+
+Quality Metrics
+~~~~~~~~~~~~~~~
+* Quality metrics provide a mechanism for Evergreen to measure the quality of
+records and to make importing decisions based on quality.
+* Metrics are configured in the match set editor.
+* Quality metrics are not required when creating a match set.
+* You can use a value in a record attribute (MARC fixed fields) or a MARC tag
+  as your quality metric.
+* The encoding level record attribute can be one indicator of record quality.
+
+image::media/record_quality_metrics.png[]
+
+Import Item Attributes
+~~~~~~~~~~~~~~~~~~~~~~
+If you are importing copies with your records, you will need to map the data in
+your holdings tag to fields in the copy record. Click the *Import Item
+Attributes* button to map this information.
+
+. Click the *New Definition* button to create a new mapping for the holdings tag.
+. Use the *Tag* field to identify the MARC tag that contains your holdings
+  information.
+. Add the subfields that contain specific copy information to the appropriate
+  copy field.
+. Select the *Keep* box if Evergreen should keep this holdings tag in the
+  record after it is imported. Otherwise, Evergreen will remove this holdings
+  tag.
+. At a minimum, you should add a name for the definition, identify the MARC
+  holdings tag, and add the subfields that identify the circulating library, the
+  owning library, the call number and the barcode.
+
+image::media/import_item_attributes.png[]
+
+Overlay/Merge Profiles
+~~~~~~~~~~~~~~~~~~~~~~
+If Evergreen finds a match for an incoming record in the database, you need to
+identify which fields should be replaced, which should be preserved, and which
+should be added to the record. Click the *Merge/Overlay Profiles* button to
+create a profile that contains this information.
+
+These overlay/merge profiles can be used when importing records through the
+MARC Batch Importer or when importing order records through the Acquisitions
+Load MARC Order Records interface.
+
+Evergreen comes pre-installed with two default profiles:
+
+* *Default merge* - No fields from incoming record are added to match. This
+  profile is useful for item loads or for order record uploads.
+* *Default overlay* - Incoming record will replace existing record.
+
+You can customize the overlay/merge behavior with a new profile by clicking the
+*New Merge Profile* button. Available options for handling the fields include:
+
+* *Preserve specification* - fields in the existing record that should be
+  preserved.
+* *Replace specification* - fields in existing record that should be replaced
+  by those in the incoming record.
+* *Add specification* - fields from incoming record that should be added to
+  existing record (in addition to any already there.)
+* *Remove specification* - fields that should be removed from incoming record.
+
+You can add multiple tags to these specifications, separating each tag with a
+comma.
+
+Importing the records
+~~~~~~~~~~~~~~~~~~~~~
+After making the above configurations, you are now ready to import your
+records.
+
+. Click the *Import Records* button
+. Provide a unique name for the queue where the records will be loaded
+. Identify the match set that should be used for matching
+. If you are importing copies, identify the *Import Item Attributes* definition
+  in the Holdings Import Profile
+. Select a record source
+. Select the overlay/merge profile that defines which fields should be
+  replaced, added or preserved
+. Identify which records should be imported, the options are:
+  ** *Import Non-Matching Records* will automatically import records that have
+     no match in the system
+  ** *Merge on Exact Match* will automatically import records that match on the
+     901c (record ID)
+  ** *Merge on Single Match* will automatically import records when there is
+     only one match in the system
+  ** *Merge on Best Match* will automatically import records for the best match
+     in the system; the best match will be determined by the combined total of the
+     records match point scores
+
+You do not need to select any of these import options at this step. You may also opt to review the records first in the import queue and then import them.
+
+* *Best Single Match Minimum Quality Ratio* should only be changed if quality metrics were used in the match set
+
+  ** Set to 0.0 to import a record regardless of record quality
+  ** Set to 1.0 if the incoming record must be of equal or higher quality than
+     the existing record to be imported
+  ** Set to 1.1 if the incoming record must be of higher quality than the
+     existing record to be imported
+  ** *Insufficient Quality Fall-Through Profile* can also be used with quality
+     metrics. If an incoming record does not meet the standards of the minimum
+     quality ratio, you can identify a back-up merge profile to be used for
+     those records. For example, you may want to use the default overlay
+     profile for high-quality records but use the default merge profile for
+     lower quality records.
diff --git a/docs/media/create_match_sets.png b/docs/media/create_match_sets.png
new file mode 100644
index 0000000..1b92a17
Binary files /dev/null and b/docs/media/create_match_sets.png differ
diff --git a/docs/media/import_item_attributes.png b/docs/media/import_item_attributes.png
new file mode 100644
index 0000000..cef69ac
Binary files /dev/null and b/docs/media/import_item_attributes.png differ
diff --git a/docs/media/record_quality_metrics.png b/docs/media/record_quality_metrics.png
new file mode 100644
index 0000000..fd7b80c
Binary files /dev/null and b/docs/media/record_quality_metrics.png differ
diff --git a/docs/root.txt b/docs/root.txt
index 30f2ad5..7613bdd 100644
--- a/docs/root.txt
+++ b/docs/root.txt
@@ -112,6 +112,8 @@ include::admin_initial_setup/describing_your_people.txt[]
 
 include::admin_initial_setup/migrating_your_data.txt[]
 
+include::admin_initial_setup/importing_via_staff_client.txt[]
+
 // Return to normal title levels.
 :leveloffset: 0
 

commit e1e2894b3426f3f989eeed55ea690aee4b466fc5
Author: Dan Scott <dscott at laurentian.ca>
Date:   Sat Dec 8 18:36:12 2012 -0500

    Roll in some Evergreen in Action chapters
    
    For the initial import we're keeping the formatting and words identical,
    so that we can manually sycnhronize changes as needed between the FLOSS
    Manuals version of this documentation and the AsciiDoc version.
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>

diff --git a/docs/admin_initial_setup/describing_your_organization.txt b/docs/admin_initial_setup/describing_your_organization.txt
new file mode 100644
index 0000000..e2b89a3
--- /dev/null
+++ b/docs/admin_initial_setup/describing_your_organization.txt
@@ -0,0 +1,99 @@
+Describing your organization
+============================
+
+Your Evergreen system is almost ready to go. You'll need to add each of the
+libraries that will be using your Evergreen system. If you're doing this for a
+consortium, you'll have to add your consortium as a whole, and all the
+libraries and branches that are members of the consortium. In this chapter,
+we'll talk about how to get the Evergreen system to see all your libraries, how
+to set each one up, and how to edit all the details of each one. 
+
+Organization Unit Types 
+-----------------------
+The term _Organization Unit Types_ refers to levels in the hierarchy of your
+library system(s). Examples could include: All-Encompassing Consortium, Library
+System, Branch, Bookmobile, Sub-Branch, etc. 
+
+You can add or remove organizational unit types, and rename them as needed to
+match the organizational hierarchy that matches the libraries using your
+installation of Evergreen. Organizational unit types should never have proper
+names since they are only generic types. 
+
+When working with configuration, settings, and permissions, it is very
+important to be careful of the Organization Unit *Context Location* - this is the
+organizational unit to which the configuration settings are being applied. If,
+for example, a setting is applied at the Consortium context location, all child
+units will inherit that setting. If a specific branch location is selected,
+only that branch and its child units will have the setting applied. The levels
+of the hierarchy to which settings can be applied are often referred to in
+terms of "depth" in various configuration interfaces. In a typical hierarchy,
+the consortium has a depth of 0, the system is 1, the branch is 2, and any
+bookmobiles or sub-branches is 3.
+
+Create and edit Organization Unit Types 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+. Open *Admin > Server Administration > Organization Types*.
+. In the left panel, expand the *Organization Unit Types* hierarchy. 
+. Click on a organization type to edit the existing type or to add a new
+  organization unit. 
+. A form opens in the right panel, displaying the data for the selected
+  organization unit. 
+. Edit the fields as required and click *Save*. 
+
+To create a new dependent organization unit, click *New Child*. The new child
+organization unit will appear in the left panel list below the parent.
+Highlight the new unit and edit the data as needed, click *Save*
+
+Organizational Units 
+--------------------
+'Organizational Units' are the specific instances of the organization unit types
+that make up your library's hierarchy. These will have distinctive proper names
+such as Main Street Branch or Townsville Campus. 
+
+Remove or edit default Organizational Units 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+After installing the Evergreen software, the default CONS, SYS1, BR1, etc.,
+organizational units remain. These must be removed or edited to reflect actual
+library entities. 
+
+Create and edit Organizational Units 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+. Open *Admin > Server Administration > Organizational Units*.
+. In the left panel, expand the the Organizational Units hierarchy, select a
+  unit.
+. A form opens in the right panel, displaying the data for the selected
+  organizational unit.
+. To edit the existing, default organizational unit, enter system or library
+  specific data in the form; complete all three tabs: Main Settings, Hours
+  of Operation, Addresses.
+. Click *Save*.
+
+To create a new dependent organizational unit, click *New Child*. The new child
+will appear in the hierarchy list below the parent unit. Click on the new unit
+and edit the data, click *Save*
+
+Organizational Unit data
+~~~~~~~~~~~~~~~~~~~~~~~~
+The *Addresses* tab allows you to enter library contact information. Library
+Phone number, email address, and addresses are used in patron email
+notifications, hold slips, and transit slips. The Library address tab is broken
+out into four address types: Physical Address, Holds Address, Mailing Address,
+ILL Address. 
+
+The *Hours of Operation* tab is where you enter regular, weekly hours. Holiday
+and other closures are set in the *Closed Dates Editor*. Hours of operation and
+closed dates impact due dates and fine accrual.  
+
+Set closed dates using the Closed Dates Editor 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+. Open *Admin > Local Administration > Closed Dates Editor*.
+. Select type of closure: typically Single Day or Multiple Day.
+. Click the Calendar gadget to select the All Day date or starting and ending
+  dates.
+. Enter a Reason for closure (optional).
+. Click *Apply* to all of my libraries if your organizational unit has children
+  units that will also be closed.
+. Click *Save*.
+
+Now that your organizational structure is established, you can begin
+configuring permissions for the staff users of your Evergreen system.  
diff --git a/docs/admin_initial_setup/describing_your_people.txt b/docs/admin_initial_setup/describing_your_people.txt
new file mode 100644
index 0000000..7ed4371
--- /dev/null
+++ b/docs/admin_initial_setup/describing_your_people.txt
@@ -0,0 +1,321 @@
+Describing your people
+======================
+
+Many different members of your staff will use your Evergreen system to perform
+the wide variety of tasks required of the library.
+
+When the Evergreen installation was completed, a number of permission groups
+should have been automatically created. These permission groups are:
+
+* Users
+* Patrons
+* Staff
+* Catalogers
+* Circulators
+* Acquisitions
+* Acquisitions Administrator
+* Cataloging Administrator
+* Circulation Administrator
+* Local Administrator
+* Serials
+* System Administrator
+* Global Administrator
+* Data Review
+* Volunteers
+
+Each of these permission groups has a different set of permissions connected to
+them that allow them to do different things with the Evergreen system. Some of
+the permissions are the same between groups; some are different. These
+permissions are typically tied to one or more working location (sometimes
+referred to as a working organizational unit or work OU) which affects where a
+particular user can exercise the permissions they have been granted.
+
+Setting the staff user's working location
+-----------------------------------------
+To grant a working location to a staff user in the staff client:
+
+. Search for the patron. Select *Search > Search for Patrons* from the top menu.
+. When you retrieve the correct patron record, select *Other > User Permission
+  Editor* from the upper right corner. The permissions associated with this
+  account appear in the right side of the client, with the *Working Location*
+  list at the top of the screen.
+. The *Working Location* list displays the Organizational Units in your
+  consortium. Select the check box for each Organization Unit where this user
+  needs working permissions. Clear any other check boxes for Organization Units
+  where the user no longer requires working permissions.
+. Scroll all the way to the bottom of the page and click *Save*. This user
+  account is now ready to be used at your library.
+
+As you scroll down the page you will come to the *Permissions* list. These are
+the permissions that are given through the *Permission Group* that you assigned
+to this user. Depending on your own permissions, you may also have the ability
+to grant individual permissions directly to this user.
+
+Comparing approaches for managing permissions
+---------------------------------------------
+The Evergreen community uses two different approaches to deal with managing
+permissions for users:
+
+* *Staff Client*
++
+Evergreen libraries that are most comfortable using the staff client tend to
+manage permissions by creating different profiles for each type of user. When
+you create a new user, the profile you assign to the user determines their
+basic set of permissions. This approach requires many permission groups that
+contain overlapping sets of permissions: for example, you might need to create
+a _Student Circulator_ group and a _Student Cataloger_ group. Then if a new
+employee needs to perform both of these roles, you need to create a third
+_Student Cataloger / Circulator_ group representing the set of all of the
+permissions of the first two groups.
++
+The advantage to this approach is that you can maintain the permissions
+entirely within the staff client; a drawback to this approach is that it can be
+challenging to remember to add a new permission to all of the groups. Another
+drawback of this approach is that the user profile is also used to determine
+circulation and hold rules, so the complexity of your circulation and hold
+rules might increase significantly.
++
+* *Database Access*
++
+Evergreen libraries that are comfortable manipulating the database directly
+tend to manage permissions by creating permission groups that reflect discrete
+roles within a library. At the database level, you can make a user belong to
+many different permission groups, and that can simplify your permission
+management efforts. For example, if you create a _Student Circulator_ group and
+a _Student Cataloger_ group, and a new employee needs to perform both of these
+roles, you can simply assign them to both of the groups; you do not need to
+create an entirely new permission group in this case. An advantage of this
+approach is that the user profile can represent only the user's borrowing
+category and requires only the basic _Patrons_ permissions, which can simplify
+your circulation and hold rules.
+
+Permissions and profiles are not carved in stone. As the system administrator,
+you can change them as needed. You may set and alter the permissions for each
+permission group in line with what your library, or possibly your consortium,
+defines as the appropriate needs for each function in the library.
+
+Managing permissions in the staff client
+----------------------------------------
+In this section, we'll show you in the staff client:
+
+* where to find the available permissions
+* where to find the existing permission groups
+* how to see the permissions associated with each group
+* how to add or remove permissions from a group
+
+We also provide an appendix with a listing of suggested minimum permissions for
+some essential groups. You can compare the existing permissions with these
+suggested permissions and, if any are missing, you will know how to add them.
+
+Where to find existing permissions and what they mean
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In the staff client, in the upper right corner of the screen, click on *Admin >
+Server Administration > Permissions*.
+
+The list of available permissions will appear on screen and you can scroll down
+through them to see permissions that are already available in your default
+installation of Evergreen.
+
+There are over 500 permissions in the permission list. They appear in two
+columns: *Code* and *Description*. Code is the name of the permission as it
+appear in the Evergreen database. Description is a brief note on what the
+permission allows. All of the most common permissions have easily
+understandable descriptions.
+
+Where to find existing Permission Groups
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In the staff client, in the upper right corner of the screen, navigate to *Admin
+> Server Administration > Permission Groups*.
+
+Two panes will open on your screen. The left pane provides a tree view of
+existing Permission Groups. The right pane contains two tabs: Group
+Configuration and Group Permissions.
+
+In the left pane, you will find a listing of the existing Permission Groups
+which were installed by default. Click on the + sign next to any folder to
+expand the tree and see the groups underneath it. You should see the Permission
+Groups that were listed at the beginning of this chapter. If you do not and you
+need them, you will have to create them.
+
+Adding or removing permissions from a Permission Group
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+First, we will remove a permission from the Staff group.
+
+. From the list of Permission Groups, click on *Staff*.
+. In the right pane, click on the *Group Permissions* tab. You will now see a
+  list of permissions that this group has.
+. From the list, choose *CREATE_CONTAINER*. This will now be highlighted.
+. Click the *Delete Selected* button. CREATE_CONTAINER will be deleted from the
+  list. The system will not ask for a confirmation. If you delete something by
+  accident, you will have to add it back.
+. Click the *Save Changes* button.
+
+You can select a group of individual items by holding down the _Ctrl_ key and
+clicking on them. You can select a list of items by clicking on the first item,
+holding down the _Shift_ key, and clicking on the last item in the list that
+you want to select.
+
+Now, we will add the permission we just removed back to the Staff group.
+
+. From the list of Permission Groups, click on *Staff*.
+. In the right pane, click on the *Group Permissions* tab.
+. Click on the *New Mapping* button. The permission mapping dialog box will
+  appear.
+. From the Permission drop down list, choose *CREATE_CONTAINER*.
+. From the Depth drop down list, choose *Consortium*.
+. Click the checkbox for *Grantable*.
+. Click the *Add Mapping* button. The new permission will now appear in the
+  Group Permissions window.
+. Click the *Save Changes* button.
+
+If you have saved your changes and you don't see them, you may have to click
+the Reload button in the upper left side of the staff client screen.
+
+Managing role-based permission groups in the database
+-----------------------------------------------------
+While the ability to assign a user to multiple permission groups has existed in
+Evergreen for years, a staff client interface is not currently available to
+facilitate the work of the Evergreen administrator. However, if you or members
+of your team are comfortable working directly with the Evergreen database, you
+can use this approach to separate the borrowing profile of your users from the
+permissions that you grant to staff, while minimizing the amount of overlapping
+permissions that you need to manage for a set of permission groups that would
+otherwise multiply exponentially to represent all possible combinations of
+staff roles.
+
+In the following example, we create three new groups:
+
+* a _Student_ group used to determine borrowing privileges
+* a _Student Cataloger_ group representing a limited set of cataloging
+  permissions appropriate for students
+* a _Student Circulator_ group representing a limited set of circulation
+  permissions appropriate for students
+
+Then we add three new users to our system: one who needs to perform some
+cataloging duties as a student; one who needs perform some circulation duties
+as a student; and one who needs to perform both cataloging and circulation
+duties. This section demonstrates how to add these permissions to the users at
+the database level.
+
+To create the Student group, add a new row to the _permission.grp_tree_ table
+as a child of the _Patrons_ group:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
+SELECT 'Students', pgt.id, TRUE, 'Student borrowers', 'group_application.user.patron.student'
+FROM permission.grp_tree pgt
+ WHERE name = 'Patrons';
+------------------------------------------------------------------------------
+
+To create the Student Cataloger group, add a new row to the
+_permission.grp_tree_ table as a child of the _Staff_ group:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
+SELECT 'Student Catalogers', pgt.id, TRUE, 'Student catalogers', 'group_application.user.staff.student_cataloger'
+FROM permission.grp_tree pgt
+WHERE name = 'Staff';
+------------------------------------------------------------------------------
+
+To create the Student Circulator group, add a new row to the
+_permission.grp_tree_ table as a child of the _Staff_ group:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO permission.grp_tree (name, parent, usergroup, description, application_perm)
+SELECT 'Student Circulators', pgt.id, TRUE, 'Student circulators', 'group_application.user.staff.student_circulator'
+FROM permission.grp_tree pgt
+WHERE name = 'Staff';
+------------------------------------------------------------------------------
+
+We want to give the Student Catalogers group the ability to work with MARC
+records at the consortial level, so we assign the UPDATE_MARC, CREATE_MARC, and
+IMPORT_MARC permissions at depth 0:
+
+[source,sql]
+------------------------------------------------------------------------------
+WITH pgt AS (
+  SELECT id
+  FROM permission.grp_tree
+  WHERE name = 'Student Catalogers'
+)
+INSERT INTO permission.grp_perm_map (grp, perm, depth)
+SELECT pgt.id, ppl.id, 0
+FROM permission.perm_list ppl, pgt
+WHERE ppl.code IN ('UPDATE_MARC', 'CREATE_MARC', 'IMPORT_MARC');
+------------------------------------------------------------------------------
+
+Similarly, we want to give the Student Circulators group the abillity to check
+out copies and record in-house uses at the system level, so we assign the
+COPY_CHECKOUT and CREATE_IN_HOUSE_USE permissions at depth 1 (overriding the
+same _Staff_ permissions that were granted only at depth 2):
+
+[source,sql]
+------------------------------------------------------------------------------
+WITH pgt AS (
+  SELECT id
+  FROM permission.grp_tree
+  WHERE name = 'Student Circulators'
+) INSERT INTO permission.grp_perm_map (grp, perm, depth)
+SELECT pgt.id, ppl.id, 1
+FROM permission.perm_list ppl, pgt
+WHERE ppl.code IN ('COPY_CHECKOUT', 'CREATE_IN_HOUSE_USE');
+------------------------------------------------------------------------------
+
+Finally, we want to add our students to the groups. The request may arrive in
+your inbox from the library along the lines of "Please add Mint Julep as a
+Student Cataloger, Bloody Caesar as a Student Circulator, and Grass Hopper as a
+Student Cataloguer / Circulator; I've already created their accounts and given
+them a work organizational unit." You can translate that into the following SQL
+to add the users to the pertinent permission groups, adjusting for the
+inevitable typos in the names of the users.
+
+First, add our Student Cataloger:
+
+[source,sql]
+------------------------------------------------------------------------------
+WITH pgt AS (
+  SELECT id FROM permission.grp_tree
+  WHERE name = 'Student Catalogers'
+)
+INSERT INTO permission.usr_grp_map (usr, grp)
+SELECT au.id, pgt.id
+FROM actor.usr au, pgt
+WHERE first_given_name = 'Mint' AND family_name = 'Julep';
+------------------------------------------------------------------------------
+
+Next, add the Student Circulator:
+
+[source,sql]
+------------------------------------------------------------------------------
+WITH pgt AS (
+  SELECT id FROM permission.grp_tree
+  WHERE name = 'Student Circulators'
+)
+INSERT INTO permission.usr_grp_map (usr, grp)
+SELECT au.id, pgt.id
+FROM actor.usr au, pgt
+WHERE first_given_name = 'Bloody' AND family_name = 'Caesar';
+------------------------------------------------------------------------------
+
+Finally, add the all-powerful Student Cataloger / Student Circulator:
+
+[source,sql]
+------------------------------------------------------------------------------
+ WITH pgt AS (
+  SELECT id FROM permission.grp_tree
+  WHERE name IN ('Student Catalogers', 'Student Circulators')
+)
+INSERT INTO permission.usr_grp_map (usr, grp)
+SELECT au.id, pgt.id
+FROM actor.usr au, pgt
+WHERE first_given_name = 'Grass' AND family_name = 'Hopper';
+------------------------------------------------------------------------------
+
+While adopting this role-based approach might seem labour-intensive when
+applied to a handful of students in this example, over time it can help keep
+the permission profiles of your system relatively simple in comparison to the
+alternative approach of rapidly reproducing permission groups, overlapping
+permissions, and permissions granted on a one-by-one basis to individual users.
diff --git a/docs/admin_initial_setup/migrating_your_data.txt b/docs/admin_initial_setup/migrating_your_data.txt
new file mode 100644
index 0000000..4b0f85d
--- /dev/null
+++ b/docs/admin_initial_setup/migrating_your_data.txt
@@ -0,0 +1,349 @@
+Migrating from a legacy system
+==============================
+
+When you migrate to Evergreen, you generally want to migrate the bibliographic
+records and copy information that existed in your previous library system. For
+anything more than a few thousand records, you should import the data directly
+into the database rather than use the tools in the staff client. While the data
+that you can extract from your legacy system varies widely, this section
+assumes that you or members of your team have the ability to write scripts and
+are comfortable working with SQL to manipulate data within PostgreSQL. If so,
+then the following section will guide you towards a method of generating common
+data formats so that you can then load the data into the database in bulk.
+
+Making electronic resources visible in the catalog
+--------------------------------------------------
+Electronic resources generally do not have any call number or copy information
+associated with them, and Evergreen enables you to easily make bibliographic
+records visible in the public catalog within sections of the organizational
+unit hierarchy. For example, you can make a set of bibliographic records
+visible only to specific branches that have purchased licenses for the
+corresponding resources, or you can make records representing publicly
+available electronic resources visible to the entire consortium.
+
+Therefore, to make a record visible in the public catalog, modify the records
+using your preferred MARC editing approach to ensure the 856 field contains the
+following information before loading records for electronic resources into
+Evergreen:
+
+.856 field for electronic resources: indicators and subfields
+[width="100%",options="header"]
+|=============================================================================
+|Attribute   | Value | Note
+|Indicator 1 |4      |
+|Indicator 2 |0 or 1 |
+|Subfield u  |URL for the electronic resource |
+|Subfield y  |Text content of the link |
+|Subfield z  |Public note | Normally displayed after the link
+|Subfield 9  |Organizational unit short name | The record will be visible when
+  a search is performed specifying this organizational unit or one of its
+  children. You can repeat this subfield as many times as you need.
+|=============================================================================
+
+Once your electronic resource bibliographic records have the required
+indicators and subfields for each 856 field in the record, you can proceed to
+load the records using either the command-line bulk import method or the MARC
+Batch Importer in the staff client.
+
+Migrating your bibliographic records
+------------------------------------
+Convert your MARC21 binary records into the MARCXML format, with one record per
+line. You can use the following Python script to achieve this goal; just
+install the _pymarc_ library first, and adjust the values of the _input_ and
+_output_ variables as needed.
+
+[source,python]
+------------------------------------------------------------------------------
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import codecs
+import pymarc
+
+input = 'records_in.mrc'
+output = 'records_out.xml'
+
+reader = pymarc.MARCReader(open(input, 'rb'), to_unicode=True)
+writer = codecs.open(output, 'w', 'utf-8')
+for record in reader:
+    record.leader = record.leader[:9] + 'a' + record.leader[10:]
+    writer.write(pymarc.record_to_xml(record) + "\n")
+------------------------------------------------------------------------------
+
+Once you have a MARCXML file with one record per line, you can load the records
+into your Evergreen system via a staging table in your database.
+
+. Connect to the PostgreSQL database using the _psql_ command. For example:
++
+------------------------------------------------------------------------------
+psql -U <user-name> -h <hostname> -d <database>
+------------------------------------------------------------------------------
++
+. Create a staging table in the database. The staging table is a temporary
+  location for the raw data that you will load into the production table or
+  tables. Issue the following SQL statement from the _psql_ command line,
+  adjusting the name of the table from _staging_records_import_, if desired:
++
+[source,sql]
+------------------------------------------------------------------------------
+CREATE TABLE staging_records_import (id BIGSERIAL, dest BIGINT, marc TEXT);
+------------------------------------------------------------------------------
++
+. Create a function that will insert the new records into the production table
+  and update the _dest_ column of the staging table. Adjust
+  "staging_records_import" to match the name of the staging table that you plan
+  to create when you issue the following SQL statement:
++
+[source,sql]
+------------------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION staging_importer() RETURNS NULL AS $$
+DECLARE stage RECORD;
+BEGIN
+FOR stage IN SELECT * FROM staging_records_import ORDER BY id LOOP
+      INSERT INTO biblio.record_entry (marc, last_xact_id) VALUES (stage.marc, 'IMPORT');
+      UPDATE staging_records_import SET dest = currval('biblio.record_entry_id_seq');
+   END LOOP;
+  END;
+  $$ LANGUAGE plpgsql;
+------------------------------------------------------------------------------
++
+. Load the data from your MARCXML file into the staging table using the COPY
+  statement, adjusting for the name of the staging table and the location of
+  your MARCXML file:
++
+[source,sql]
+------------------------------------------------------------------------------
+COPY staging_records_import (marc) FROM '/tmp/records_out.xml';
+------------------------------------------------------------------------------
++
+. Load the data from your staging table into the production table by invoking
+  your staging function:
++
+[source,sql]
+------------------------------------------------------------------------------
+SELECT staging_importer();
+------------------------------------------------------------------------------
+
+When you leave out the _id_ value for a _BIGSERIAL_ column, the value in the
+column automatically increments for each new record that you add to the table.
+
+Once you have loaded the records into your Evergreen system, you can search for
+some known records using the staff client to confirm that the import was
+successful.
+
+Migrating your call numbers, copies, and parts
+----------------------------------------------
+'Holdings', comprised of call numbers, copies, and parts, are the set of
+objects that enable users to locate and potentially acquire materials from your
+library system.
+
+'Call numbers' connect libraries to bibliographic records. Each call number has a
+'label' associated with a classification scheme such as a the Library of Congress
+or Dewey Decimal systems, and can optionally have either or both a label prefix
+and a label suffix. Label prefixes and suffixes do not affect the sort order of
+the label.
+
+'Copies' connect call numbers to particular instances of that resource at a
+particular library. Each copy has a barcode and must exist in a particular copy
+location. Other optional attributes of copies include circulation modifier,
+which may affect whether that copy can circulate or for how long it can
+circulate, and OPAC visibility, which controls whether that particular copy
+should be visible in the public catalog.
+
+'Parts' provide more granularity for copies, primarily to enable patrons to
+place holds on individual parts of a set of items. For example, an encyclopedia
+might be represented by a single bibliographic record, with a single call
+number representing the label for that encyclopedia at a given library, with 26
+copies representing each letter of the alphabet, with each copy mapped to a
+different part such as _A, B, C, ... Z_.
+
+To migrate this data into your Evergreen system, you will create another
+staging table in the database to hold the raw data for your materials from
+which the actual call numbers, copies, and parts will be generated.
+
+Begin by connecting to the PostgreSQL database using the _psql_ command. For
+example:
+
+------------------------------------------------------------------------------
+psql -U <user-name> -h <hostname> -d <database>
+------------------------------------------------------------------------------
+
+Create the staging materials table by issuing the following SQL statement:
+
+[source,sql]
+------------------------------------------------------------------------------
+CREATE TABLE staging_materials (
+  bibkey BIGINT,  -- biblio.record_entry_id
+  callnum TEXT, -- call number label
+  callnum_prefix TEXT, -- call number prefix
+  callnum_suffix TEXT, -- call number suffix
+  callnum_class TEXT, -- classification scheme
+  create_date DATE,
+  location TEXT, -- shelving location code
+  item_type TEXT, -- circulation modifier code
+  owning_lib TEXT, -- org unit code
+  barcode TEXT, -- copy barcode
+  part TEXT
+);
+------------------------------------------------------------------------------
+
+For the purposes of this example migration of call numbers, copies, and parts,
+we assume that you are able to create a tab-delimited file containing values
+that map to the staging table properties, with one copy per line. For example,
+the following 5 lines demonstrate how the file could look for 5 different
+copies, with non-applicable attribute values represented by _\N_, and 3 of the
+copies connected to a single call number and bibliographic record via parts:
+
+------------------------------------------------------------------------------
+1   QA 76.76 A3 \N  \N  LC  2012-12-05  STACKS  BOOK    BR1 30007001122620  \N
+2   GV 161 V8   Ref.    Juv.    LC  2010-11-11  KIDS    DVD BR2 30007005197073  \N
+3   AE 5 E363 1984  \N  \N      LC  1984-01-10  REFERENCE   BOOK    BR1 30007006853385  A
+3   AE 5 E363 1984  \N  \N      LC  1984-01-10  REFERENCE   BOOK    BR1 30007006853393  B
+3   AE 5 E363 1984  \N  \N      LC  1984-01-10  REFERENCE   BOOK    BR1 30007006853344  C
+------------------------------------------------------------------------------
+
+Once your holdings are in a tab-delimited format--which, for the purposes of
+this example, we will name _holdings.tsv_--you can import the holdings file
+into your staging table. Copy the contents of the holdings file into the
+staging table using the _COPY_ SQL statement:
+
+[source,sql]
+------------------------------------------------------------------------------
+COPY staging_items (bibkey, callnum, callnum_prefix,
+  callnum_suffix, callnum_class, create_date, location,
+  item_type, owning_lib, barcode, part) FROM 'holdings.tsv';
+------------------------------------------------------------------------------
+
+Generate the copy locations you need to represent your holdings:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO asset.copy_location (name, owning_lib)
+  SELECT DISTINCT location, 1 FROM staging_materials
+  WHERE NOT EXISTS (
+    SELECT 1 FROM asset.copy_location
+    WHERE name = location
+  );
+------------------------------------------------------------------------------
+
+Generate the circulation modifiers you need to represent your holdings:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO config.circ_modifier (code, name, description, sip2_media_type)
+  SELECT DISTINCT circmod, circmod, circmod, '001'
+  FROM staging_materials
+  WHERE NOT EXISTS (
+    SELECT 1 FROM config.circ_modifier
+    WHERE circmod = code
+  );
+------------------------------------------------------------------------------
+
+Generate the call number prefixes and suffixes you need to represent your
+holdings:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO asset.call_number_prefix (owning_lib, label)
+  SELECT DISTINCT aou.id, callnum_prefix
+  FROM staging_materials sm
+    INNER JOIN actor.org_unit aou
+      ON aou.shortname = sm.owning_lib
+  WHERE NOT EXISTS (
+    SELECT 1 FROM asset.call_number_prefix acnp
+    WHERE callnum_prefix = acnp.label
+      AND aou.id = acnp.owning_lib
+  ) AND callnum_prefix IS NOT NULL;
+
+INSERT INTO asset.call_number_suffix (owning_lib, label)
+  SELECT DISTINCT aou.id, callnum_suffix
+  FROM staging_materials sm
+    INNER JOIN actor.org_unit aou
+      ON aou.shortname = sm.owning_lib
+  WHERE NOT EXISTS (
+    SELECT 1 FROM asset.call_number_suffix acns
+    WHERE callnum_suffix = acns.label
+      AND aou.id = acns.owning_lib
+  ) AND callnum_suffix IS NOT NULL;
+------------------------------------------------------------------------------
+
+Generate the call numbers for your holdings:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO asset.call_number (
+  creator, editor, record, owning_lib, label, prefix, suffix, label_class
+)
+  SELECT DISTINCT 1, 1, bibkey, aou.id, callnum, acnp.id, acns.id,
+  CASE WHEN callnum_class = 'LC' THEN 1
+             WHEN callnum_class = 'DEWEY' THEN 2
+  END
+  FROM staging_materials sm
+    INNER JOIN actor.org_unit aou
+      ON aou.shortname = owning_lib
+    INNER JOIN asset.call_number_prefix acnp
+      ON COALESCE(acnp.label, '') = COALESCE(callnum_prefix, '')
+    INNER JOIN asset.call_number_suffix acns
+      ON COALESCE(acns.label, '') = COALESCE(callnum_suffix, '')
+;
+------------------------------------------------------------------------------
+
+Generate the copies for your holdings:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO asset.copy (
+  circ_lib, creator, editor, call_number, location,
+ loan_duration, fine_level, barcode
+)
+  SELECT DISTINCT aou.id, 1, 1, acn.id, acl.id, 2, 2, barcode
+  FROM staging_materials sm
+    INNER JOIN actor.org_unit aou
+      ON aou.shortname = sm.owning_lib
+    INNER JOIN asset.copy_location acl
+      ON acl.name = sm.location
+    INNER JOIN asset.call_number acn
+      ON acn.label = sm.callnum
+  WHERE acn.deleted IS FALSE
+;
+------------------------------------------------------------------------------
+
+Generate the parts for your holdings. First, create the set of parts that are
+required for each record based on your staging materials table:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO biblio.monograph_part (record, label)
+  SELECT DISTINCT bibkey, part
+  FROM staging_materials sm
+  WHERE part IS NOT NULL AND NOT EXISTS (
+    SELECT 1 FROM biblio.monograph_part bmp
+    WHERE sm.part = bmp.label
+      AND sm.bibkey = bmp.record
+  );
+------------------------------------------------------------------------------
+
+Now map the parts for each record to the specific copies that you added:
+
+[source,sql]
+------------------------------------------------------------------------------
+INSERT INTO asset.copy_part_map (target_copy, part)
+  SELECT DISTINCT acp.id, bmp.id
+  FROM staging_materials sm
+    INNER JOIN asset.copy acp
+      ON acp.barcode = sm.barcode
+    INNER JOIN biblio.monograph_part bmp
+      ON bmp.record = sm.bibkey
+  WHERE part IS NOT NULL
+    AND part = bmp.label
+    AND acp.deleted IS FALSE
+    AND NOT EXISTS (
+    SELECT 1 FROM asset.copy_part_map
+    WHERE target_copy = acp.id
+      AND part = bmp.id
+  );
+------------------------------------------------------------------------------
+
+At this point, you have loaded your bibliographic records, call numbers, call
+number prefixes and suffixes, copies, and parts, and your records should be
+visible to searches in the public catalog within the appropriate organization
+unit scope.
diff --git a/docs/root.txt b/docs/root.txt
index 4c2a66c..30f2ad5 100644
--- a/docs/root.txt
+++ b/docs/root.txt
@@ -103,6 +103,18 @@ The Evergreen system allows a free range of customizations to every aspect of
 the system. Use this part of the documentation to become familiar with the tools
 for configuring the system as well as customizing the catalog and staff client.  
 
+// Push titles down one level.
+:leveloffset: 1
+
+include::admin_initial_setup/describing_your_organization.txt[]
+
+include::admin_initial_setup/describing_your_people.txt[]
+
+include::admin_initial_setup/migrating_your_data.txt[]
+
+// Return to normal title levels.
+:leveloffset: 0
+
 include::admin/template_toolkit.txt[]
 
 // Push titles down one level.

commit 196b60a711726c80608d3516c8ac73b1f2579e8e
Author: Dan Scott <dscott at laurentian.ca>
Date:   Sat Dec 8 18:37:51 2012 -0500

    Add a target ID to fix the epub transform
    
    Commit a850606073 added a link pointing to this ID, but the target ID
    did not exist, breaking the epub transform. Now it works again.
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>

diff --git a/docs/admin/lsa-library_settings_editor.txt b/docs/admin/lsa-library_settings_editor.txt
index ab30553..5568cc1 100644
--- a/docs/admin/lsa-library_settings_editor.txt
+++ b/docs/admin/lsa-library_settings_editor.txt
@@ -1,5 +1,6 @@
 Library Settings Editor
 -----------------------
+[[library_settings_editor]]
 
 Fine Accrual on Closed Dates
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-----------------------------------------------------------------------

Summary of changes:
 docs/admin/lsa-library_settings_editor.txt         |    1 +
 .../describing_your_organization.txt               |   99 ++++++
 .../admin_initial_setup/describing_your_people.txt |  321 ++++++++++++++++++
 .../importing_via_staff_client.txt                 |  190 +++++++++++
 docs/admin_initial_setup/migrating_your_data.txt   |  349 ++++++++++++++++++++
 docs/admin_initial_setup/ordering_materials.txt    |  238 +++++++++++++
 docs/media/create_match_sets.png                   |  Bin 0 -> 17710 bytes
 docs/media/import_item_attributes.png              |  Bin 0 -> 14986 bytes
 docs/media/order_record_loading.png                |  Bin 0 -> 8810 bytes
 docs/media/record_quality_metrics.png              |  Bin 0 -> 12890 bytes
 docs/root.txt                                      |   14 +
 11 files changed, 1212 insertions(+), 0 deletions(-)
 create mode 100644 docs/admin_initial_setup/describing_your_organization.txt
 create mode 100644 docs/admin_initial_setup/describing_your_people.txt
 create mode 100644 docs/admin_initial_setup/importing_via_staff_client.txt
 create mode 100644 docs/admin_initial_setup/migrating_your_data.txt
 create mode 100644 docs/admin_initial_setup/ordering_materials.txt
 create mode 100644 docs/media/create_match_sets.png
 create mode 100644 docs/media/import_item_attributes.png
 create mode 100644 docs/media/order_record_loading.png
 create mode 100644 docs/media/record_quality_metrics.png


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list