270 likes | 468 Views
LDS Church Implementations. Aleph / Primo Implementation & Gap Application Development Ken Jensen David Benge. Overview. LDS Church overview History of LDS Church / Ex Libris Implementation of Aleph / Primo Data Migration – HMMS -> MarkLogic -> Aleph
E N D
LDS Church Implementations Aleph / Primo Implementation & Gap Application Development Ken Jensen David Benge
Overview • LDS Church overview • History of LDS Church / Ex Libris • Implementation of Aleph / Primo • Data Migration – HMMS -> MarkLogic -> Aleph • Aleph Configuration – Library / Archives / Museum • Primo Implementation – Customizing UI • Gap Applications – EAD, Put-away program • Future development • Digitool Implementation • EAD phase II and III • Acquisitions module • Integration with other departments / institutions
LDS Church overview • 14+ million members globally • 166 languages supported • $885 MM of Humanitarian Assistance since 1985 • 4 Universities and Colleges • Family History Library • Church History Library – 4+ million • Audio Visual Department / MPS
History of LDS Church / Ex Libris • BYU previously purchased Primo • 9/2009 – Aleph and Primo purchase • 10/2010 – Aleph Go-Live • 10/2010 – PutAway Go-Live • 11/2010 – Primo Go-Live • Rosetta POC done, implementation begun • Digitool implementation begun
Data Migration • 20+ year old, homegrown Oracle apps ILS – Historical Materials Management System (HMMS) • Modified MARC • Innovative and Aquabrowser • 1 million validation errors • 4000+ transformation rules • HMMS xml -> MarkLogic -> Aleph
MarkLogic - XQuery <datafield tag="CAT" ind1=" " ind2=" "> <subfield code="a">{data($record/created/@by)}</subfield> <subfield code="b">40</subfield> <subfield code="c">{substring(data($record/created/@when),1,8) } </subfield> <subfield code="h">0000</subfield> <subfield code="l">LDS01</subfield> </datafield>, <datafield tag="CAT" ind1=" " ind2=" "> <subfield code="a">{data($record/updated/@by)}</subfield> <subfield code="b">40</subfield> <subfield code="c">{substring(data($record/updated/@when),1,8) }</subfield> <subfield code="h">0000</subfield> <subfield code="l">LDS01</subfield> </datafield>, <datafield tag="OWN" ind1=" " ind2=" "> <subfield code="a">{data($record/@structure)}</subfield> </datafield>, local:convert_libr_bib_npu_rule( data($record/@structure) ), for $tag in $format/tag where not ($tag/@id = (006, 007, 008, 009)) return local:convert_rule_manager( $record, $tag, $record/@catalog, "BIB", $tag/@id, $exportlabel ) ) } </record> return xdmp:save( concat( "/hmms_export/AlephLoadFiles/", substring(replace(string(current-date()),"-",""),1,8), "LIBR-BIB-All", "-", count($output), ".bib.xml" ), <records>{$output}</records> ) (: ------------ Biblography/LIBR to file ------------- :) (: --------------------------------------------------------------- :) (: ------- place HMMS Library here before starting --------------- :) (: --------------------------------------------------------------- :) (: Converter for Biblography/LIBR Records and write to file :) (: NOTE: export label is used for the data checker to validate :) (: all subfields have been exported. If export label is :) (: not used, then data checker will most likely be :) (: compromised. :) let $exportlabel := "5-100630" let $output := for $record in (/record[@catalog = "LIBR"][format]) return let $exported := $record/@exported return <record type="Bibliographic" > <leader>^^^^^nam^a22^^^^^^a^4500</leader> { for $format in $record/format[@kind eq "BIB"] let $uniqueidlen := string-length($format/@id) let $uniqueid := substring(concat("000000000",$format/@id), ((9+$uniqueidlen)-8), (9+$uniqueidlen)) return ( <controlfield tag="001">{$uniqueid}</controlfield>, <controlfield tag="003">org.ldschurch.hmms</controlfield>, <controlfield tag="005">{substring(data($exported),1,8)}</controlfield>, if (exists($format/tag[@id="006"])) then <controlfield tag="006">{substring(data($format/tag[@id="006"]),1,19)}</controlfield> else (), if (exists($format/tag[@id="007"])) then <controlfield tag="007">{substring(data($format/tag[@id="007"]),1,15)}</controlfield> else (), <controlfield tag="008">{substring(data($format/tag[@id="008"]),1,41)}</controlfield>, <datafield tag="035" ind1="9" ind2=" "> <subfield code="a">{data($record/@id)}</subfield> <subfield code="b">{data($record/@structure)}</subfield> </datafield>, <controlfield tag="FMT">{data($format/@type)}</controlfield>,
Aleph Configuration • Library, Archives and Museum • Nested locations (non-call #) • Acquisitions (catalog over time) • Volunteer staff (no formal training)
Custom configurations • Extract BIB, HOLD and AUTH data into the Z13 for custom reports and auto populating item data (real time). • Configured Aleph to authority control a holdings tag (usually it’s only done with BIB tags). • Configured Aleph to do custom sorting by creating a user-defined sort key and putting it in the enumeration-A field. We then selected one of the canned Aleph sort routines (item-14) that uses the enumeration-A field. • Configured Aleph to authoritatively manage bar-coded locations by putting our locations (and containers) in item records under a single custom BIB record. (put-away program uses these). • Configured Aleph to do LDAP authentication for staff login to the Aleph client. • Configured Aleph to automatically push collection code and call number to an item record using a 950 tag in a HOLD record (real time). Note: Aleph already does this using the 852 tag. What makes it unique is that the call number could come from a BIB record (090 tag) or a HOLD record (850 tag).
Primo Implementation • Records from Church History Library, Archive, Museum, BYU, Audio Visual Library • LibGuides integration
Gap Applications • PutAway • Barcoded locations and assets • Auditing reports • EAD – Encoded Archival Description • Phase I – Creation • Phase II – Display through Primo • Phase III – Circulation integration w/ Aleph
PutAway • - Login • - Scan Location • Scan Object • Object Putaway • Create Storage Container
EAD Module • Encoded Archival Description (XML) • Physical and Virtual nesting • Cataloging to various levels incomplete • Java & GWT with MarkLogic XML-DB
Future Development • EAD • Phase II – Integrate with Primo / Digitool • Phase III – Integrate with Aleph for circulation • Acquisitions • Remote Cataloging by volunteers • Digitization on demand • Crowd-sourcing metadata descriptions
Questions??? Thanks!