Skip to main content
  • Subscribe by RSS
  • Ex Libris Knowledge Center

    Extracting Records from Millennium and Sierra (III) for Migration to Alma

    This document provides a description of the procedures performed by Boston University in order to extract records from Sierra and Millennium (III) to Alma. Ex Libris cannot take responsibility or provide support for any of the procedures described in this document.
    Libraries migrating from Millennium or Sierra (III) to Ex Libris Alma are responsible for extracting the records to provide to Ex Libris. Extracting the records is a task that can be done by a staff member with appropriate permissions in Sierra/Millennium.
    This document describes the process of extracting records from Millennium (III) and was developed by Boston University Libraries, but has been updated to include Sierra as well.   Sierra and Millennium have the same underlying database structure, and the extract process is the same, so this document refers to both products.
    This document should be used in conjunction with the Millennium and Sierra (III) to Alma Data Delivery Specification, which defines the fields that should be exported for each record type, and the Migration File Validation Tool, which is used to check the format of each of the exported files before they are uploaded to the Ex Libris FTP site. This document is a guide to the process for extracting records. It is intended to supplement the data delivery guide and the file validation tool.
    The description of fields exported in this document are very specific to the Boston University implementation of Millennium and likely do not reflect specific fields in use at your institution. This is because of the option that III provides in allowing libraries to modify their database field names for local use. For specific information on how to map your local fields to the expected field names, use the Millennium and Sierra (III) to Alma Data Delivery Specification document as your primary guide.

    Millennium/Sierra (III) Permissions

    To export bibliographic records, you need to be able to perform Millennium/Sierra (III) function 24 (Read/Write MARC records). Exporting other records requires permission to perform function 18 (Create lists of records). A few days before going live, the library needs to freeze all circulation transactions in Millennium/Sierra, including self-renewals through the Millennium/Sierra (III) OPAC. An easy way to do this is to modify the pverify_web.html file using the WebMaster function (524) in Millennium (III). Boston University Libraries also chose to place a notice on the toplogo.html to inform patrons that the Millennium (III) OPAC has been frozen and that all circulation transactions need to be performed at the circulation desk.

    Millennium/Sierra (III) Record Numbers

    When exporting records using Create List, the number of records that can be exported in a single file is limited by the size of the review file. At Boston University, the largest record queue holds a maximum 150,000 records. When exporting more records than the record queue holds, the query is executed multiple times beginning with the next record in sequence.
    Because Ex Libris recommends that item and bib record files be limited to a maximum of 200,000 records, use the Sierra Admin App (web based administration tool) to create a review file of that size. 
    All Millennium/Sierra (III) record numbers begin with a lower case alpha character indicating the type of record. The final digit in the record number is a check digit. This check digit is a calculated number and does not increment in a serial fashion. So, for example, the following two bibliographic record numbers are sequential.
    b20933320 = b + 2093332 + 0
    b20933332 = b + 2093333 + 2
    When re-executing the query, specify the next record in sequence as the beginning record in the query. To avoid having to calculate the check digit, use the character a as a wild card character. So, for example, if the following two record numbers are the last records in the record queue:
    begin the next iteration of the query with the following number that represents the next sequential character.

    Exporting Bibliographic Records

    To create manageable sized MARC files, Boston University exported records in batches of 150,000 records. Each query of bibliographic records is executed in Create List specifying the range of record numbers to search. The start record number is updated for each successive iteration of the query, using the next sequential bibliographic record number. The stop record number can remain unchanged.
    Usually, no additional criteria need be specified unless there are additional bibliographic records that are not to be exported.  However, some customers have seen cases where random records are excluded for no apparent reason.  We suspect this is due to how the records are sorted on output.  In order to ensure all records are included, add the following criteria: 
    RECORD # (BIBLIO) greater than [starting record number]
    This ensures that the exported sets are sorted by bib key, so that when you export the second and subsequent sets of records, you start at the correct place.
    After each query is complete, the bibliographic records are exported from Data Exchange. The following procedure describes how to export the bibliographic records from Data Exchange.
    1. Select Output records for exit services, or Output MARC records.

    The 'Output records for exit services' should be set up to automatically export bib records with UTF8.  If you do not see this option, use another output option.  Each library's data exchange processes may be configured slightly differently, and you may also need to check that the b2mtab export table is set up to use utf8.

    1. Create the output file by clicking the Create icon from the top toolbar.
    2. Give the output file a name.
    3. Select Review from the drop-down menu.
    4. Select the Review queue that holds the records for the query.
    5. Click the Start button.
    6. After the output file has been created. Click the Close icon in the upper right corner.
    7. If there are additional bibliographic records to extract, re-execute the query, update the start record number, and repeat the steps of this procedure.
    8. After all files are created, FTP or download them to your PC.
    If it is important to migrate records that have no MARC tags, these can be cataloged as a pre-migration cleanup task. Boston University chose to export these records without MARC tags into a separate file. This was accomplished by changing the search criteria to MARC tag 245|a =“”. The file was exported using Data Exchange as described above. The exported file of on the fly records was then opened in MarcEdit which assigned marc tags to the records based on the indexes used in Millennium/Sierra (III). The file was then compiled to create a new marc file. This file was migrated to Alma where editing the batch of records was treated as a post-migration cleanup task (

    Exporting MARC Holdings Records

    All customers who migrate from Sierra or Millennium to Alma are able to export MARC Holdings records based on serial checkin records. III staff must set up an export table on your server in order to export MARC Holdings; if this table is not present, contact your Ex Libris representative to request that this be added.

    The MARC Holding export is available as a new Data Exchange process called "Output Records for Exit Services (exit)". 

    For customers who have diacritics in their holding records: holdings records are exported in unicode (UTF-8), but the leader position 09, which indicates unicode, continues to be marked as non-unicode.  If you have diacritics in your holdings summary statements or notes, then make a request to your representative to have them manually change leader position 09 to 'a', indicating unicode.  If you do not have diacritics in your holdings, for example if all of your summary statements and notes are in English, then the holdings can actually be processed either way.

    If you don’t see the new process, select it as a Displayed Process for your login:

    Instructions for Sierra

    1. Admin -> Options 

    2. Click tab: Data Exchange

    3. click on process in right side column: Output Records for Exit Services (exit)

    4. use arrow to move from Other Processes to Displayed Processes column

    5. click button: OK

    Instructions for Milllennium

    1. Admin -> Login Manager -> Manager-Controlled Options

    2. click tab: Data Exchange

    3. move the new process over from the Other Processes to the Displayed Processes column

    4. click button: OK

    5. click button: Quit

    It should now be displayed as a Data Exchange process.


    Before extracting the MARC Records, first confirm whether your library has multiple Units for serials. Check in the character-based system:

    M > MANAGEMENT information
    I > INFORMATION about the system
    F > FILE information
    S > SYSTEM status

    Example of a system with a single Unit:

                               INNOVATIVE SYSTEM STATUS


     BIBLIOGRAPHIC        6215803x     3496960     5450000     1718825

     ORDER                12983147      147102      400000      151187

     CHECKIN               4658012        8874      440000      356910


    Example of a system with multiple Units. The Unit numbers appear in parenthesis.

                                INNOVATIVE SYSTEM STATUS


     Bibliographic        50621415     3420297     5000000      641841

     Order                30022794       27246     1000000         273

     Order(1)UL           1025240x       25027      500000         213

     Order(2)HSL          30022794        2219      500000          60

     Holdings             30070600       46259     1000000        2382

     Holdings(1)UL        10415816       41107      500000         474

     Holdings(2)HSL       30070600        5152      500000        1908


    If your library has multiple Units, multiple extractions will need to be performed.

    How to perform the extraction:

    1. If multiple Units, log in to the SDA/Millennium using a login linked to the holdings/checkin Unit, for example Unit 1.  For single units, any authorized login is acceptable.

    2. Go to Data Exchange process/function: Output Records for Exit Services (exit).

    3. Click button: Create

    4. Name the Output File, for example: [LibraryIdentifier]-unit1-checkin-marc-[date]. File extension “.out” will automatically be assigned.

    5. Click once in Start input box and type: c (checkin records). The Start and End record numbers will auto-complete.   Remember that the range of records here is for checkin records, not bibliographic records.

    6. If multiple Unit, the Start and End record numbers for the Unit may need to be keyed

    For example:
    Unit 1, START record number = c100000a, END record number = c199999a
    Unit 2, START record number = c300000a, END record number = c399999a

    You can verify the record number range for the Unit by examining the INNOVATIVE SYSTEM STATUS screen.

    7. Click button: Start

    8. Transmit the *.out data file to your PC using the PUT button


    Exporting Other Record Types

    Most other record types can be exported directly from the Create List queue by clicking the Export Records button. This includes the following record types:
    • Checkin records
    • Course records
    • Item records
    • Order records
    • Patron records
    • Vendor records
    The Create List queries to export these record types are executed much like the query for bibliographic records. The Start record number is specified for each record type and updated for each iteration of the query. For Checkin, Item, and Order records, it is important to specify a criteria that the bibliographic record to which they are attached has a 245 field (245|a > “”) if you chose to exclude bibs without 245s from your bib export.   Otherwise, no additional criteria need be specified.
    Millennium/Sierra (III) allows the user to export fields from records in a review queue in a delimited file format. Use a comma (,) for the field delimiter. Use double quotation marks (“) for the text qualifier. Use a semicolon (;) for the repeated field delimiter.
    In the specific case of boundwiths, do not use the semicolon delimiter for repeated bib records.  Leave the boundwith record as is after exporting from Millennium.  For further information on exporting boundwiths, see the section 'Boundwiths file structure: field order' in the Item Records section of the Millennium and Sierra Migration Guide.
    Remove double quotes from data values
    Since data exported in a comma/quote format, it is important that the data itself not contain double quotes.  For example:
    "b12345","i443321","This item note refers to the book "Gone with the Wind" and not any other","8/07/1998"
    The double quotes around the book title in this case will make this record unreadable by our migration programs.  In order to correct this, use Sierra's global change mechanism to change double quotes to single quotes in all fields which could contain double quotes.  These are usually notes, in items, purchase orders, serials, etc.
    The final result should be: 
    "b12345","i443321","This item note refers to the book 'Gone with the Wind' and not any other","8/07/1998"
    The fields to be exported are defined in Millennium (III) to Alma Data Delivery Specification and are provided to Ex Libris via the Migration File Validation Tool.
    Limited number of fields per file
    Older versions of Millennium allow twenty-five (25) fields to be exported at one time using Create List, though more current versions of Millennium and/or Sierra allow thirty-two (32). This number may change if III changes the export requirements per version.  If you want to export more than the maximum fields allowed for Item records, Order records, Patron records, and Vendor records, then multiple files for each set of records must be exported.   To link the two files, include the record number in both files, for example the item record number or the order number, and call the two files A and B. 
    More detailed instructions for how the two split files should be formatted can be found in the Split Files section of the Migration File Validation Tool guide.

    Exporting Item Records (Call Numbers)

    For Item Records, export the fields in the order listed on the Item tab of the Field Mapping form. It is very important to export the call number fields in the order specified. 
    NOTE: since Millennium and Sierra allow customers to define local field names, your field names may differ from these recommended field lists
    Call numbers for Millennium/Sierra items can come from either the item record or the related bibliographic record.
    The way that you extract call number fields from Millennium/Sierra impacts how the call number type and $h and $i subfields of the 852 in the holdings record in Alma are represented. You have the option of delivering call numbers from either the item record or the bibliographic record (or both) and you can still retain the $h and $i subfields of the call number field. There are a couple of different ways to export item and bibliographic record call numbers from your Millennium/Sierra system, and you need to do one of the following if you want to ensure that all call numbers are migrated with the expected call number type and cutter.
    In order for call numbers to migrate to the subfields $h and $i in the holdings record, you must export your item and/or bibliographic record call numbers based on the MARC tag of the call number field. Both the item call number MARC fields and the bibliographic record call number MARC fields can be included in your item record export CSV file. If you only use call numbers from the item record, you can simply export the MARC tags from the item call number fields. Subsequently, if you only use call numbers from the bibliographic record, you can simply export the MARC tags from the bibliographic call number fields. In both cases, you will include the call numbers in your item export CSV file. If you use tags from both the item record and the bibliographic record, export all MARC tags from both the item record and bibliographic record that represent call numbers fields that you utilize.
    When exporting these MARC fields based on the MARC tag, specify all subfields in the MARC field when exporting this MARC field. For example: You want to retain call numbers from your bibliographic record 090, 050 and 086 MARC fields. In some cases, there may be call numbers in item records that you want to take precedence over the above bibliographic record call number fields. These are correspondingly the item record 090, 050 and 086 call number fields. The following image shows what each MARC FIELD export would look like. Note the inclusion of the subfields in the field export:
    Continue adding fields as recommended in the Item Records section of the Millennium and Sierra Data Delivery and Migration guide.
    This is what your file looks like when you open it in Notepad. Note that you should see semicolons (;) in between the call number subfields (see the BIB 050|ab field below). This is what Ex Libris uses to migrate the call number fields to the separate $h and $i fields in the holdings record.
    Note that anything that is in the CALL #(ITEM) field overrides all other call number fields, no matter where it is placed in the exported item file. The CALL #(ITEM) field and the CALL #(BIBLIO) fields never retain the $h and $i upon export from Millennium and Sierra. If it is important to retain these subfields, you can choose not to export CALL #(ITEM) or CALL #(BIBLIO) at all.

    Exporting Order Records

    For Order records, export the fields necessary. The customer who helped us with this guide wanted to keep a lot of order information in the Alma order note fields, so they exported a large number of fields, requiring two files because the Sierra export can handle up to 25 fields per file.  
    Your library may not need all of the fields listed and thus may not need two files in the order extract.  If you do have two files in your order extract, make sure they are structured and named correctly, according to this section of the Vaildation Tool guide. 
    since Millennium and Sierra allow customers to define local field names, your field names may differ from these recommended field lists
    • COPIES
    • CDATE
    • CODE1
    • CODE4
    • ACQ TYPE
    • CLAIM
    • E PRICE
    • FORM
    • FUND
    • ODATE
    • ORD NOTE
    • ORD TYPE
    • RDATE
    • RLOC
    • BLOC
    • STATUS(O)
    • TLOC
    • VENDOR
    • LANG
    The following fields are exported in the second file if a second file is needed.  A second file is needed if the number of fields exceeds the allowed number of fields in a single file, which has been 25 in the past - this may be updated in newer versions.  Think of the second file as overflow from the first file.  The common key which links the two files together is RECORD #(ORDER).
    • INFO
    • FOR. CURR.
    • INT. NOTE
    • VEN. NOTE
    • VEN. ADDR.
    • OLD ORDER #
    • VENDOR TI #
    • FUNDS
    • ACCOUNT #
    • SUBACCT #
    • SHIP TO
    Below is an example of the first and second order files 
    "o1000001x","b140021103","ma   ","1","  -  -  ","s","-","-","y","$25.00","11-23-87","-","-","05-23-90","s","9","z","p","ibebk","spa","xx ","1","11-23-87","09-14-2016","29","Begin with no. 2- to continue unti
    l cancelled","","10/15/04 fnd chg from ibers to sppos per SH/jcg";"20160914  Changed OT from O to S, AT from S to O.  tsre",""
    "o10000021","b105138319","tb   ","1","  -  -  ","s","-","n","y","$25.01","08-25-88","-","-","08-25-88","b","9","z","p","bomex","spa","xx ","1","08-25-88","09-14-2016","31","Begin with 1985, 1987- to continue
     until cancelled","","Already cat for BANC";"20160914  Changed OT from O to S, AT from S to O.  tsre",""
    "o1000001x",".o1002260","","","","Publisher: Asociacion Espanola de Estudios Genalogicos y Heraldicos, Hierbabuena 7, Madrid, Spain";"8d93 lapsed, ref'd to CDelgado kt";"4/05 vndr chng fm sanch to ibebk mk";
    "20100110 emailed vendor with updated po# sf";"20130821 Drop Action on v.2 & foll.  tslcm","","","","","","","","","","","","","","",""
    "o10000021",".o1569533","","","","15my91 hldg inv 11990(22f91) for dup 1988/89 kt";"12ap93 hldg dup 1990 for inv kt";"5ag94 lttr to bomex: inv 10014(18ja90) pd on ck no. 45070(1s93) kt";"20110808 close rec
    noth'g rcvd in yrs  reopen if any future vols supplied tsdl","","","","","","","","","","","","","","",""
    Order Payment file
    The following fields are exported in the order payment file. This is accomplished by selecting two fields from the Order records: the Order Record Number and the Paid field. The Paid field is a composite field containing fields 2-10 below:
    • PAID
      • Paid Date
      • Invoice Date
      • Invoice Num
      • Amount Paid
      • Voucher Num
      • Copies
      • Sub From
      • Sub To
      • Note
    Below is an example of the order payment record and header should look like. 
    "RECORD #","Paid Date","Invoice Date","Invoice Num","Amount Paid","Voucher Num","Copies","Sub From","Sub To","Note"
    "o1000032","10/29/1991","09-04-1991","922408","40.44","11452","1"," -  - "," -  - ";"12/11/1987"," 09-01-1987","320179","95","1600","1","   -  -  ","  -  -  ";"2/26/1991"," 12-07-1990","692308","1.52","8950","1","   -  -  ","  -  -  ";"1/2/1991"," 09-01-1990","781553","38.89","8401","1","   -  -  ","  -  -  ";"1/8/1992"," 10-28-1992","88466","47.25","14950","1","   -  -  ","  -  -  ";"7/15/1994"," 10-13-1993","208287","47.66","18401","1","   -  -  ","  -  -  ";"10/4/2007"," 08-22-2007","9064481","71.69","58585","1","   -  -  ","  -  -  ";"11/24/1998"," 11-12-1998","8846913","58.01","33188","1","   -  -  ","  -  -  ";"1/22/1997"," 01-22-1997","8803264","51.43","27094","1","   -  -  ","  -  -  ";"9/4/2002"," 10-24-2001","8936782","64.42","45134","1","   -  -  ","  -  -  ";"10/22/1999"," 10-06-1999","8874701","60.26","36221","1","   -  -  ","  -  -  ";"3/14/1996"," 11-02-1995","8771507","52.46","23147","1","   -  -  ","  -  -  "

    Exporting Patron Records

    The following fields were exported by the first customer who helped us with this guide.  Your library may not need to transfer all of these fields.  The fields which can be mapped in the Migration File Validation tool are functionally used in the migration; other fields are generally moved over as informational notes.
    NOTE: since Millennium and Sierra allow customers to define local field names, your field names may differ from these recommended field lists
    • UNIV ID
    • EXP DATE
    • PCODE2
    • PCODE3
    • P TYPE
    • MBLOCK
    • CL RTRND
    • ADDRESS2
    • SCHOOL
    • DEPT
    The following fields are exported in the second Patron record file:
    • NetID

    Exporting Vendor Records

    The following fields were exported by the first customer who assisted us with this guide.  Your library may not need all of the fields. 
    Remember that vendors are migrated only once, at Test Load.
    NOTE: since Millennium and Sierra allow customers to define local field names, your field names may differ from these recommended field lists
    • VCODE1
    • VCODE2
    • VCODE3
    • ORDERS
    • CLAIMS
    • ORD CLMD
    • CPY RCVD
    • ORD TOT
    • INV TOT
    • GIR CODE
    The following fields are exported in the second Vendor record file:
    • ADDRESS1
    • ADDRESS2
    • FAX
    • EMAIL
    • NOTE1
    • NOTE2
    • NOTE3
    • FTP INFO

    Exporting Transaction Files

    Circulation and Holds transactions are extracted from Millennium (III) by searching for Item records in Create List with search criteria defined to create a set of the item records that are in circulation and on the hold shelf.

    Exporting Circulation Transactions

    To identify the items that are checked out to patrons, do an Item records search in Create List using the following criteria:
    ITEM DUE greater than " - - "
    Export the fields defined in Millennium (III) to Alma Data Delivery Specification.

    Exporting Holds

    To identify the items on the Hold Shelf, do an Item records search in Create List using the criteria that indicate if an item is currently on the hold shelf waiting for pickup.
    Item Status = “!”
    After you identify the list of items on the hold shelf (item status = !) and you export the items associated with that list, find the HOLD field in the list of available fields in the item record. On the Field Mapping Form, this is HOLD(ITEM), meaning field HOLD in the ‘ITEM’ record.
    In the empty box above, search for the variable field '8 HOLD'.  This field may not show up on all customer environments.  If you do not see '8 HOLD', make a support request and ask to have the item tag '8 HOLD' be added to Create Lists.
    The HOLD(ITEM) field contains the patron who has the record on hold and other values such as the hold placed date (P), Not Needed before (NNB), and Not Needed After (NNA). Do not include the PATRON(ITEM) field from the main item record, which is the last patron that checked out the item.
    Additionally, if possible, limit the actual requests to those that are on the hold shelf. For example, the following item has multiple requests on it:
    "P#=1072938, I#=1509632, P=16-08-29, NNB=16-08-29 (0 days), RLA=0, NNA=38-01-18, ST=105, TP=i, PU=main ";
    "P#=1031657, I#=1509632, P=16-09-12, NNB=16-09-12 (0 days), RLA=0, NNA=38-01-18, ST=0, TP=i, PU=main ";
    "P#=1012928, I#=1509632, P=16-10-04, NNB=16-10-04 (0 days), RLA=0, NNA=38-01-18, ST=0, TP=i, PU=main "," - - "
    The first one (with ST=105) is the only request for this item where the item is on the hold shelf and the patron has been notified for pickup. The first request information line is needed (with ST=105), but the others (with ST=0) should not be included.  If your data does not have these numbers in the ST field, there may be new (updated) status values which indicate that an item is on the hold shelf waiting for pickup.  Be sure that the only requests provided are in this category.

    Identifying Suppressed Records

    Bibliographic records that are suppressed in Millennium (III) can be suppressed from discovery in Alma as part of the migration process. In order to do so, the library must supply a CSV file containing a list of the bibliographic record numbers of records that are suppressed in Millennium (III). To do so, create a query in Create List of Bibliographic records that are suppressed. Bibliographic records are generally suppressed in Millennium (III) using a value in BCODE3. Select the appropriate values to create the list. Then export the bibliographic record number from Create List as the sole field exported in the file.

    Identifying Electronic Records

    Portfolios can be created for bibliographic records that represent electronic resources. Create a query of bibliographic records that represent electronic resources. This query varies by library based on cataloging practice. Then export the bibliographic record number from Create List as the sole field exported in the file. It is advisable to discuss this extract with the Ex Libris data migration team.

    Exporting Funds and Invoices

    This section discusses exporting funds and invoices.


    Boston University was not able to extract the invoice records from Millennium (III) in a format that could be migrated to Alma. The Millennium (III) Line Item field in the Invoice records was exported as a space delimited field. This proved problematic. It is a composite field that contains multiple fields that include spaces (Title and Notes). In addition, there was variation in the number and order of the fields exported in this field. Boston University ultimately concluded that it would export the payment records into a spreadsheet that could be used for verification of historical payment history – which is enriched onto the order record - rather than trying to migrate invoices into Alma. Libraries that desire to migrate these records to Alma may need to seek assistance from III.


    Ex Libris requires a separate fund file, not exported from Millennium/Sierra.  The file is created manually using a spreadsheet with the following columns. 
    • LedgerCode
    • Ledger
    • Summary FundCode
    • Summary Fund Name
    • Fund Code
    • Fund Name
    • Library
    • externalID
    • Allocation
    This file was saved as a comma delimited file (CSV). Ensure that all fields are enclosed with quotation marks.
    • Was this article helpful?