from order to checkout
DESCRIPTION
From Order to Checkout. Improving Workflows through Acq, Cat and Circ Jackie Wrosch Systems Librarian Eastern Michigan Univeristy. Before.... Infrequent bulk imports Manual downloads and imports “On Order” location for items on order “Not Yet Available” location for items in process - PowerPoint PPT PresentationTRANSCRIPT
From Order to Checkout
Improving Workflows through Acq, Cat and Circ
Jackie Wrosch
Systems Librarian
Eastern Michigan Univeristy
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 2
Before...
Infrequent bulk imports Manual downloads and imports “On Order” location for items on order “Not Yet Available” location for items in
process Manual edits for all records Manual creation of all item records
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 3
Before...Location Status What does this mean?
On Order An order for the item has been placed through Gobi. We do not know when the book will arrive. Some orders are never filled. Patrons can not place holds on these items.
Not Yet Available
Not checked out
EMU has received the book and it is being processed. Processing time can vary from 2 to 8 weeks. Patrons can place a hold by contacting the Circulation desk during normal library hours
Any Location Not checked out
Item is on the shelf and available for checkout. [... Or maybe it was recently returned and is on a shelving cart. Or maybe we just finished processing it and its still in Technical Services waiting to come up to Circulation....] If you can’t find it contact the Circulation desk who will search for it for you.
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 4
Before...Ordering
Selectors order from GobiAcq Librarian
Reviews and Export
Acq LibrarianFTPs from Gobi
Acq Librarian Imports to Voyager
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 5
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 6
Before...Cataloging
Items Received in Acquisitions
Sent to Cataloging
Locate, Create and Edit All Bib Records
Create an Item RecordWith Not Yet Available
Location
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 7
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 8
Before...Processing
Sent to Acquisitions Labeling
Change Location toFinal Destination
Sent to Circulation. Discharged and Shelved
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 9
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 10
Before...
No way to place a request or hold through the OPAC
No idea when an item might be available Too many errors in changing location to final
destination Displayed information not always accurate at
that moment
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 11
Goals - Staff
Automate downloading and importing records Automate repetitive cataloging tasks Don’t add any new manual workflows Eliminate problematic workflows
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 12
Goals – Public
Clarify where an item is and when it is expected to be available
Make it easy to request an On Order item Make it easy to notify patrons when an item is
available
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 13
Tools
shell and perl scripts OCLC PromptCat Voyager Bulkimport “On Order” patrons and patron groups Voyager Hold functionality Gary Strawn’s LocationChanger program
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 14
Now...Ordering
Selectors order from GobiAcq Librarian
Reviews and Export
Acq LibrarianFTPs from Gobi
Acq Librarian Imports to Voyager
gobi.sh runs M-F, 6am-4pm
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 15
Now...gobi.sh
Downloads any new files from the Gobi site Sorts the records by 245|a Splits records into individual files Imports each record individually Results in a single PO, Bib record and On
Order MFHD
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 16
#!/bin/ksh
LOG=/export/home/voyager/scripts/logs/gobi.logCFG=/export/home/voyager/scripts/edi.cfgEDI=/m1/voyager/emichdb/ediMRC=$EDI/mrcMRC_P=$EDI/mrc_pDATE=`/bin/date "+%b %e"`SPLITMARC=/export/home/voyager/scripts/splitmarc.plSORTMARC=/export/home/voyager/scripts/sortmarc.pl
GOBI=`ps -ef |grep -c gobi.sh`ps -ef |grep gobi.sh >> $LOGecho $GOBI >> $LOGif [ "$GOBI" -gt 3 ]; then
/bin/date >> $LOGecho "gobi.sh already running, exiting..." >> $LOGexit
fi
Define locations and programs needed
If its already running, exit
gobi.sh part 1
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 17
/usr/local/bin/ncftpget -f $CFG $MRC 8058*.mrc
/usr/bin/ls $MRC/*.mrc > $MRC/tmp/usr/bin/sed 's/^.*\/8058/8058/' $MRC/tmp > $MRC/clean/usr/bin/ls $MRC_P/*.mrc > $MRC_P/tmp/usr/bin/sed 's/^.*\/8058/8058/' $MRC_P/tmp > $MRC_P/clean/usr/bin/diff $MRC/clean $MRC_P/clean > $EDI/mrc.todo.tmp/usr/bin/sed 's/^.* 8058/8058/' $EDI/mrc.todo.tmp >
$EDI/mrc.todo.clean/usr/bin/sed -n '/^8058/p' $EDI/mrc.todo.clean > $EDI/mrc.todo
/usr/bin/rm $MRC/tmp/usr/bin/rm $MRC/clean/usr/bin/rm $MRC_P/tmp/usr/bin/rm $MRC_P/clean/usr/bin/rm $EDI/mrc.todo.tmp/usr/bin/rm $EDI/mrc.todo.clean
Download from Gobi
Clean up from the previous step
Determine which files need processing
gobi.sh part 2
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 18
/usr/bin/cat $EDI/mrc.todo |while read linedo
/usr/bin/cp $MRC/$line $MRC_Pdone
/usr/bin/cat $EDI/mrc.todo |while read linedo
$SORTMARC $MRC/$line $MRC/$line.sortedMRC_COUNT=`$SPLITMARC $MRC/$line.sorted $MRC/$line.sorted`i=1while [ "$i" -le $MRC_COUNT ]do
/m1/voyager/emichdb/sbin/Pbulkimport -f$MRC/$line.sorted-$i -iYBPsel
sleep 60/usr/bin/rm $MRC/$line.sorted-$ii=`expr $i + 1`
done/usr/bin/rm $MRC/$line.sorted
done
Mark files as processed
Bulk import the records
Sort and Split the Files
gobi.sh part 3
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 19
#!/usr/local/bin/perl -wuse strict;use MARC;my $x = new MARC;my %inc = %{$x->usmarc_default()};my ($infile,$outfile) = @ARGV;$x->openmarc({
file=>$infile, format=>'usmarc', charset=>\%inc, lineterm=>"\n"
});
my %titles;while ($x->nextmarc(1)) {
my @field_987 = $x->getvalue({record=>1,field=>'987',subfield=>'a'});my @field_245 = $x->getvalue({record=>1,field=>'245',subfield=>'a'});
$titles{$field_987[0]}=$field_245[0];$x->output({
file=>">$field_987[0]",format=>'usmarc'
});$x->deletemarc();
Output each record to its own file
Open the MARC file
sortmarc.pl part 1
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 20
foreach my $value (sort{uc($titles{$a}) cmp uc($titles{$b})} keys %titles) {$x->openmarc({
file=>$value,format=>'usmarc', charset=>\%inc, lineterm=>"\n"
});
$x->nextmarc(1);$x->output({
file=>">>$outfile",format=>'usmarc'
});$x->deletemarc();unlink $value;
}
Output each record to the new sorted file
Sort the titles
sortmarc.pl part 2
Open each individual file
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 21
#!/usr/local/bin/perl -wuse strict;use MARC;my $x = new MARC;my %inc = %{$x->usmarc_default()};my ($infile,$outfile) = @ARGV;$x->openmarc({
file=>$infile, format=>'usmarc', charset=>\%inc, lineterm=>"\n"
});my $count=0;while ($x->nextmarc(1)) {
$count=$count+1;$x->output({
file=>">>$outfile-$count",format=>'usmarc'
});$x->deletemarc();
}print $count;
Output each record to its own file
Open the MARC file
splitmarc.pl
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 22
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 23
Now...Cataloging and Processing
Contracted to OCLC PromptCat Locate best available bib record Barcode all items Label items that have good bib record Both Firm and Approval orders are processed
this way
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 24
Now...PromptCat
Items Received At PromptCat
Locate MOST Bib Records
Labeling andBarcoding
Items Shipped To EMU
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 25
Now...Cataloging
Items Received in Acquisitions
Sent to Cataloging
Locate, Create and Edit All Bib Records
Create an Item RecordWith Not Yet Available
Location
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 26
Now...Processing
Sent to Acquisitions Labeling
Change Location toFinal Destination
Sent to Circulation. Discharged and Shelved
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 27
Now...Automated imports
Receive weekly files Preprocess records to eliminate repetitive
tasks Bulkimport records Firm orders overlay our Gobi records – this
results in a double MFHD Approvals create new records – bibs,
MHFDs, items and POs New reports for reviewing and processing
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 28
Now...Automated imports
Download files Preprocess records
Bulkimport in to Voyager
Review and act ongenerated reports
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 29
Now...download.sh
download.sh Runs M-F at 4am Downloads any files from this month or last
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 30
#!/bin/ksh# Setting all the variables VOYDIR=/m1/voyager/emichdbLOG=/export/home/voyager/scripts/logs/promptcat.log
/bin/date >> $LOGecho "running promptcatd-download.sh... " >> $LOGPROMPTCAT=$VOYDIR/PromptCat
# File where the ftp commands used as input for "expect" are putftpfile=ftp.exp/usr/local/bin/expect $PROMPTCAT/$ftpfile &pid=$!/bin/wait $pid
ftp the files using expect
download.sh
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 31
#!/usr/local/bin/expect ~~
spawn $env(SHELL)
send "ftp edx.oclc.org\n"sleep 10 ;send "teye1\n"sleep 10 ;send "password\n"expect "ftp>" {send "lcd /m1/voyager/emichdb/PromptCat/mrc\n"}expect "ftp>" {send "passive\n"}expect "ftp>" {send "bin\n"}expect "ftp>" {send "prompt\n"}expect "ftp>" {send "cd 'edx.pcat.eye.'\n"}expect "ftp>" {send "mget RCD.YDX.EYE.D0806*.FIRM\n"}expect "ftp>" {send "mget RCD.YDX.EYE.D0805*.FIRM\n"}expect "ftp>" {send "mget RCD.YDX.EYEAP.D0806*.APPR\n"}expect "ftp>" {send "mget RCD.YDX.EYEAP.D0805*.APPR\n"}expect "ftp>" {send "bye\n"}
Login to the PromptCat server
ftp.exp
Download the files
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 32
Now...npasswd.sh
npasswd.sh Password stops working after 90 days Establishes a new password for PromptCat FTP
site Creates a new expect file for download.sh Runs on the 1st of the month Can’t repeat passwords
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 33
#!/bin/kshVOYDIR=/m1/voyager/emichdbPROMPTCAT=$VOYDIR/PromptCatLOG=/export/home/voyager/scripts/logs/promptcat.logUSED=$PROMPTCAT/used.txtMONTH=`date +%m`LASTMONTH=`expr $MONTH - 1`YEAR=`date +%y`LASTYEAR=$YEARif test "$LASTMONTH" -eq 0then
LASTYEAR=`expr $YEAR - 1`if test "$LASTYEAR" -lt 10then
LASTYEAR=\0$LASTYEARfiLASTMONTH=12
elif test "$LASTMONTH" -lt 10then
LASTMONTH=\0$LASTMONTHfi/usr/bin/cat $USED |while read linedo
OLDPWD=`echo $line`done
Figure out current and last month so we know which files to download
npasswd.sh part 1
Get the current password
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 34
NEWOK=0NEWPWD=0while [ $NEWOK -eq 0 ]do
NEWPWD=`/usr/local/bin/mkpasswd -l 8 -C 1 -d 1`NEWOK=1/usr/bin/cat $USED |while read linedo
if test $line = $NEWPWD then
NEWOK=0fi
donedoneecho $NEWPWD >> $USED
Create a new password
npasswd.sh part 2
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 35
PWDEXP=$PROMPTCAT/pwd.exp/usr/bin/cp $PWDEXP $PWDEXP.old
echo "#!/usr/local/bin/expect ~~" > $PWDEXPecho "" >> $PWDEXPecho "spawn \$env(SHELL)" >> $PWDEXPecho "" >> $PWDEXPecho "send \"ftp edx.oclc.org\\\n\"" >> $PWDEXPecho "sleep 10 ;" >> $PWDEXPecho "send \"teye1\\\n\"" >> $PWDEXPecho "sleep 10 ;" >> $PWDEXPecho "send \"$OLDPWD/$NEWPWD/$NEWPWD\\\n\"" >> $PWDEXPecho "expect \"ftp>\" {send \"bye\\\n\"}" >> $PWDEXP
/usr/local/bin/expect $PWDEXP &
Create an expect file for changing the password
npasswd.sh part 3
Change the password on the server
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 36
FTPEXP=$PROMPTCAT/ftp.exp/usr/bin/cp $FTPEXP $FTPEXP.old
echo "#!/usr/local/bin/expect ~~" > $FTPEXPecho "" >> $FTPEXPecho "spawn \$env(SHELL)" >> $FTPEXPecho "" >> $FTPEXPecho "send \"ftp edx.oclc.org\\\n\"" >> $FTPEXPecho "sleep 10 ;" >> $FTPEXPecho "send \"teye1\\\n\"" >> $FTPEXPecho "sleep 10 ;" >> $FTPEXPecho "send \"$NEWPWD\\\n\"" >> $FTPEXPecho "expect \"ftp>\" {send \"lcd /m1/voyager/emichdb/PromptCat/mrc\\\n\"}" >>
$FTPEXPecho "expect \"ftp>\" {send \"passive\\\n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"bin\\\n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"prompt\\\n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"cd 'edx.pcat.eye.'\\\n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"mget RCD.YDX.EYE.D$YEAR$MONTH*.FIRM\\\n\"}" >>
$FTPEXPecho "expect \"ftp>\" {send \"mget RCD.YDX.EYE.D$LASTYEAR$LASTMONTH*.FIRM\\\
n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"mget RCD.YDX.EYEAP.D$YEAR$MONTH*.APPR\\\n\"}" >>
$FTPEXPecho "expect \"ftp>\" {send \"mget RCD.YDX.EYEAP.D$LASTYEAR$LASTMONTH*.APPR\\\
n\"}" >> $FTPEXPecho "expect \"ftp>\" {send \"bye\\\n\"}" >> $FTPEXP
Create the expect file for downloading records
npasswd.sh part 4
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 37
Now...loadrecs.sh
Determines which files need to be pre-processed and imported
Runs the pre-process script, 650.pl Bulk imports the processed records Emails the Import log to the Cat staff Emails any discarded records Finds and emails the “On Order” MFHD IDs
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 38
#!/bin/kshMAILX=/usr/bin/mailxMAIL856="[email protected] [email protected]"MAILBARCODE="[email protected] [email protected]"MAILLOG="[email protected] [email protected] [email protected]"MAILDISCARD="[email protected] [email protected] [email protected]"MAILMFHD="[email protected] [email protected]"VOYDIR=/m1/voyager/emichdbPROMPTCAT=$VOYDIR/PromptCatMRC=$PROMPTCAT/mrcMRC_P=$PROMPTCAT/mrc_pOUTDIR=$PROMPTCAT/outMRC_FILES=RCD.YDX.*D*.$1SCRIPTS=/export/home/voyager/scripts/promptcatPREPROCESS=$SCRIPTS/650.plGETMFHDS=$SCRIPTS/mfhds.plDISCARDPL=$SCRIPTS/discard.plDISCARDWEBDIR=$VOYDIR/webvoyage/html/discardsCHARGE_BARCODE=299000028748if test "$1" == "FIRM"thenCHARGE_BARCODE=299000028746fiLOG=/export/home/voyager/scripts/logs/promptcat.log/bin/date >> $LOGecho "running promptcat.sh... " >> $LOG
Define all the people who get reports, directories and scripts that will be used throughout
loadrecs.sh part 1
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 39
/usr/bin/ls $MRC/$MRC_FILES > $MRC/tmp/usr/bin/sed 's/^.*RCD/RCD/' $MRC/tmp > $MRC/clean/usr/bin/ls $MRC_P/$MRC_FILES > $MRC_P/tmp/usr/bin/sed 's/^.*RCD/RCD/' $MRC_P/tmp > $MRC_P/clean/usr/bin/diff $MRC/clean $MRC_P/clean > $PROMPTCAT/mrc.todo.tmp/usr/bin/sed 's/^.*RCD/RCD/' $PROMPTCAT/mrc.todo.tmp >
$PROMPTCAT/mrc.todo.clean/usr/bin/sed -n '/^RCD/p' $PROMPTCAT/mrc.todo.clean >
$PROMPTCAT/mrc.todo
/usr/bin/rm $MRC/tmp/usr/bin/rm $MRC/clean/usr/bin/rm $MRC_P/tmp/usr/bin/rm $MRC_P/clean/usr/bin/rm $PROMPTCAT/mrc.todo.tmp/usr/bin/rm $PROMPTCAT/mrc.todo.clean
LOGDIR=$VOYDIR/rptLOGTOSEND=$LOGDIR/logimp.tosend/usr/bin/rm $LOGTOSEND
Compare the files in the downloaded and processed directories to determine what needs processing
loadrecs.sh part 2
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 40
/usr/bin/cat $PROMPTCAT/mrc.todo |while read linedo
OUT856FILE=out856.$line.txtBARCODEFILE=barcodes.$line.cap.s$PREPROCESS $MRC/$line $OUTDIR/$line $OUTDIR/$OUT856FILE $OUTDIR/$BARCODEFILE $CHARGE_BARCODEfor USER in `/bin/echo $MAIL856`; do
$MAILX -s "$OUT856FILE" $USER < $OUTDIR/$OUT856FILEdonefor USER in `/bin/echo $MAILBARCODE`; do
$MAILX -s "$BARCODEFILE" $USER < $OUTDIR/$BARCODEFILEdoneDATE=`/bin/date "+%Y%m%d.%H%M"`/m1/voyager/emichdb/sbin/PromptcatBulkImport -f$OUTDIR/$line -i$2 &waitecho "Pbulkimport -f$OUTDIR/$line..." >> $LOGecho $DATE >> $LOGTOSEND/usr/bin/cp $OUTDIR/$line $MRC_P
done
/usr/bin/rm $PROMPTCAT/mrc.todo
Preprocess the files
loadrecs.sh part 3
Mail 856 and Barcode reports
Bulk import the records and move file to processed directory
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 41
/usr/bin/cat $LOGTOSEND |while read linedo
LOGIMP=log.imp.$linefor USER in `/bin/echo $MAILLOG`; do
$MAILX -s "$LOGIMP" $USER < "$LOGDIR/$LOGIMP"doneDISCARD=discard.imp.$lineDISCARDTXT=$DISCARD.txt$DISCARDPL $LOGDIR/$DISCARD $LOGDIR/$DISCARDTXTprint "http://portal.emich.edu/discards/$DISCARD" >> $LOGDIR/$DISCARDTXT/usr/bin/cp $LOGDIR/$DISCARD $DISCARDWEBDIRfor USER in `/bin/echo $MAILDISCARD`; do
$MAILX -s "$DISCARD" $USER < "$LOGDIR/$DISCARDTXT"doneif test "$1" == "FIRM"then
/usr/bin/sed -n '/[0-9]\{6,7\} - 100/p' $LOGDIR/$LOGIMP > $LOGDIR/$LOGIMP.new
/usr/bin/sed 's/ - 100//g' $LOGDIR/$LOGIMP.new > $LOGDIR/$LOGIMP.final$GETMFHDS $LOGDIR/$LOGIMP.finalfor USER in `/bin/echo $MAILMFHD`; do
$MAILX -s "$LOGIMP.final.mfhds" $USER < "$LOGDIR/$LOGIMP.final.mfhds"
donefi
done
Mail bulkimport log
loadrecs.sh part 4
Mail discarded records
Find double MFHDs and mail the report
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 42
Now... 650.pl
Delete any subjects with 2nd indicator 2,6 or 7 Delete any 856 with 2nd indicator 2 If there is a 505 and an 856 TOC link, delete
the 856 Output all other 856s to a report Deletes any 938s Gets incoming barcodes from the 987 and
creates an offline charge file
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 43
#!/usr/local/bin/perl -w
use MARC::Batch;
my ($infile,$out_usmarc,$out_856,$out_barcode,$barcode) = @ARGV;
my $batch = MARC::Batch->new('USMARC', "$infile");
open(OUT, ">$out_usmarc");
open(OUT_856, ">$out_856");
open(OUT_BCODES, ">$out_barcode");
print OUT_BCODES "CAPTURE\n";
print OUT_BCODES "PATRON ".$barcode."\n";
print OUT_BCODES "DUE_DATE 2382-12-31 23:59:00\n";
print OUT_BCODES "BEGIN_CHARGE\n";
while (my $record = $batch->next()) {
my @fields = $record->field('6..');
foreach my $field (@fields) {
if ( $field ) {
if ( $field->indicator(2) eq '2'
|| $field->indicator(2) eq '6'
|| $field->indicator(2) eq '7' )
{ $record->delete_field($field); }
}
}
Open files for processed records, 856 report, offline charge file
650.pl part 1
Create the first part of the offline charge file
Remove non-LCSH subjects
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 44
my $field_505 = $record->field('505');
my $oclcnum = $record->field('035');
my @fields_856 = $record->field('856');
foreach my $field_856 (@fields_856) {
if ( $field_856->indicator(2) eq '2' ) {
$record->delete_field($field_856);
}
elsif ( $field_856->indicator(2) eq '1') {
if ( $field_505 && index($field_856->as_string(),"Table of contents") ge 0 ) {
$record->delete_field($field_856);
}
else {
print OUT_856 $oclcnum->as_string(), "\n";
print OUT_856 $field_856->as_string(), "\n";
}
}
}
my @fields_938 = $record->field('938');
foreach my $field_938 (@fields_938) {
$record->delete_field($field_938);
}
Create the 856 reports for TOC links
650.pl part 2
Remove 938 field
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 45
my $barcode = $record->subfield('987', "a");
if ( $barcode )
{
print OUT_BCODES "ITEM ".$barcode."\n";
}
print OUT $record->as_usmarc();
}
print OUT_BCODES "END_CHARGE\n";
close(OUT);
close(OUT_856);
close(OUT_BCODES);
Add the barcode to the offline charge file
650.pl part 3
Output the processed record
Finish the offline charge file
Close all the output files
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 46
#!/usr/local/bin/perl -w
use MARC::Batch;
my ($infile,$outfile) = @ARGV;
my $batch = MARC::Batch->new('USMARC', "$infile");
open(OUT, ">$outfile");
while (my $record = $batch->next()) {
my $oclcnum = $record->field('035');
my $title = $record->field('245');
print OUT $oclcnum->as_string(), "\n", $title->as_string(), "\n\n";
}
close(OUT);
Open the discard file
Put OCLC No. and Title into the discard report
discard.pl
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 47
my $count=0;
open(OUTFILE, ">$outfile");
my $dbh = DBI->connect('dbi:Oracle:', $username, $password)
|| die "Could not connect: $DBI::errstr";
while ( $count < $i )
{
my $select = "select $db_name.bib_mfhd.mfhd_id
from $db_name.bib_mfhd, $db_name.mfhd_master
where $db_name.bib_mfhd.mfhd_id=$db_name.mfhd_master.mfhd_id
and $db_name.bib_mfhd.bib_id=$bibids[$count++]
and $db_name.mfhd_master.location_id=65";
my $sth = $dbh->prepare($select)
|| die $dbh->errstr;
$sth->execute
|| die $dbh->errstr;
while( my (@entry) = $sth->fetchrow_array() ) {
print OUTFILE "$entry[0]\n";
}
}
close(OUTFILE);
exit(0);
Get the On Order MFHD for the incoming records
mfhds.pl part 1
Output the MFHD_ID
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 48
#!/m1/shared/bin/perl
use DBI;
$ENV{ORACLE_SID} = "VGER";
$ENV{ORACLE_HOME} = "/oracle/app/oracle/product/10.2.0/db_1";
my $db_name = “xxxdb";
my $username = "ro_xxxdb";
my $password = "ro_xxxdb";
my ($infile) = @ARGV;
my ($outfile) = $infile.".mfhds";
my @bibids;
my $i=0;
open(INFILE, $infile);
while( <INFILE> )
{
$bibids[$i] = $_;
$bibids[$i++] =~ s/^\s+//;
}
close(INFILE);
Information on connecting to Oracle
mfhds.pl part 2
Put the incoming bibids in an array
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 49
Now...New Cataloging Workflows
Review the 856 TOC links and add when necessary
Review any discarded records and re-import Run the offline charge files through the Circ
client Run the “On Order” MFHD ids through
LocationChanger to suppress the records
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 50
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 51
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 52
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 53
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 54
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 55
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 56
Now...Cataloging/Processing at EMU
Items received in Acquisitions Those items needing additional cataloging
and/or processing are charged to the Available Soon patron
All others immediately sent to Circulation for discharging, fulfilling holds or shelving
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 57
Now...Cataloging/Processing at EMU
Items Received in Acquisitions
Sent to Cataloging
Locate, Create and Edit All Bib Records
Create an Item RecordWith Not Yet Available
Location
Only items needing additional cataloging or processing are charged
to the Not Yet Available patron
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 58
Now...Cataloging/Processing at EMU
Sent to Acquisitions Labeling
Change Location toFinal Destination
Sent to Circulation. Discharged and Shelved
Fewer items go through the manual cataloging/processing steps at EMU
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 59
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 60
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 61
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 62
Before...Location Status What does this mean?
On Order An order for the item has been placed through Gobi. We do not know when the book will arrive. Some orders are never filled. Patrons can not place holds on these items.
Not Yet Available
Not checked out
EMU has received the book and it is being processed. Processing time can vary from 2 to 8 weeks. Patrons can place a hold by contacting the Circulation desk during normal library hours
Any Location Not checked out
Item is on the shelf and available for checkout. [... Or maybe it was recently returned and is on a shelving cart. Or maybe we just finished processing it and its still in Technical Services waiting to come up to Circulation....] If you can’t find it contact the Circulation desk who will search for it for you.
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 63
Now...Location Status What does this mean?
On Order An order for the item has been placed through Gobi. We do not know when the book will arrive. Some orders are never filled. Patrons can not place holds on these items.
3rd Level On Order: Available Soon
PromptCat has processed the book and it is being shipped. It is expected in 2-3 weeks. Patrons can place a hold on the item through the OPAC and will be notified when the item is available.
Any Location Available Soon The book is in the building and being processed. Processing time can vary from 1-4 weeks. Patrons can place a hold on the item through the OPAC and will be notified when the item is available.
Any Location Not checked out – Returned mm/dd/yyyy
Item has been returned within the last 24 hours and is likely on a cart for reshelving
Any Location Not checked out
Item is on the shelf and available for checkout.
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 64
On Order Books List
From Order to Checkout: Improving Workflows through Acq, Cat and Circ 65
Questions? Comments?
Jackie Wrosch
Eastern Michigan University