diff --git a/import-marc-solr4.sh b/import-marc-solr4.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9ab01f656786681a8f628e2908c6c103f89d89f5
--- /dev/null
+++ b/import-marc-solr4.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# $Id: index_file.sh 17 2008-06-20 14:40:13Z wayne.graham $
+#
+# Bash script to start the import of a binary marc file for Solr indexing.
+
+if [ "$1" = "" ]
+then
+    echo "Aufruf mit import-marc-solr4.sh <mrc-Datei> [optional: <solrcore> <alternative import.propertie-datei>]"
+    echo "Breche ab."
+    exit 1
+fi
+
+VUFIND_HOME_SOLR4="/usr/local/vufind2"
+INDEX_OPTIONS='-d64 -Xms4096m -Xmx4096m -XX:+UseParallelGC -XX:+AggressiveOpts'
+JAVA="java"
+JAR_FILE="$VUFIND_HOME_SOLR4/import/SolrMarc.jar"
+
+SOLR4_HOME="$VUFIND_HOME_SOLR4/solr"
+SOLR4MARC_HOME="$VUFIND_HOME_SOLR4/import"
+SOLR4_JAR_DEF="-Dsolrmarc.solr.war.path=$VUFIND_HOME_SOLR4/solr/jetty/webapps/solr.war"
+
+export $VUFIND_HOME_SOLR4
+
+if [ "$2" = "" ]
+then
+    SOLR4CORE="biblio"
+else
+    SOLR4CORE=$2
+fi
+
+if [ "$3" = "" ]
+then
+    PROPERTIES_FILE="$VUFIND_HOME_SOLR4/import/import.properties"
+else
+    PROPERTIES_FILE=$3
+fi
+
+ulimit -n 65535 
+
+pushd $SOLR4_HOME
+RUN_CMD="$JAVA $INDEX_OPTIONS $SOLR4_JAR_DEF -Dsolr.core.name=$SOLR4CORE -Dsolrmarc.path=$SOLR4MARC_HOME -Dsolr.path=$SOLR4_HOME -Dsolr.solr.home=$SOLR4_HOME $EXTRA_SOLRMARC_SETTINGS -jar $JAR_FILE $PROPERTIES_FILE $1"
+
+echo "Now Importing $1 ..."
+$RUN_CMD
+popd
+
+exit 0
diff --git a/import/index_scripts/accessInf.bsh b/import/index_scripts/accessInf.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..0eb06fa8f83fa58b727415282a3c985f5aecd4fd
--- /dev/null
+++ b/import/index_scripts/accessInf.bsh
@@ -0,0 +1,630 @@
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @author   Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+static final Logger logger = Logger.getLogger("de.ubl.import.accessInf");
+static final HashMap quocosaMap = new HashMap(){{
+    put( "article"          , "ElectronicArticle" );
+    put( "bachelorthesis"   , "ElectronicThesis" );
+    put( "book"             , "eBook" );
+    put( "bookpart"         , "ElectronicArticle" );
+    put( "conferenceobject" , "ElectronicArticle" );
+    put( "doctoralthesis"   , "ElectronicThesis" );
+    put( "lecture"          , "ElectronicArticle" );
+    put( "masterthesis"     , "ElectronicThesis" );
+    put( "musicalnotation"  , "ElectronicMusicalScore" );
+    put( "other"            , "ElectronicResourceRemoteAccess" );
+    put( "periodical"       , "ElectronicJournal" );
+    put( "periodicalpart"   , "ElectronicArticle" );
+    put( "preprint"         , "ElectronicArticle" );
+    put( "report"           , "eBook" );
+    put( "studythesis"      , "ElectronicThesis" );
+    put( "workingpaper"     , "ElectronicArticle" );
+}};
+// Ticket #2061
+// List of source id's
+static final HashSet erSet = new HashSet() {{
+    add("16");
+    add("17");
+    add("18");
+    add("19");
+}};
+
+public Set getAccessInfOld( Record record ) {
+
+	Set result = new LinkedHashSet();
+
+	String source_id = indexer.getFirstFieldVal(record, "980b");
+
+	// check the 007 - this is a repeating field
+	List fields = record.getVariableFields("007");
+	Iterator fieldsIter = fields.iterator();
+	if (fields != null) {
+		ControlField formatField;
+		while(fieldsIter.hasNext()) {
+			formatField = (ControlField) fieldsIter.next();
+			formatCode = formatField.getData().toUpperCase().charAt(0);
+			switch (formatCode) {
+				case 'A':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'D':
+							result.add("Atlas");
+							break;
+						default:
+							result.add("Map");
+							break;
+					}
+					break;
+				case 'C':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'A':
+							result.add("TapeCartridge");
+							break;
+						case 'B':
+							result.add("ChipCartridge");
+							break;
+						case 'C':
+							result.add("DiscCartridge");
+							break;
+						case 'F':
+							result.add("TapeCassette");
+							break;
+						case 'H':
+							result.add("TapeReel");
+							break;
+						case 'J':
+							result.add("FloppyDisk");
+							break;
+						case 'M':
+						case 'O':
+							result.add("CDROM");
+							break;
+						case 'R':
+							// Do not return - this will cause anything with an
+							// 856 field to be labeled as "Electronic"
+							break;
+						default:
+							result.add("Software");
+							break;
+					}
+					break;
+				case 'D':
+					result.add("Globe");
+					break;
+				case 'F':
+					result.add("Braille");
+					break;
+				case 'G':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'C':
+						case 'D':
+							result.add("Filmstrip");
+							break;
+						case 'T':
+							result.add("Transparency");
+							break;
+						default:
+							result.add("Slide");
+							break;
+					}
+					break;
+				case 'H':
+					result.add("Microfilm");
+					break;
+				case 'K':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'C':
+							result.add("Collage");
+							break;
+						case 'D':
+							result.add("Drawing");
+							break;
+						case 'E':
+							result.add("Painting");
+							break;
+						case 'F':
+							result.add("Print");
+							break;
+						case 'G':
+							result.add("Photonegative");
+							break;
+						case 'J':
+							result.add("Print");
+							break;
+						case 'L':
+							result.add("Drawing");
+							break;
+						case 'O':
+							result.add("FlashCard");
+							break;
+						case 'N':
+							result.add("Chart");
+							break;
+						default:
+							result.add("Photo");
+							break;
+					}
+					break;
+				case 'M':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'F':
+							result.add("VideoCassette");
+							break;
+						case 'R':
+							result.add("Filmstrip");
+							break;
+						default:
+							result.add("MotionPicture");
+							break;
+					}
+					break;
+				case 'O':
+					result.add("Kit");
+					break;
+				case 'Q':
+					result.add("MusicalScore");
+					break;
+				case 'R':
+					result.add("SensorImage");
+					break;
+				case 'S':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'D':
+							result.add("SoundDisc");
+							break;
+						case 'S':
+							result.add("SoundCassette");
+							break;
+						default:
+							result.add("SoundRecording");
+							break;
+					}
+					break;
+				case 'V':
+					switch(formatField.getData().toUpperCase().charAt(1)) {
+						case 'C':
+							result.add("VideoCartridge");
+							break;
+						case 'D':
+							result.add("VideoDisc");
+							break;
+						case 'F':
+							result.add("VideoCassette");
+							break;
+						case 'R':
+							result.add("VideoReel");
+							break;
+						default:
+							result.add("Video");
+							break;
+					}
+					break;
+			}
+		}
+	}
+    if (!result.isEmpty()) return result;
+
+	// check the Leader at position 6
+	String leader = record.getLeader().toString();
+    char leaderBit = leader.charAt(6);
+	switch (Character.toUpperCase(leaderBit)) {
+		case 'C':
+		case 'D':
+			result.add("MusicalScore");
+			break;
+		case 'E':
+		case 'F':
+			result.add("Map");
+			break;
+		case 'G':
+			result.add("Slide");
+			break;
+		case 'I':
+			result.add("SoundRecording");
+			break;
+		case 'J':
+			result.add("MusicRecording");
+			break;
+		case 'K':
+			result.add("Photo");
+			break;
+		case 'M':
+			result.add("Electronic");
+			break;
+		case 'O':
+		case 'P':
+			result.add("Kit");
+			break;
+		case 'R':
+			result.add("PhysicalObject");
+			break;
+		case 'T':
+			result.add("Manuscript");
+			break;
+	}
+    if (!result.isEmpty()) return result;
+
+    ControlField fixedField = (ControlField) record.getVariableField("008");
+	// check the Leader at position 7
+	leaderBit = leader.charAt(7);
+	switch (Character.toUpperCase(leaderBit)) {
+		// Monograph
+		case 'M':
+			if (formatCode == 'C') {
+				result.add("eBook");
+			} else {
+				result.add("Book");
+			}
+			break;
+			// Serial
+		case 'S':
+			// Look in 008 to determine what type of Continuing Resource
+			formatCode = fixedField.getData().toUpperCase().charAt(21);
+			switch (formatCode) {
+				case 'N':
+					result.add("Newspaper");
+                    break;
+                case 'P':
+                    result.add("Journal");
+                    break;
+                default:
+                    result.add("Serial");
+                    break;
+            }
+    }
+
+	// Nothing worked!
+	if ( result.isEmpty() ) {
+        result.add("Unknown");
+    }
+
+    return result;
+}
+
+public Set getAccessInf( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+	Set result = new LinkedHashSet();
+
+	String source_id = indexer.getFirstFieldVal(record, "980b");
+
+    // Ticket #2061
+    if( erSet.contains( source_id ) ) {
+		result.add( "Electronic" );
+		return result;
+    }
+
+    // Source Id '008' wird wie Source Id '000' behandelt
+
+    if (source_id.equals("3")) { // um NEP Facette erweitern
+		result.add("NewPublications");
+		logger.info( "access: 3 New Pub..");
+		return result;
+	} else if(source_id.equals("4")) { // um PDA erweitern
+		result.add("Electronic");
+		logger.info( "access: 4 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("6")) { // Alle Datensätze mit 006 in Feld 980 b werden als ElectronicResources gekennzeichnet. #652
+		result.add("Electronic");
+		logger.info( "access: 6 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("7")) { // HMT # PAO # Anpassung von format.bsh und accessInf.bsh für die Indexierung #655
+		result.add("Electronic");
+		logger.info( "access: 7 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("8")) { // HMT # LFER # Anpassung von format.bsh und accessInf.bsh für die Indexierung #658
+		result.add("Electronic");
+		logger.info( "access: 8 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("9")) { // HMT # Early Music Online # Anpassung von format.bsh und accessInf.bsh für die Indexierung #664
+		result.add("Electronic");
+		logger.info( "access: 9 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("10")) { // MTC # Early Music Online # Anpassung von format.bsh und accessInf.bsh für die Indexierung #664
+		result.add("Electronic");
+		logger.info( "access: 10 Elec.. Res.." );
+		return result;
+	} else if(source_id.equals("15")) { // IMSLP # 015
+		result.add("Electronic");
+		logger.info( "access: 15 Elec.. Res..");
+		return result;
+	} else if(source_id.equals("20")) { // GALLICA Ticket #1258 und NEU #1574
+		result.add("ElectronicMusicalScore");
+		logger.info( "access: 20 Elec.. Res.. GALLICA");
+		return result;
+	}
+
+
+	String leader = record.getLeader().toString();
+	char leaderBit;
+	ControlField fixedField = (ControlField) record.getVariableField("008");
+	char formatCode = ' ';
+
+	String val;
+	Subfield s;
+
+	fs = record.getVariableFields("935");
+	if (fs != null) {
+		fsI = fs.iterator();
+		DataField hsf;
+		while (fsI.hasNext()) {
+
+			hsf = (DataField) fsI.next();
+
+            Subfield bSubfield = hsf.getSubfield('b');
+
+			List ss = hsf.getSubfields('c');
+			if (ss != null) {
+				Iterator ssI = ss.iterator();
+				while (ssI.hasNext()) {
+					s = (Subfield) ssI.next();
+					val = s.getData();
+					if(val.contains("hs")) {
+                        // Ticket #1055
+                        if( bSubfield != null && bSubfield.getData().contains("cofz")) {
+                            result.add("Electronic");
+                        }
+                    }
+				}
+			}
+		}
+	}
+
+    // Ticket #1555 Qucosa
+    if( source_id.equals( "22" ) ) {
+
+        List fields = record.getVariableFields( "500" );
+        if (fields != null) {
+            Iterator fieldsIter = fields.iterator();
+            while( fieldsIter.hasNext() ) {
+                DataField dataField = (DataField) fieldsIter.next();
+                List subfields = dataField.getSubfields( 'a' );
+                Iterator subfieldsIter = subfields.iterator();
+                if( subfields != null ) {
+                    if( subfieldsIter.hasNext() ) {
+                        String data = subfieldsIter.next().getData().toLowerCase();
+                        String value = quocosaMap.get( data );
+                        if( value != null ) {
+                            String record_id = indexer.getFirstFieldVal( record, "980a" );
+                            result.add( value );
+                            logger.info( "FOUND QUCOSA record_id => " + record_id + ", VALUE => " + value );
+                            return result;
+					}
+                    }
+                }
+            }
+        }
+    }
+
+    // Ticket #1496 #7
+    if( source_id.equals( "9" ) || source_id.equals( "10" )
+        || source_id.equals( "14" ) || source_id.equals( "15" ) ) {
+        result.add( "ElectronicMusicalScore" );
+        return result;
+    }
+
+    if(source_id.equals("12")) { // Ticket #595
+		result.add("Electronic");
+        logger.info( "format: 12 Elec.. Res.." );
+		return result;
+	}
+
+    if(source_id.equals("13")) { // Ticket #597
+		result.add("Electronic");
+        logger.info( "format: 13 Elec.. Res.." );
+		return result;
+	}
+
+    String leader = record.getLeader().toString();
+
+    if( source_id.equals( "0" ) || source_id.equals( "8" ) ) {
+
+        // check the Leader at position 7
+        // Distinguish serials, articles, monographs
+        leaderBit = leader.charAt(7);
+
+        DataField field935 = (DataField) record.getVariableField("935");
+
+        Set f935b = new LinkedHashSet();
+        Set f935c = new LinkedHashSet();
+
+        fs = record.getVariableFields("935");
+        if (fs != null) {
+            fsI = fs.iterator();
+            DataField hsf;
+            while (fsI.hasNext()) {
+                hsf = (DataField) fsI.next();
+                List ss = hsf.getSubfields('c');
+                if (ss != null) {
+                    Iterator ssI = ss.iterator();
+                    while (ssI.hasNext()) {
+                        s = (Subfield) ssI.next();
+                        val = s.getData();
+                        f935c.add(val);
+					}
+                }
+                ss = hsf.getSubfields('b');
+                if (ss != null) {
+                    Iterator ssI = ss.iterator();
+                    while (ssI.hasNext()) {
+                        s = (Subfield) ssI.next();
+                        val = s.getData();
+                        f935b.add(val);
+                    }
+                }
+            }
+        }
+
+        char leaderBit7 = Character.toUpperCase(leaderBit);
+        if( leaderBit7 == 'S' ) {
+            // Serial
+            // Look in 008 to determine what type of Continuing Resource
+            ControlField fixedField800 = (ControlField) record.getVariableField("008");
+            formatCode = fixedField800.getData().toUpperCase().charAt(21);
+            switch (formatCode) {
+                case 'N':
+                    if( f935b.contains( "cofz" )) {
+                        result.add( "ElectronicNewspaper" );
+                    } else {
+                        result.add( "Newspaper" );
+                    }
+					break;
+                case 'P':
+                    if( f935b.contains("cofz")) {
+							result.add("ElectronicJournal");
+                    } else if( f935b.contains( "soerd" )) {
+                        result.add( "ElectronicResourceDataCarrier" );
+                    } else {
+                        result.add("Journal");
+						}
+                    break;
+                case 'M':
+                    if( f935b.contains("cofz")) {
+                        result.add( "ElectronicSerial" );
+                    } else {
+					result.add("Serial");
+                    }
+					break;
+			}
+			// Article
+        } else if( leaderBit7 == 'A') {
+            if( f935b.contains( "cofz" )) {
+                result.add( "ElectronicArticle" );
+            } else {
+                result.add("Article");
+            }
+        // Monograph
+        } else if( leaderBit7 == 'M' ) {
+
+            if( f935c.contains( "hs" )) {
+                if( f935b.contains( "cofz" )) {
+                    result.add( "ElectronicThesis" );
+                } else {
+                    result.add( "Thesis" );
+                }
+                return result;
+            } else if( f935b.contains( "cofz" )) {
+                result.add( "eBook" );
+            } else {
+                // Check 935c (PICA 1140) to identify notated music and maps
+                if( f935c.contains( "muno" )) {
+                    result.add( "NotatedMusic" );
+                } else if( f935c.contains( "kart" )) {
+                    result.add( "Map" );
+                    // #1997
+                    if( f935b.contains("cofz") ) result.add( "ElectronicResourceRemoteAccess" );
+                // Check 935b (PICA 1130) to identify all kinds of formats
+                } else if( f935b.contains( "arbtrans" )) {
+                    result.add( "Transparency" );
+                } else if( f935b.contains("cdda") ) {
+                    result.add( "CD" );
+                } else if( f935b.contains("crom") ) {
+                    result.add( "CDROM" );
+                } else if( f935b.contains("dias") ) {
+                    result.add( "Slide" );
+                } else if( f935b.contains("disk") ) {
+                    result.add( "FloppyDisk" );
+                } else if( f935b.contains("druck") ) {
+                    result.add( "Book" );
+                } else if( f935b.contains("dvda") ) {
+                    result.add( "DVDAudio" );
+                } else if( f935b.contains("dvdr") ) {
+                    result.add( "DVDROM" );
+                } else if( f935b.contains("dvdv") ) {
+                    result.add( "DVDVideo" );
+                } else if( f935b.contains("anfi") ) {
+                    result.add( "AudioVisualMedia" );
+                } else if( f935b.contains("foto") ) {
+                    result.add( "Photo" );
+                } else if( f935b.contains("handschr") ) {
+                    result.add( "Manuscript" );
+                } else if( f935b.contains("kunstbl") ) {
+                    result.add( "ArtPrint" );
+                } else if( f935b.contains("nachl") ) {
+                    result.add( "Nachlass" );
+                } else if( f935b.contains("plakat") ) {
+                    result.add( "Placard" );
+                } else if( f935b.contains("scha") ) {
+                    result.add( "Record" );
+                } else if( f935b.contains("soerd") ) {
+                    result.add( "ElectronicResourceDataCarrier" );
+                } else if( f935b.contains("sobildtt") ) {
+                    result.add( "AudioVisualMedia" );
+                } else if( f935b.contains("sott") ) {
+                    result.add( "SoundRecordingMedium" );
+                } else if( f935b.contains("tonbd") ) {
+                    result.add( "AudioTape" );
+                } else if( f935b.contains("tonks") ) {
+                    result.add( "AudioTape" );
+                } else if( f935b.contains("vika") ) {
+                    result.add( "VideoTape" );
+                } else if( f935b.contains("blindendr") ) {
+                    result.add( "Braille" );
+                } else if( f935b.contains("bray") ) {
+                    result.add( "BluRayDisc" );
+                } else if( f935b.contains("ckop") ) {
+                    result.add( "Microfiche" );
+                } else if( f935b.contains("cofz") ) {
+                    result.add( "ElectronicResourceRemoteAccess" );
+                } else if( f935b.contains("gegenst") ) {
+                    result.add( "PhysicalObject" );
+                } else if( f935b.contains("lkop") ) {
+                    result.add( "Microfilm" );
+                } else if( f935b.contains("skop") ) {
+                    result.add( "Microform" );
+                } else {
+                    result.add( "Book" );
+                }
+            }
+        } // 'S', 'A' und 'M'
+
+        if (!result.isEmpty()) {
+            return result;
+        }
+
+        // Check for Combination of Media (Kit)
+        // if 007 = zm return "Kit" break
+        ControlField fixedField700 = (ControlField) record.getVariableField("007");
+        if( fixedField700 != null && fixedField700.equals( "zm")) {
+            result.add( "Kit" );
+        } else if( leader.charAt(6) == 'o') { // if LDR[6] = o return "Kit" break
+            result.add( "Kit" );
+        } 
+
+    } // source_id 0 or 8
+
+    if (!result.isEmpty()) {
+        return result;
+    }
+
+    return getAccessInfOld( record );
+}
diff --git a/import/index_scripts/attached_DE-15.bsh b/import/index_scripts/attached_DE-15.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..457b98457778e4d61ab2e23e8fc4c9b4976a8571
--- /dev/null
+++ b/import/index_scripts/attached_DE-15.bsh
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2014 finc team, team@finc.info
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+static final Logger logger    = Logger.getLogger("de.ubl.import.attached_DE15");
+static final Set institutions = new LinkedHashSet(){{
+    add( "DE-15" );
+}};
+
+/*
+ * Ticket #2048
+ */
+public String getAttached( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // FINE,INFO,ALL,WARNING and so on
+
+    String result = "";
+    String institution = indexer.getFirstFieldVal(record, "852a");
+    if( institution != null && institutions.contains( institution ) ) {
+        String timestamp = indexer.getFirstFieldVal(record, "852z");
+        if( timestamp != null ) result = timestamp;
+    }
+    return result;
+}
diff --git a/import/index_scripts/finc_class.bsh b/import/index_scripts/finc_class.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..e6eea4bef3af8dba1184c7c8518f16a9fdd126e7
--- /dev/null
+++ b/import/index_scripts/finc_class.bsh
@@ -0,0 +1,404 @@
+/*
+ * Copyright (C) 2012 finc team, team@finc.info
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   finc team
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+static final Logger logger = Logger.getLogger("de.ubl.import.finc_class");
+
+public Set getFincClass(Record record) {
+
+    logger.setLevel( Level.WARNING ); // FINE,INFO,ALL,WARNING and so on
+
+    Set result = new LinkedHashSet();
+    String val;
+    Subfield s;
+
+    HashMap rvk_sMap = new HashMap();
+    HashMap ddc_sMap = new HashMap();
+    HashMap bic_sMap = new HashMap();
+    HashMap rvk_rMap = new HashMap();
+    HashMap ddc_rMap = new HashMap();
+    HashMap bic_rMap = new HashMap();
+
+    // sMap.put("1","A[A-Z] [0-9]+.*");
+    // rMap.put("1","Allgemeines");
+
+    // RVK	
+    rvk_sMap.put("0", "A[A-Z] [0-9]+.*");
+    rvk_rMap.put("0", "Allgemeines");
+    rvk_sMap.put("1", "B[A-Z] [0-9]+.*");
+    rvk_rMap.put("1", "Theologie und Religionswissenschaft");
+    rvk_sMap.put("2", "C[A-I] [0-9]+.*");
+    rvk_rMap.put("2", "Philosophie");
+    rvk_sMap.put("3", "C[L-Z] [0-9]+.*");
+    rvk_rMap.put("3", "Psychologie");
+    rvk_sMap.put("4", "D[A-Z] [0-9]+.*");
+    rvk_rMap.put("4", "Pädagogik");
+    rvk_sMap.put("5", "E[A-Z] [0-9]+.*");
+    rvk_rMap.put("5", "Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen");
+    rvk_sMap.put("6", "G[A-Z] [0-9]+.*");
+    rvk_rMap.put("6", "Germanistik, Niederlandistik, Skandinavistik");
+    rvk_sMap.put("7", "H[A-Z] [0-9]+.*");
+    rvk_rMap.put("7", "Anglistik, Amerikanistik");
+    rvk_sMap.put("8", "I[A-Z] [0-9]+.*");
+    rvk_rMap.put("8", "Romanistik");
+    rvk_sMap.put("9", "K[A-Z] [0-9]+.*");
+    rvk_rMap.put("9", "Slawistik");
+    rvk_sMap.put("10", "L[A-C] [0-9]+.*");
+    rvk_rMap.put("10", "Ethnologie (Volks- und Völkerkunde)");
+    rvk_sMap.put("11", "(LD [1-2][0-9]+)|(L[E-G] [0-9]+).*");
+    rvk_rMap.put("11", "Klassische Archäologie");
+    rvk_sMap.put("12", "(LD [3-7][0-9]+)|(L[H-O] [0-9]+).*");
+    rvk_rMap.put("12", "Kunst und Kunstgeschichte");
+    rvk_sMap.put("13", "(LD [8-9][0-9]+)|(L[P-Y] [0-9]+).*");
+    rvk_rMap.put("13", "Musikwissenschaft");
+    rvk_sMap.put("14", "M[A-L] [0-9]+.*");
+    rvk_rMap.put("14", "Politologie");
+    rvk_sMap.put("15", "M[N-W] [0-9]+.*");
+    rvk_rMap.put("15", "Soziologie");
+    rvk_sMap.put("16", "M[X-Z] [0-9]+.*");
+    rvk_rMap.put("16", "Militärwissenschaft");
+    rvk_sMap.put("17", "N[A-Z] [0-9]+.*");
+    rvk_rMap.put("17", "Geschichte");
+    rvk_sMap.put("18", "P[A-Z] [0-9]+.*");
+    rvk_rMap.put("18", "Rechtswissenschaft");
+    rvk_sMap.put("19", "Q[A-Z] [0-9]+.*");
+    rvk_rMap.put("19", "Wirtschaftswissenschaften");
+    rvk_sMap.put("20", "R[A-Z] [0-9]+.*");
+    rvk_rMap.put("20", "Geographie");
+    rvk_sMap.put("21", "S[A-P] [0-9]+.*");
+    rvk_rMap.put("21", "Mathematik");
+    rvk_sMap.put("22", "S[Q-U] [0-9]+.*");
+    rvk_rMap.put("22", "Informatik");
+    rvk_sMap.put("23", "T[A-D] [0-9]+.*");
+    rvk_rMap.put("23", "Allgemeine Naturwissenschaft");
+    rvk_sMap.put("24", "T[E-Z] [0-9]+.*");
+    rvk_rMap.put("24", "Geologie und Paläontologie");
+    rvk_sMap.put("25", "U[A-Z] [0-9]+.*");
+    rvk_rMap.put("25", "Physik");
+    rvk_sMap.put("26", "V[A-Z] [0-9]+.*");
+    rvk_rMap.put("26", "Chemie und Pharmazie");
+    rvk_sMap.put("27", "W[A-Z] [0-9]+.*");
+    rvk_rMap.put("27", "Biologie");
+    rvk_sMap.put("28", "(W[W-Z]|X[A-Z]|Y[A-V]) [0-9]+.*");
+    rvk_rMap.put("28", "Medizin");
+    rvk_sMap.put("29", "Z[A-E] [0-9]+.*");
+    rvk_rMap.put("29", "Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft");
+    rvk_sMap.put("30", "Z[G-S] [0-9]+.*");
+    rvk_rMap.put("30", "Technik");
+    rvk_sMap.put("31", "Z[X-Y] [0-9]+.*");
+    rvk_rMap.put("31", "Sport");
+    rvk_sMap.put("32", "(F[BCEHNOPQTX] [0-9]+)|(FF [1-2][0-9]+).*");
+    rvk_rMap.put("32", "Klassische Philologie");
+    rvk_sMap.put("33", "(FK [0-9]+)|(FF [5-6][0-9]+).*");
+    rvk_rMap.put("33", "Byzantinistik");
+    rvk_sMap.put("34", "F[RUY] [0-9]+.*");
+    rvk_rMap.put("34", "Mittellateinische Philologie");
+    rvk_sMap.put("35", "(F[GL] [0-9]+)|(FD [1-2][0-9]+).*");
+    rvk_rMap.put("35", "Neugriechische Philologie");
+    rvk_sMap.put("36", "F[SVZ] [0-9]+.*");
+    rvk_rMap.put("36", "Neulateinische Philologie");
+    // DDC
+    ddc_sMap.put("37", "^0[1-35-9][0-9].*");
+    ddc_rMap.put("37", "Allgemeines");
+    ddc_sMap.put("38", "((^2[0-9]{2})|(^1[37][0-9])).*");
+    ddc_rMap.put("38", "Theologie und Religionswissenschaft");
+    ddc_sMap.put("39", "^((1[0-46-9])|21)[0-9].*");
+    ddc_rMap.put("39", "Philosophie");
+    ddc_sMap.put("40", "^1[35][0-9].*");
+    ddc_rMap.put("40", "Psychologie");
+    ddc_sMap.put("41", "^37[0-9].*");
+    ddc_rMap.put("41", "Pädagogik");
+    ddc_sMap.put("42", "^(4[019][0-9])|(8[09][0-9]).*");
+    ddc_rMap.put("42", "Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen");
+    ddc_sMap.put("43", "^(43[0-9])|(83[0-9]).*");
+    ddc_rMap.put("43", "Germanistik, Niederlandistik, Skandinavistik");
+    ddc_sMap.put("44", "^(42[0-9])|(8[12][0-9]).*");
+    ddc_rMap.put("44", "Anglistik, Amerikanistik");
+    ddc_sMap.put("45", "^(4[4-6][0-9])|(8[4-6][0-9]).*");
+    ddc_rMap.put("45", "Romanistik");
+    ddc_sMap.put("46", "^39[0-9].*");
+    ddc_rMap.put("46", "Ethnologie (Volks- und Völkerkunde)");
+    ddc_sMap.put("47", "^93[0-9].*");
+    ddc_rMap.put("47", "Klassische Archäologie");
+    ddc_sMap.put("48", "^7[0234-7][0-9].*");
+    ddc_rMap.put("48", "Kunst und Kunstgeschichte");
+    ddc_sMap.put("49", "^78[0-9].*");
+    ddc_rMap.put("49", "Musikwissenschaft");
+    ddc_sMap.put("50", "^32[0-9].*");
+    ddc_rMap.put("50", "Politologie");
+    ddc_sMap.put("51", "^3[0-367][0-9].*");
+    ddc_rMap.put("51", "Soziologie");
+    ddc_sMap.put("52", "^35[0-9].*");
+    ddc_rMap.put("52", "Militärwissenschaft");
+    ddc_sMap.put("53", "^((9[012-9])|(1[89])|27)[0-9].*");
+    ddc_rMap.put("53", "Geschichte");
+    ddc_sMap.put("54", "^3[45][0-9].*");
+    ddc_rMap.put("54", "Rechtswissenschaft");
+    ddc_sMap.put("55", "^(3[38][0-9])|(65[0-9]).*");
+    ddc_rMap.put("55", "Wirtschaftswissenschaften");
+    ddc_sMap.put("56", "^(91|55)[0-9].*");
+    ddc_rMap.put("56", "Geographie");
+    ddc_sMap.put("57", "^(51|16|31)[0-9].*");
+    ddc_rMap.put("57", "Mathematik");
+    ddc_sMap.put("58", "^(00|77)[0-9].*");
+    ddc_rMap.put("58", "Informatik");
+    ddc_sMap.put("59", "^50[0-9].*");
+    ddc_rMap.put("59", "Allgemeine Naturwissenschaft");
+    ddc_sMap.put("60", "^5[56][0-9].*");
+    ddc_rMap.put("60", "Geologie und Paläontologie");
+    ddc_sMap.put("61", "^5[23][0-9].*");
+    ddc_rMap.put("61", "Physik");
+    ddc_sMap.put("62", "^(54[0-9])|(66[0-9]).*");
+    ddc_rMap.put("62", "Chemie und Pharmazie");
+    ddc_sMap.put("63", "^5[7-9][0-9].*");
+    ddc_rMap.put("63", "Biologie");
+    ddc_sMap.put("64", "^(61|57)[0-9].*");
+    ddc_rMap.put("64", "Medizin");
+    ddc_sMap.put("65", "^(6[34][0-9])|(7[134][0-9]).*");
+    ddc_rMap.put("65", "Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft");
+    ddc_sMap.put("66", "^((6[0-789])|72)[0-9].*");
+    ddc_rMap.put("66", "Technik");
+    ddc_sMap.put("67", "^79[0-9].*");
+    ddc_rMap.put("67", "Sport");
+    ddc_sMap.put("68", "^((4[78])|8[78])[0-9].*");
+    ddc_rMap.put("68", "Klassische Philologie");
+    ddc_sMap.put("69", "^[48]8[0-9].*");
+    ddc_rMap.put("69", "Neugriechische Philologie");
+    ddc_sMap.put("70", "^[48]7[0-9].*");
+    ddc_rMap.put("70", "Neulateinische Philologie");
+    ddc_sMap.put("71", "^04[0-9].*");
+    ddc_rMap.put("71", "no subject assigned");
+    //BIC
+    bic_sMap.put("72", "((^[BGW]$)|(^((B[GJMT])|(G[BLMPT])|(WZ))([A-Z]|$)))");
+    bic_rMap.put("72", "Allgemeines");
+    bic_sMap.put("73", "^HR([A-Z]|$)");
+    bic_rMap.put("73", "Theologie und Religionswissenschaft");
+    bic_sMap.put("74", "^HP([A-Z]|$)");
+    bic_rMap.put("74", "Philosophie");
+    bic_sMap.put("75", "^JM([A-Z]|$)");
+    bic_rMap.put("75", "Psychologie");
+    bic_sMap.put("76", "((^E$)|(^((CJ)|(E[BLS])|(JN)|(YQ))([A-Z]|$)))");
+    bic_rMap.put("76", "Pädagogik");
+    bic_sMap.put("77", "((^[CD]$)|(^((C[BF])|(D[CDNQS]))([A-Z]|$)))");
+    bic_rMap.put("77", "Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen");
+    bic_sMap.put("78", "^E[BLS]([A-Z]|$)");
+    bic_rMap.put("78", "Anglistik, Amerikanistik");
+    bic_sMap.put("79", "^HD([A-Z]|$)");
+    bic_rMap.put("79", "Klassische Archäologie");
+    bic_sMap.put("80", "((^A$)|(^((A[BCFGJKMNPS])|(WF))([A-Z]|$)))");
+    bic_rMap.put("80", "Kunst und Kunstgeschichte");
+    bic_sMap.put("81", "(((^AS)|(^AV))([A-Z]|$))");
+    bic_rMap.put("81", "Musikwissenschaft");
+    bic_sMap.put("82", "^JP([A-Z]|$)");
+    bic_rMap.put("82", "Politologie");
+    bic_sMap.put("83", "((^J$)|(^J[FHK]([A-Z]|$)))");
+    bic_rMap.put("83", "Soziologie");
+    bic_sMap.put("84", "^JW([A-Z]|$)");
+    bic_rMap.put("84", "Militärwissenschaft");
+    bic_sMap.put("85", "((^H$)|(^(HB|WQ|BG)([A-Z]|$)))");
+    bic_rMap.put("85", "Geschichte");
+    bic_sMap.put("86", "((^L$)|(^L[ABNR]([A-Z]|$)))");
+    bic_rMap.put("86", "Rechtswissenschaft");
+    bic_sMap.put("87", "((^K$)|(^((K[CFJN])|AK|TR|UF)([A-Z]|$)))");
+    bic_rMap.put("87", "Wirtschaftswissenschaften");
+    bic_sMap.put("88", "((^R$)|(^RG([A-Z]|$)))");
+    bic_rMap.put("88", "Geographie");
+    bic_sMap.put("89", "^PB([A-Z]|$)");
+    bic_rMap.put("89", "Mathematik");
+    bic_sMap.put("90", "((^U$)|(^((U[BDFGKLMNQRTY])|TJ)([A-Z]|$)))");
+    bic_rMap.put("90", "Informatik");
+    bic_sMap.put("91", "((^P$)|(^PD([A-Z]|$)))");
+    bic_rMap.put("91", "Allgemeine Naturwissenschaft");
+    bic_sMap.put("92", "^(RB|TH)([A-Z]|$)");
+    bic_rMap.put("92", "Geologie und Paläontologie");
+    bic_sMap.put("93", "^P[GH]([A-Z]|$)");
+    bic_rMap.put("93", "Physik");
+    bic_sMap.put("94", "^(PN|TD|TC)([A-Z]|$)");
+    bic_rMap.put("94", "Chemie und Pharmazie");
+    bic_sMap.put("95", "^(MZ|PS|TC|RN)([A-Z]|$)");
+    bic_rMap.put("95", "Biologie");
+    bic_sMap.put("96", "((^M$)|(^M[BFJMNQRX]([A-Z]|$)))");
+    bic_rMap.put("96", "Medizin");
+    bic_sMap.put("97", "^(RP|TV|WB|WF|WK|WM)([A-Z]|$)");
+    bic_rMap.put("97", "Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft");
+    bic_sMap.put("98", "((^T$)|(^(AM|RN|RP|TC|TD|TH|(T[BGJNQRT]))([A-Z]|$)))");
+    bic_rMap.put("98", "Technik");
+    bic_sMap.put("99", "^WS([A-Z]|$)");
+    bic_rMap.put("99", "Sport");
+    bic_sMap.put("100", "((^[FVY]$)|(^((F[ACFHJKLMPQRTVWXYZ])|(V[FSX])|(W[CDGHJNT])|(Y[BDFNRXZ]))([A-Z]|$)))");
+    bic_rMap.put("100", "no subject assigned");
+
+
+    // sMap.put("28","(W[W-Z]|X[A-Z]|Y[A-V]) [0-9]+.*");
+    // rMap.put("28","Medizin");
+
+    // LCC
+    HashMap lcc_pMap = new HashMap();
+    lcc_pMap.put("^[AZ]+.*", "Allgemeines");
+    lcc_pMap.put("^B[0-9CDHJ]+.*", "Philosophie");
+    lcc_pMap.put("^BF+.*", "Psychologie");
+    lcc_pMap.put("^B[LMPQRSTVX]+.*", "Theologie und Religionswissenschaften");
+    lcc_pMap.put("^C[0-9BDEJNRST]+.*", "Geschichte");
+    lcc_pMap.put("^CC+.*", "Klassische Archäologie");
+    lcc_pMap.put("^[DEF]+.*", "Geschichte");
+    lcc_pMap.put("^G[0-9ABCEF]+.*", "Geographie");
+    lcc_pMap.put("^G[NRT]+.*", "Ethnologie (Volks- und Völkerkunde)");
+    lcc_pMap.put("^GV+.*", "Sport");
+    lcc_pMap.put("^H[0-9AMNQSTVX]+.*", "Soziologie");
+    lcc_pMap.put("^H[BCDEFGJ]+.*", "Wirtschaftswissenschaften");
+    lcc_pMap.put("^J+.*", "Politologie");
+    lcc_pMap.put("^K+.*", "Rechtswissenschaft");
+    lcc_pMap.put("^L+.*", "Pädagogik");
+    lcc_pMap.put("^M+.*", "Musikwissenschaft");
+    lcc_pMap.put("^N+.*", "Kunst und Kunstgeschichte");
+    lcc_pMap.put("^P[0-9BHJKLMNZ]+.*", "Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen");
+    lcc_pMap.put("^PA+.*", "Klassische Philologie");
+    lcc_pMap.put("^P[CQ]+.*", "Romanistik");
+    lcc_pMap.put("^P[DFT]+.*", "Germanistik, Niederlandistik, Skandinavistik");
+    lcc_pMap.put("^P[ERS]+.*", "Anglistik, Amerikanistik");
+    lcc_pMap.put("^PG+.*", "Slawistik");
+    lcc_pMap.put("^Q[0-9]+.*", "Allgemeine Naturwissenschaft");
+    lcc_pMap.put("^QA+.*", "Mathematik");
+    lcc_pMap.put("^Q[BC]+.*", "Physik");
+    lcc_pMap.put("^QD+.*", "Chemie und Pharmazie");
+    lcc_pMap.put("^QE+.*", "Geologie und Paläontologie");
+    lcc_pMap.put("^Q[HKLMPR]+.*", "Biologie");
+    lcc_pMap.put("^R+.*", "Medizin");
+    lcc_pMap.put("^S+.*", "Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft");
+    lcc_pMap.put("^T+.*", "Technik");
+    lcc_pMap.put("^[UV]+.*", "Militärwissenschaft");
+
+    List fs = record.getVariableFields("084");
+    Iterator fsI = fs.iterator();
+    // RVK
+    if (fs != null) {
+        DataField rvk;
+        while (fsI.hasNext()) {
+            rvk = (DataField) fsI.next();
+            List ss = rvk.getSubfields('2');
+            Iterator ssI = ss.iterator();
+            if (ss != null) {
+                while (ssI.hasNext()) {
+                    s = (Subfield) ssI.next();
+                    if (s.getData().toLowerCase().contains("rvk")) {
+                        val = rvk.getSubfield('a').getData();
+
+                        for (String key : rvk_sMap.keySet()) {
+                            if (val.matches(rvk_sMap.get(key))) {
+                                result.add(rvk_rMap.get(key));
+                                logger.info( "finc_class RVK => " + rvk_rMap.get( key ) );
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    fs = record.getVariableFields("082");
+    fsI = fs.iterator();
+    // DDC
+    if (fs != null) {
+        DataField ddc;
+        while (fsI.hasNext()) {
+            ddc = (DataField) fsI.next();
+            List ss = ddc.getSubfields('a');
+            Iterator ssI = ss.iterator();
+            if (ss != null) {
+                while (ssI.hasNext()) {
+                    s = (Subfield) ssI.next();
+                    val = s.getData();
+                    for (String key : ddc_sMap.keySet()) {
+                        if (val.matches(ddc_sMap.get(key))) {
+                            result.add(ddc_rMap.get(key));
+                            logger.info( "finc_class DDC => " + ddc_rMap.get( key ) );
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    fs = record.getVariableFields("072");
+    fsI = fs.iterator();
+    // BIC
+    if (fs != null) {
+        DataField bic;
+        while (fsI.hasNext()) {
+            bic = (DataField) fsI.next();
+            List ss = bic.getSubfields('2');
+            Iterator ssI = ss.iterator();
+            if (ss != null) {
+                while (ssI.hasNext()) {
+                    s = (Subfield) ssI.next();
+                    if (s.getData().toLowerCase().contains("bic")) {
+                        val = bic.getSubfield('a').getData();
+
+                        for (String key : bic_sMap.keySet()) {
+                            if (val.matches(bic_sMap.get(key))) {
+                                result.add(bic_rMap.get(key));
+                                logger.info( "finc_class BIC => " + bic_rMap.get( key ) );
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    fs = record.getVariableFields("050");
+    fsI = fs.iterator();
+    // LCC
+    if (fs != null) {
+        DataField lcc;
+        while (fsI.hasNext()) {
+            lcc = (DataField) fsI.next();
+            List ss = lcc.getSubfields('a');
+            Iterator ssI = ss.iterator();
+            if (ss != null) {
+                while (ssI.hasNext()) {
+                    s = (Subfield) ssI.next();
+                    val = s.getData();
+                    // System.out.println("LCC: " + val);
+                    for (String key : lcc_pMap.keySet()) {
+                        if (val.matches(key)) {
+                            result.add(lcc_pMap.get(key));
+                            logger.info( "finc_class LCC => " + lcc_pMap.get( key ) );
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    if (result.isEmpty()) result.add("no subject assigned");
+    return result;
+}
diff --git a/import/index_scripts/format_de105.bsh b/import/index_scripts/format_de105.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..101d439bfc5ec5639155e41e905ec15e8570c4bd
--- /dev/null
+++ b/import/index_scripts/format_de105.bsh
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 Project finc http://finc.info
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import java.util.LinkedHashSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/*
+ * Ticket #2897, TUF: Icons zuweisen
+ *
+ * @author   Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+static final Logger logger = Logger.getLogger("de.ubl.import.format_de105");
+
+static final HashMap qucosaMap = new HashMap(){{
+    put( "article"          , "QucosaArticles" );
+    put( "bachelorthesis"   , "QucosaThesis" );
+    put( "book"             , "EBOOK" );
+    put( "bookpart"         , "QucosaArticles" );
+    put( "conferenceobject" , "QucosaConferenceproceeding" );
+    put( "doctoralthesis"   , "QucosaThesis" );
+    put( "lecture"          , "QucosaArticles" );
+    put( "masterthesis"     , "QucosaThesis" );
+    put( "musicalnotation"  , "QucosaScore" );
+    put( "other"            , "QucosaElectronicResource" );
+    put( "periodical"       , "QucosaArticles" );
+    put( "periodicalpart"   , "QucosaArticles" );
+    put( "preprint"         , "QucosaArticles" );
+    put( "report"           , "EBOOK" );
+    put( "studythesis"      , "QucosaThesis" );
+    put( "workingpaper"     , "QucosaArticles" );
+}};
+
+
+public Set getFormat( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+	Set result = new LinkedHashSet();
+
+    String format_de105 = indexer.getFirstFieldVal( record, "972c" );
+
+    // Ticket #1555 Qucosa
+    if( format_de105 == null || format_de105.isEmpty() ) {
+        String source_id = indexer.getFirstFieldVal( record, "980b" );
+        if( source_id.equals( "22" ) ) {
+            String data = indexer.getFirstFieldVal( record, "500a" );
+            if( data != null ) {
+                format_de105 = qucosaMap.get( data.toLowerCase() );
+            }
+        }
+    }
+
+    if (format_de105 != null) {
+        logger.info( "TUF Format => " + format_de105);
+        result.add(format_de105);
+    } else {
+        logger.info( "TUF Format NOT FOUND" );
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/geogr_code.bsh b/import/index_scripts/geogr_code.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..723fb6ca265a806d35ff7df88b5ed84d2dc1197a
--- /dev/null
+++ b/import/index_scripts/geogr_code.bsh
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.geogrcode");
+
+public Set getGeogrCode(Record record) {
+
+    logger.setLevel(Level.WARNING); // WARNING,FINE,INFO,ALL and so on
+
+    Set result = new LinkedHashSet();
+
+    Set geogrCodeList = indexer.getFieldList(record, "951a");
+
+    for( String geogr_code : geogrCodeList ) {
+        geogr_code = geogr_code.trim();
+        if(geogr_code.length() > 0) {
+            String[] split = geogr_code.split( "-" );
+            StringBuilder b = new StringBuilder();
+            for( String s : split ) {
+                if( b.length() > 0 ) b.append( "-" );
+                b.append(s);
+                String code = b.toString();
+                result.add(code);
+            }
+        }
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getBranches.bsh b/import/index_scripts/getBranches.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..415724cc999424c04f32ffaf13a17cea73ca86aa
--- /dev/null
+++ b/import/index_scripts/getBranches.bsh
@@ -0,0 +1,181 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null, stp = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.getbranches");
+static final HashMap patternCache = new HashMap();
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+public Set getBranches(Record record, String pattern) {  
+    
+    logger.setLevel(Level.WARNING); // FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    Set result = new LinkedHashSet();
+
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+
+    // Ticket #1625
+    if(source_id.equals("23")) {
+        result.add("GR");
+        return(result);
+    }
+
+    if(source_id == null || !source_id.equals("0")) {
+        return(result); 
+    }
+
+    Set sigelfs = indexer.getFieldList(record, "852a");
+
+    Matcher m = patternCache.get(pattern);
+    if(m == null) {
+        m = Pattern.compile(pattern).matcher("");
+        patternCache.put(pattern, m);
+    }
+    
+    String currentSigel = null;
+    for( String current : sigelfs) {
+        m.reset(current);
+        if(m.find()) {
+            currentSigel = current;
+            break;
+        }
+    }
+    
+    if(currentSigel == null) {
+        logger.info(">>> exiting due to pattern mismatch " + pattern);
+        return(result);
+    }
+
+    logger.info(">>> getting branches for " + currentSigel);
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR gB reading config file (mddb.conf)");
+                return(result);
+            }
+            String sDbUrl=properties.getProperty("DatabaseUrl");
+            String sUsr=properties.getProperty("DatabaseUser");
+            String sPwd=properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT gB to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    "SELECT DISTINCT(branch) " +
+                    "FROM item " + 
+                    "WHERE finc_id = ? " +
+                        "AND sigel = ?"
+                );
+                stp = cn.prepareStatement(
+                    "SELECT DISTINCT(i.branch) " +
+                    "FROM parents p, item i " +
+                    // "WHERE p.parent_record_id = CONCAT('(DE-576)', ?) " +
+                    "WHERE p.parent_record_id = ? " + // #4087
+                        "AND i.finc_id = p.finc_id " +
+                        "AND i.sigel = ?"
+                );
+                logger.info("CONNECT gB OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR gB create database connection: " + e.getMessage());
+                return(result);
+            }
+            logger.info("CONNECT gB to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN gB 1st statement");
+                    try { if( null != stp ) stp.close(); } catch( Exception ex ) {}
+                    logger.info("SHUTTING DOWN gB 2nd statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT gB from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+      
+    String finc_id = indexer.getFirstFieldVal(record, "001");
+    Long fincNumber = Long.valueOf(finc_id);
+    String record_id = indexer.getFirstFieldVal(record, "980a");
+
+    logger.info("checking gB " + finc_id + " " + source_id + " " + record_id);
+
+    ResultSet          rs = null;
+
+    try {
+
+        st.setLong( 1, fincNumber);
+        st.setString( 2, currentSigel);
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            if( rs.getString(1) == null ) continue;
+            result.add(rs.getString(1));
+            logger.info("ADDING gB : " + rs.getString(1));
+        }
+        try { rs.close(); } catch( Exception ex ) {}
+        if( result.isEmpty() ) rs = null;
+
+        if( rs == null ) {
+            stp.setString( 1, record_id);
+            stp.setString( 2, currentSigel);
+            rs = stp.executeQuery();
+            while( rs.next() ) {
+                if( rs.getString(1) == null ) continue;
+                result.add(rs.getString(1));
+                logger.info("ADDING gB : " + rs.getString(1));
+            }
+        }
+
+    } catch( Exception ex ) {
+        logger.severe( "ERROR gB => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getCollCode.bsh b/import/index_scripts/getCollCode.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..f1cb887aa78ccc401639d91b7c5d227a2ebf188d
--- /dev/null
+++ b/import/index_scripts/getCollCode.bsh
@@ -0,0 +1,168 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null, stc = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.getcollcode");
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+public Set getCollCodes(Record record, String sigel) {  
+
+    logger.setLevel(Level.WARNING); // FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    Set result = new LinkedHashSet();
+    
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+    if(!source_id.equals("0")) {
+        return(result); 
+    }
+
+    Set sigelfs = indexer.getFieldList(record, "852a");
+
+    Iterator sigelfs_iter = sigelfs.iterator();
+
+    int conti = 0;
+
+    while (sigelfs_iter.hasNext() && conti==0) {
+        String current = sigelfs_iter.next();
+        logger.info(">>> comparing " + sigel + " " + current);
+        if(sigel.equals(current)) {
+            conti = 1;
+        }
+    }
+
+    if(conti==0) {
+        logger.info(">>> exiting due to sigel mismatch " + sigel);
+        return(result);
+    }
+
+    logger.info(">>> getting collcodes for " + sigel);
+    
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put( "LOAD", "true");
+            } catch (IOException e) {
+                logger.severe("ERROR gCC reading config file => " + ppPath);
+                return(result);
+            }
+            String sDbUrl = properties.getProperty("DatabaseUrl");
+            String sUsr   = properties.getProperty("DatabaseUser");
+            String sPwd   = properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT gCC to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    "SELECT DISTINCT(collection_code) " +
+                    "FROM item " + 
+                    "WHERE finc_id = ? " +
+                        "AND sigel = ?"
+                );
+                stc = cn.prepareStatement(
+                    "SELECT DISTINCT(i.collection_code) " +
+                    "FROM parents p, item i " +
+                    // "WHERE p.parent_record_id = CONCAT('(DE-576)', ?) " +
+                    "WHERE p.parent_record_id = ? " + // #4087
+                        "AND i.finc_id = p.finc_id " +
+                        "AND i.sigel = ?"
+                );
+                logger.info("CONNECT gCC OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR gCC create database connection: " + e.getMessage());
+                return(result);
+            }
+            logger.info("CONNECT gCC to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN gCC 1st statement");
+                    try { if( null != stc ) stc.close(); } catch( Exception ex ) {}
+                    logger.info("SHUTTING DOWN gCC 2nd statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT gCC from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+
+    String finc_id = indexer.getFirstFieldVal(record, "001");
+    Long fincNumber = Long.valueOf(finc_id);
+    String record_id = indexer.getFirstFieldVal(record, "980a");
+
+    logger.info("checking gCC " + finc_id + " " + source_id + " " + record_id);
+
+    ResultSet  rs  = null;
+
+    try {
+
+        st.setLong( 1, fincNumber);
+        st.setString( 2, sigel);
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            if( rs.getString(1) == null ) continue;
+            result.add(rs.getString(1));
+            logger.info("ADDING gCC : " + rs.getString(1));
+        }
+        try { rs.close(); } catch( Exception ex ) {}
+        if( result.isEmpty() ) rs = null;
+
+        if( rs == null ) {
+            stc.setString( 1, record_id);
+            stc.setString( 2, sigel);
+            rs = stc.executeQuery();
+            while( rs.next() ) {
+                if( rs.getString(1) == null ) continue;
+                result.add(rs.getString(1));
+                logger.info("ADDING gCC : " + rs.getString(1));
+            }
+        }
+
+    } catch( Exception ex ) {
+        logger.severe( "ERROR gCC => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getFieldRegex.bsh b/import/index_scripts/getFieldRegex.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..11a6c4ced2c815a72b442eb1bd21a9a63c5b6173
--- /dev/null
+++ b/import/index_scripts/getFieldRegex.bsh
@@ -0,0 +1,47 @@
+/* Leander Seige */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+
+public Set getFieldRegex(Record record, String fieldnums, String subfield, String match, String search, String replace) {
+
+    Set result = new LinkedHashSet();
+
+    String[] fields=fieldnums.split(":");
+
+    for(int i =0; i < fields.length ; i++) {
+        field=fields[i];
+
+        List fs = record.getVariableFields(field);
+        Iterator fsI = fs.iterator();
+
+        if (fs != null) {
+            DataField author;
+            while(fsI.hasNext()) {
+                author = (DataField) fsI.next();
+                String val;
+
+                List ss = author.getSubfields(subfield.charAt(0));
+                Iterator ssI = ss.iterator();
+                if (ss != null) {
+                    while (ssI.hasNext()) {
+                        val=ssI.next().getData();
+                        if (val.matches(match)) { 
+                            val=val.replaceAll(search,replace);
+                            val=val.trim();
+                            if(val.length()>0) {
+                                // System.out.println(">>> Value: "+val);
+                                result.add(val);
+                            }
+                        }
+                    }
+                } else {
+                }
+            }
+        } else {
+        }
+     }
+    return result;
+}
+
diff --git a/import/index_scripts/getFincFulltext.bsh b/import/index_scripts/getFincFulltext.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..66ad42ac7ddc31ee640122b64daf0157b9d8beb9
--- /dev/null
+++ b/import/index_scripts/getFincFulltext.bsh
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2012 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+/*
+ * Suche in Inhaltsverzeichnis etc. ("Volltextsuche") als Option gestalten
+ * Zum deserialisieren von JSON wird die Google JSON Software Bibliothek
+ * benötigt (http://code.google.com/p/google-gson/).
+ */
+
+import java.io.*;
+import java.sql.*;
+import java.net.*;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.marc4j.marc.*;
+import com.google.gson.Gson;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+
+static final Properties fftProperties = new Properties();
+static final Logger logger            = Logger.getLogger("de.ubl.import.getfincfulltext");
+static final Gson gson                = new com.google.gson.GsonBuilder().create();
+
+static final String config = "getFincFulltext.conf";
+static String[] fields;
+
+static final Properties properties_22 = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null;
+
+public String getFincFulltext(Record record) {
+
+    logger.setLevel(Level.WARNING); // FINE,INFO,WARNING,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    // nicht alle durchsuchen, da Z.b. NAXOS eine URL als RECORD ID enthält!!!
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+
+    // Ticket #15555, Qucosa
+    if(source_id != null && source_id.equals( "22" ) ) {
+
+        String qucosaText = "";
+
+        // Datenbank Konfiguration aus 'mddb.conf'
+        synchronized(properties_22) {
+            if(properties_22.size() == 0) {
+                Class.forName( sDbDrv );
+                try {
+                    // mddb3 Datenbankverbindung Einstellungen
+                    String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                    // if( vufindHome == null ) ppPath = bsh.cwd + "/../import/index_scripts/mddb.conf";
+                    properties_22.load(new FileInputStream( ppPath ));
+                    properties_22.put("LOAD","true");
+                } catch (IOException e) {
+                    logger.severe("ERROR 'CUCOSA FULLTEXT' reading config file (getFincFulltext)");
+                    return(result);
+                }
+                String sDbUrl = properties_22.getProperty("DatabaseUrl");
+                String sUsr   = properties_22.getProperty("DatabaseUser");
+                String sPwd   = properties_22.getProperty("DatabasePassword");
+
+                try {
+                    logger.info("TRY TO OPEN A CONNECTION 'CUCOSA FULLTEXT': " + sDbUrl);
+                    cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                    st = cn.prepareStatement(
+                        "SELECT value " +
+                        "FROM annotation " + 
+                        "WHERE source_id = ? " +
+                            "AND sha1sum = ?"
+                    );
+                    logger.info("CONNECTION ESTABLISHED 'CUCOSA FULLTEXT' OK: " + sDbUrl);
+                } catch(Exception e) {
+                    logger.severe("ERROR 'CUCOSA FULLTEXT' create database connection: " + e.getMessage());
+                    return(result);
+                }
+                Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                    public void run() {
+                        logger.info("SHUTTING DOWN 'CUCOSA FULLTEXT' statement");
+                        try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                        logger.info("DISCONNECT 'CUCOSA FULLTEXT': " + sDbUrl);
+                        try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                    }
+                }));
+            }
+        }
+
+        List fields_520 = record.getVariableFields( "520" );
+        if (fields_520 != null) {
+            Iterator fieldsIter = fields_520.iterator();
+            while( fieldsIter.hasNext() ) {
+                DataField dataField = (DataField) fieldsIter.next();
+                List subfields = dataField.getSubfields( '9' );
+                if( subfields != null && !subfields.isEmpty() ) {
+                    // Ist der erste Indikator "2" handelt es sich um das Inhaltsverzeichnis (TOC).
+                    // Ist der erste Indikator "3" handelt es sich um die Zusammenfassung (Abstract).
+                    // char indicator = dataField.getIndicator1();
+                    Iterator subfieldsIter = subfields.iterator();
+                    if( subfields != null ) {
+                        if( subfieldsIter.hasNext() ) {
+
+                            String sha1sum = subfieldsIter.next().getData();
+                            ResultSet          rs = null;
+
+                            try {
+                                st.setString( 1, source_id );
+                                st.setString( 2, sha1sum );
+                                rs = st.executeQuery();
+                                if( rs.next() ) {
+                                    qucosaText = rs.getString(1);
+                                }
+                                try { rs.close(); } catch( Exception ex ) {}
+                                rs = null;
+
+                            } catch( Exception ex ) {
+                                logger.severe( "ERROR 'CUCOSA FULLTEXT' => " + ex.getMessage() );
+                                qucosaText = "";
+                            } finally {
+                                try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+                            }
+
+                            if( !qucosaText.isEmpty() ) {
+                                String record_id = indexer.getFirstFieldVal( record, "980a" );
+                                logger.info( "FOUND 'CUCOSA FULLTEXT' record_id => " + record_id + ", text => " + qucosaText);
+                                return qucosaText;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    if(source_id == null || (!source_id.equals( "0" ) && !source_id.equals( "8" )) ) {
+        logger.info( "FULLTEXT: IGNORE SOURCE ID => " + source_id );
+        return ""; 
+    }
+
+    String record_id = indexer.getFirstFieldVal(record, "980a");
+    if( record_id == null ) {
+        logger.severe( "ERROR FULLTEXT: could't not found record id");
+        return "ERROR FULLTEXT: RECORD ID NOT FOUND";
+    }
+
+    synchronized( fftProperties ) {
+
+        if( fftProperties.size() == 0 ) {
+            logger.info( "FULLTEXT: Read config file => " + config);
+            String ppFile = vufindHome + "/import/index_scripts/" + config;
+            fftProperties.load( new FileInputStream( ppFile ) );
+
+            if ( !fftProperties.containsKey( "keywords" ) ) {
+                Strng errmsg = "ERROR FULLTEXT: Could't find property 'keywords'";
+                logger.severe( errmsg );
+                return errmsg;
+            }
+
+            fftProperties.put( "read", true);
+            fields = fftProperties.get( "keywords" ).toString().trim().split( "," );
+        }
+    }
+            
+    URL url = new URL( fftProperties.get( "solrService" ) + "?q=ppn:" + record_id + "&version=2.2&start=0&wt=json" );
+    URLConnection urlConnection = url.openConnection();
+
+    InputStreamReader in = new InputStreamReader( urlConnection.getInputStream(), "UTF-8" );
+
+    StringBuilder builder = new StringBuilder();
+
+    int c = 0;
+    char[] buff = new char[1024 * 8];
+
+    while( ( c = in.read( buff, 0, buff.length ) ) > 0 ) {
+        builder.append( buff, 0, c );
+    }
+
+    in.close();
+    in = null;
+
+    Map o = gson.fromJson( builder.toString(), Object.class );
+
+    if( o == null ) return "ERROR FULLTEXT: FROM JSON";
+
+    Object mapObj = o.get("response");
+    if( mapObj == null ) return "";
+    Map response = (Map)mapObj;
+
+    Object docsObj = response.get( "docs" );
+    if( docsObj == null ) return "";
+    List docs = (List)docsObj;
+
+    StringBuilder b = new StringBuilder();
+    for(Map docMap : docs) {
+        for(String s : fields) {
+            Object obj = docMap.get(s.trim());
+            if( obj != null ) {
+                b.append(b.length() > 0 ? " " : "").append( obj.toString().trim().replaceAll("\\s+"," "));
+            }
+        }
+    }
+
+    String text = b.toString();
+    if ( text.length() > 0) {
+        logger.info( "FULLTEXT: " + record_id + " => " + ( text.length() <= 80 ? text : text.substring( 0, 80 )));
+    }
+
+    return text;
+
+}
diff --git a/import/index_scripts/getFincFulltext.conf b/import/index_scripts/getFincFulltext.conf
new file mode 100644
index 0000000000000000000000000000000000000000..7c91f351be9cfda34265cf67baaf43b3a892515b
--- /dev/null
+++ b/import/index_scripts/getFincFulltext.conf
@@ -0,0 +1,12 @@
+#
+# Suche in Inhaltsverzeichnis etc. ("Volltextsuche") als Option gestalten
+#
+
+solrService = http://172.18.85.120:8983/solr/select/
+
+# search for this keys in 'docs' list, separate them with komma (,)
+keywords    = tableofcontents,abstract,publishinginfo,introduction,errata,formulary,chapter,bibliography,review,excerpt,blurb,index,preface,epilogue
+
+#
+#
+#
diff --git a/import/index_scripts/getFincFulltextSwbp.bsh b/import/index_scripts/getFincFulltextSwbp.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..9eaca8dfa8b805de866e21bf6d29f54018553bb6
--- /dev/null
+++ b/import/index_scripts/getFincFulltextSwbp.bsh
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+/*
+ * Suche Volltexte in Swb Plus Datenbank.
+ * Siehe Ticket #2483 {@link https://intern.finc.info/issues/2483}
+ */
+
+import java.io.*;
+import java.sql.*;
+import java.net.*;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.marc4j.marc.*;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+
+static final String baseURL = "http://139.18.19.240:8080/swbp/webresources/swbplus";
+static final Logger logger            = Logger.getLogger("de.ubl.import.getfincfulltext");
+static final Set acceptedSourceIds = new HashSet(){{
+    add("0");
+    add("8");
+    add("22");
+}};
+
+public String getFincFulltextSwbp(Record record) {
+
+    logger.setLevel(Level.WARNING); // FINE,INFO,WARNING,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    String finc_id = indexer.getFirstFieldVal( record, "001");
+
+    // nicht alle durchsuchen, da Z.b. NAXOS eine URL als RECORD ID enthält!!!
+    String source_id = indexer.getFirstFieldVal( record, "980b");
+
+    if(source_id == null || (!acceptedSourceIds.contains( source_id )) ) {
+        logger.info( "FULLTEXT: IGNORE SOURCE ID => " + source_id );
+        return ""; 
+    }
+
+    String record_id = indexer.getFirstFieldVal(record, "980a");
+    if( record_id == null ) {
+        logger.severe( "ERROR 'SWB+ FULLTEXT': could't not found record id");
+        return "ERROR 'SWB+ FULLTEXT': RECORD ID NOT FOUND";
+    }
+
+    // sind Resourcen vorhanden?
+    Set urlList = indexer.getFieldList(record, "856u");
+    if( urlList.isEmpty() ) return "";
+
+    // Indikator 1('4') und 2('0') beachten
+    boolean urlFound = false;
+    List list = record.getVariableFields( "856" );
+    Iterator urlFields = list.iterator();
+    while( urlFields.hasNext() ) {
+        DataField dataField = (DataField) urlFields.next();
+        urlFound = dataField.getIndicator1() == '4';
+        if( urlFound ) break;
+    }
+    if( !urlFound ) return "";
+
+    URL url = new URL( baseURL + "/" + finc_id);
+    URLConnection urlConnection = url.openConnection();
+
+    InputStreamReader in = new InputStreamReader( urlConnection.getInputStream(), "UTF-8" );
+
+    StringBuilder builder = new StringBuilder();
+
+    int c = 0;
+    char[] buff = new char[1024 * 8];
+
+    while( ( c = in.read( buff, 0, buff.length ) ) > 0 ) {
+        builder.append( buff, 0, c );
+    }
+
+    in.close();
+    in = null;
+
+    String text = builder.toString();
+    if ( text.length() > 0) {
+        logger.info( "SWB+ FULLTEXT: record_id => " + record_id + ", finc_id => " + finc_id + " => " + ( text.length() <= 80 ? text : text.substring( 0, 80 )));
+    }
+
+    return text;
+
+}
diff --git a/import/index_scripts/getGnd.bsh b/import/index_scripts/getGnd.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..f1c25736e9b2aa31ec57e156e2eede293c96ea44
--- /dev/null
+++ b/import/index_scripts/getGnd.bsh
@@ -0,0 +1,128 @@
+/**
+ * Ticket Allgemein #1750
+ *
+ * Beanshell zum Befüllen vorbereiten, dabei müssen wir flexibel versch. Datenquellen abfragen 
+ * speziell GND und DBpedia, ich habe mappings ;-) * zB Titel, die "118540238" im author_id haben,
+ * können "4053309-8" in connotation_id bekommen, siehe RDF Link in http://d-nb.info/gnd/118540238 *
+ * lokales Cache-System konzipieren, ich habe momentan einen mysql cache laufen,
+ * der genutzt werden kann performs some cool foo and then generates a lot of bar.
+ */
+
+import java.io.*;
+import java.net.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+static final Logger logger = Logger.getLogger("de.ubl.import.getGnd");
+org.solrmarc.index.SolrIndexer indexer = null;
+
+static final Matcher gndM = Pattern.compile( "gnd/(.+)$").matcher( "" );
+static final Matcher fieldM = Pattern.compile("\\(DE-588\\)(\\S+)$").matcher( "" );
+static final Matcher rm = Pattern.compile( "<dc:relation>(.+?)</dc:relation>", Pattern.MULTILINE).matcher( "" );
+
+/* Service URL */
+static final URL url = new URL( "http://139.18.19.243/lulknows/index.php" );
+
+/*
+ * Copyright (C) 2013 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+public Set getGnd(Record record) {  
+
+    logger.setLevel( Level.WARNING ); // FINE,INFO,ALL,WARNING and so on
+
+    Set result = new LinkedHashSet();
+
+    List gnd = record.getVariableFields("689");
+    Iterator gndIter = gnd.iterator();
+    if (gnd != null) {
+        while(gndIter.hasNext()) {
+            DataField gnd_df = (DataField) gndIter.next();
+            List subfields = gnd_df.getSubfields( '0' );
+            if ( subfields != null ) {
+                Iterator subfieldsIter = subfields.iterator();
+                while( subfieldsIter.hasNext() ) {
+                    String data = subfieldsIter.next().getData();
+                    fieldM.reset( data.trim() );
+                    if( fieldM.find() ) {
+                        result.add( fieldM.group( 1 ) );
+                    }
+                }
+            }
+        }
+    }
+
+    if( result.isEmpty() ) { return result; }
+
+    // sort for cache
+    result = new TreeSet( result );
+    logger.info( "GND: search for => " + result );
+
+    StringBuilder queryList = new StringBuilder();
+    for ( String GND : result ) {
+        queryList.append( queryList.length() == 0 ? "" : "," ).append(GND);
+    }
+
+    result.clear();
+    
+    StringBuilder xml = new StringBuilder();
+
+    HttpURLConnection con = (HttpURLConnection)url.openConnection();
+    con.setRequestMethod( "POST" );
+    con.setDoInput( true );
+    con.setDoOutput( true );
+    con.setUseCaches( false );
+    con.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded" );
+
+    OutputStreamWriter writer = new OutputStreamWriter( con.getOutputStream() );
+
+    writer.write( "template=finc_solr_context&gnd=" + queryList.toString());
+    writer.flush();
+
+    String line;
+    BufferedReader reader = new BufferedReader( new InputStreamReader( con.getInputStream() ) );
+    while ((line = reader.readLine()) != null) {
+      xml.append( line ).append( System.getProperty( "line.separator" ) );
+    }
+    writer.close();
+    reader.close();
+
+    con.disconnect();
+
+    // REGEX Methode
+    rm.reset( xml.toString() );
+    while( rm.find() ) {
+        gndM.reset( rm.group( 1 ) );
+        if( gndM.find() && result.add( gndM.group( 1 )) ) {}
+    }
+    
+    if( !result.isEmpty() ) logger.info( "GND: got gnd => " + result );
+    
+    return result;
+}
\ No newline at end of file
diff --git a/import/index_scripts/getInstitution.bsh b/import/index_scripts/getInstitution.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..fb7cc876b0aa2035e262f708b8b06c16c87107c3
--- /dev/null
+++ b/import/index_scripts/getInstitution.bsh
@@ -0,0 +1,117 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.getinstitution");
+static final HashMap patternCache = new HashMap();
+
+/*
+ * Copyright (C) 2013 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Ticket #2048, mdma: ansigeln via mddb3
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+public Set getInstitution( Record record ) {
+    
+    logger.setLevel(Level.WARNING); // WARNING,FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    Set result = new LinkedHashSet();
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR gI reading config file (getInstitution)");
+                return(result);
+            }
+            String sDbUrl=properties.getProperty("DatabaseUrl");
+            String sUsr=properties.getProperty("DatabaseUser");
+            String sPwd=properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT gI to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    "SELECT DISTINCT(isil) " +
+                    "FROM sigels " + 
+                    "WHERE finc_id = ?"
+                );
+                logger.info("CONNECT gI OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR gI create database connection: " + e.getMessage());
+                return(result);
+            }
+            logger.info("CONNECT gI to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN gI statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT gI from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+      
+    String finc_id = indexer.getFirstFieldVal(record, "001");
+
+    ResultSet          rs = null;
+
+    try {
+
+        st.setLong( 1, Long.valueOf(finc_id) );
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            if( rs.getString(1) == null ) continue;
+            result.add(rs.getString(1));
+        }
+
+    } catch( Exception ex ) {
+        logger.severe( "ERROR gI => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    logger.info( "Institution: " + finc_id + " => " + result);
+
+    return result;
+}
diff --git a/import/index_scripts/getItemData.bsh b/import/index_scripts/getItemData.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..ed28564857451f886c1ca3d151d6fe9bb9d058a0
--- /dev/null
+++ b/import/index_scripts/getItemData.bsh
@@ -0,0 +1,141 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null;
+static final Logger logger  = Logger.getLogger("de.ubl.import.getitemdata");
+static Pattern isilPattern;
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hospe that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+/**
+* Ticket #2648
+* Ticket #3962
+*
+*/
+public Set getItemData( Record record, String namespace, String isilRegex ) {  
+
+    logger.setLevel(Level.WARNING); // WARNING,FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    Set result = new LinkedHashSet();
+
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+    if(source_id == null || !source_id.equals("0")) {
+        return result; 
+    }
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR gID reading config file (getItemData)");
+                return result;
+            }
+            String sDbUrl=properties.getProperty("DatabaseUrl");
+            String sUsr=properties.getProperty("DatabaseUser");
+            String sPwd=properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT gID to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    "SELECT   sigel,barcode,call_number " +
+                    "FROM     item " + 
+                    "WHERE    finc_id = ? " +
+                    "ORDER BY sigel"
+                );
+                logger.info("CONNECT gID OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR gID create database connection: " + e.getMessage());
+                return result;
+            }
+            logger.info("CONNECT gID to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN gID statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT gID from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+            isilPattern = Pattern.compile(isilRegex);
+        }
+    }
+
+    String finc_id  = indexer.getFirstFieldVal(record, "001");
+    Long fincNumber = Long.valueOf(finc_id);
+    ResultSet    rs = null;
+
+    try {
+        Matcher m = isilPattern.matcher("");
+        HashMap sigelMap = new HashMap();
+        st.setLong( 1, fincNumber);
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            m.reset( rs.getString(1) );
+            if( m.find()) {
+                String value = "";
+                switch ( namespace ) {
+                    case "barcode" :
+                        value = rs.getString(2); // barcode
+                        break;
+                    case "signatur" :
+                        value = rs.getString(3); // call_number
+                        break;
+                    default :
+                        throw new Exception( "Unknown namespace " + namespace);
+                }
+                result.add( "(" + rs.getString(1) + ")" + value);
+            }
+        }
+        try { rs.close(); } catch( Exception ex ) {}
+        logger.info( "gID: " + namespace + " => " + result);
+    } catch( Exception ex ) {
+        logger.severe( "ERROR gID => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getItemDataJSON.bsh b/import/index_scripts/getItemDataJSON.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..ab7d82f7a5f79202643d66c93faf3be33e862fc4
--- /dev/null
+++ b/import/index_scripts/getItemDataJSON.bsh
@@ -0,0 +1,136 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import com.google.gson.Gson;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null;
+static final Logger logger  = Logger.getLogger("de.ubl.import.getitemdatajson");
+static final Gson gson      = new com.google.gson.GsonBuilder().create();
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hospe that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+/**
+* Ticket #2648, #3962
+*
+*/
+public String getItemDataJSON( Record record ) {  
+    
+    logger.setLevel(Level.WARNING); // WARNING,FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    String result = "";
+
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+    if(source_id == null || !source_id.equals("0")) {
+        return result; 
+    }
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR gIDJ reading config file (getItemDataJSON)");
+                return result;
+            }
+            String sDbUrl=properties.getProperty("DatabaseUrl");
+            String sUsr=properties.getProperty("DatabaseUser");
+            String sPwd=properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT gIDJ to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    "SELECT   sigel,barcode,call_number " +
+                    "FROM     item " + 
+                    "WHERE    finc_id = ? " +
+                    "ORDER BY sigel"
+                );
+                logger.info("CONNECT gIDJ OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR gIDJ create database connection: " + e.getMessage());
+                return result;
+            }
+            logger.info("CONNECT gIDJ to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN gIDJ statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT gIDJ from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+
+    String finc_id  = indexer.getFirstFieldVal(record, "001");
+    Long fincNumber = Long.valueOf(finc_id);
+    ResultSet    rs = null;
+
+    try {
+
+        HashMap sigelMap = new HashMap();
+        st.setLong( 1, fincNumber);
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            List itemList = sigelMap.get( rs.getString(1) );
+            if( itemList == null ) {
+                itemList = new ArrayList();
+                sigelMap.put( rs.getString(1), itemList);
+            }
+            HashMap bccn = new HashMap();
+            bccn.put( "bc", rs.getString(2) );
+            bccn.put( "cn", rs.getString(3) );
+            itemList.add( bccn );
+            // logger.info("ADDING gID : " + rs.getString(1));
+        }
+        try { rs.close(); } catch( Exception ex ) {}
+        result = gson.toJson( sigelMap );
+        logger.info( result );
+    } catch( Exception ex ) {
+        logger.severe( "ERROR gIDJ => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getParentData.bsh b/import/index_scripts/getParentData.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..75e91efb419f5fe4750fa0ae9035a0cd74fe9989
--- /dev/null
+++ b/import/index_scripts/getParentData.bsh
@@ -0,0 +1,172 @@
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cn = null;
+static PreparedStatement st = null;
+static final Logger logger  = Logger.getLogger("de.ubl.import.getparentdata");
+static Pattern isilPattern;
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hospe that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Finc Team
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+/**
+* Ticket #4087
+* 
+* # marc_local.properties:
+* hierarchytype="series" // todo
+* hierarchy_top_id       = script(getParentData.bsh), getParentData(parent_id)
+* hierarchy_top_title    = script(getParentData.bsh), getParentData(parent_title)
+* hierarchy_parent_id    = script(getParentData.bsh), getParentData(parent_id)
+* hierarchy_parent_title = script(getParentData.bsh), getParentData(parent_title)
+* # hierarchy_sequence =
+* is_hierarchy_id        = script(getParentData.bsh), getParentData(is_hierarchy_id)
+* is_hierarchy_title     = script(getParentData.bsh), getParentData(is_hierarchy_title)
+* 
+*/
+public Set getParentData( Record record, String attribute ) {  
+
+    logger.setLevel(Level.WARNING); // WARNING,FINE,INFO,ALL and so on
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    Set result = new LinkedHashSet();
+
+    String source_id = indexer.getFirstFieldVal(record, "980b");
+    if(source_id == null || !source_id.equals("0")) {
+        return result; // todo: open up
+    }
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            String ppPath = vufindHome + "/import/index_scripts/mddb.conf";            
+            try {
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR (getParentData) cannot read " + ppPath);
+                return result;
+            }
+            String sDbUrl=properties.getProperty("DatabaseUrl");
+            String sUsr=properties.getProperty("DatabaseUser");
+            String sPwd=properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT getParentData to " + sDbUrl);
+                cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                st = cn.prepareStatement(
+                    //"select lpad(t.finc_id,10,0), t.title from parents p, finc_mapping f, parent_titles t where t.finc_id=f.finc_id and f.source_id=p.parent_source_id and f.record_id=p.parent_record_id and p.finc_id=?"
+                    "select lpad(t.finc_id,10,0), t.title, f.finc_id, null from parents p, finc_mapping f, parent_titles t where t.finc_id=f.finc_id and f.source_id=p.parent_source_id and f.record_id=p.parent_record_id and p.finc_id=? UNION select distinct null,null,null,lpad(f.finc_id,10,0) from parents p, finc_mapping f where f.source_id=p.parent_source_id and f.record_id=p.parent_record_id and f.finc_id=?"
+                    // result set has entries when there are parents involved, ie when there's hierarchy. rs(4) is null when current finc_id has no parents but is parent (rs(4) actually not needed).
+                );
+                logger.info("CONNECT getParentData OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR getParentData create database connection: " + e.getMessage());
+                return result;
+            }
+            logger.info("CONNECT getParentData to " + sDbUrl);
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN getParentData statement");
+                    try { if( null != st ) st.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT getParentData from " + sDbUrl);
+                    try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+
+    String is_hierarchy_title = indexer.getFirstFieldVal(record, "245ab");
+    String finc_id  = indexer.getFirstFieldVal(record, "001");
+    Long fincNumber = Long.valueOf(finc_id);
+    ResultSet    rs = null;
+
+    try {
+        st.setLong( 1, fincNumber);
+        st.setLong( 2, fincNumber);
+        rs = st.executeQuery();
+        while( rs.next() ) {
+            String value = "";
+            switch ( attribute ) {
+                case "parent_id" :
+                    value = rs.getString(1); // finc_id
+                    break;
+                case "parent_title" :
+                    value = rs.getString(2); // title
+                    break;
+                case "is_hierarchy_id" :
+                    // value = rs.getString(4); // returns current finc_id (001) iff we are parent
+                    // if (rs.wasNull()) {
+                    //     value = "";
+                    value = finc_id; // we have result set so there's hierarchy
+                    break;
+                case "is_hierarchy_title" :
+                    //value = rs.getString(4); // returns current finc_id (001) iff we are parent
+                    //if (rs.wasNull()) {
+                    value = is_hierarchy_title;
+                    break;
+                case "hierarchy_top_id" :
+                    //value = rs.getString(4); // returns current finc_id (001) iff we are parent
+                    value = rs.getString(1); // parent finc_id
+                    if (rs.wasNull()) {
+                        value = finc_id;
+                    }
+                    break;
+                case "hierarchy_top_title" :
+                    //value = rs.getString(4); // returns current finc_id (001) iff we are parent
+                    value = rs.getString(1); // parent finc_id
+                    if (rs.wasNull()) {
+                        value = is_hierarchy_title;
+                    }
+                    break;
+                default :
+                    throw new Exception( "Unknown attribute " + attribute);
+            }
+            if (value != null) {
+                result.add(value);
+            }
+        }
+        try { rs.close(); } catch( Exception ex ) {}
+        logger.info( "getParentData: " + attribute + " => " + result);
+    } catch( Exception ex ) {
+        logger.severe( "ERROR getParentData => " + ex.getMessage() );
+    } finally {
+        try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getPublishDateSort.bsh b/import/index_scripts/getPublishDateSort.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..d21b787cc6c889dd751b5ccf0b7d9eab062288c5
--- /dev/null
+++ b/import/index_scripts/getPublishDateSort.bsh
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2014 finc team, team@finc.info
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import java.io.*;
+import java.sql.*;
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.getpublishdatesort");
+
+static final Matcher dm = Pattern.compile("^\\d{4}$").matcher( "" );
+static final Matcher dateMatcher = Pattern.compile("^\\d{2}[^0-9][^0-9]$").matcher( "" );
+static final Matcher date260cMatcher = Pattern.compile("(\\d{2}[0-9a-zA-Z][0-9a-zA-Z])").matcher( "" );
+
+static final Properties properties = new Properties();
+static final String sDbDrv = "com.mysql.jdbc.Driver";
+static Connection cnPDS = null;
+static PreparedStatement stPDS = null;
+
+/**
+* Ticket Allgemein #1748
+*
+* Datum z.B. '19uu' nach '1999'.
+*/
+public String getPublishDateSort(Record record) {
+
+    logger.setLevel( Level.WARNING ); // FINE,INFO,ALL,WARNING and so on
+
+    returndate = "";
+
+    ControlField fixedField = (ControlField) record.getVariableField("008");
+    if (fixedField != null) {
+        String val = fixedField.getData();
+        if( val != null) {
+            String date = val.substring( 7, 11 );
+            if( dm.reset( date ).find()) {
+                logger.info( "NEW publishDateSort 008 exact match => " + date );
+                returndate = date;
+            } else if( dateMatcher.reset( date ).find() ) { // ..uu pattern
+                logger.info( "publishDateSort 008 GESAMTAUFNAHME");
+                String db = getPublishDateSortDB( record );
+                if( db.isEmpty() ) return date.replaceAll( ".{2}$" , "99" );
+                returndate = db;
+            } else { // match field 260 c, see #2258
+                List fields = record.getVariableFields( "260" );
+                List result = new ArrayList();
+                if (fields != null) {
+                    Iterator fieldsIter = fields.iterator();
+                    while( fieldsIter.hasNext() ) {
+                        DataField dataField = (DataField) fieldsIter.next();
+                        List subfields = dataField.getSubfields( 'c' );
+                        Iterator subfieldsIter = subfields.iterator();
+                        if( subfields != null ) {
+                            if( subfieldsIter.hasNext() ) {
+                                String data = subfieldsIter.next().getData();
+                                if( data != null && date260cMatcher.reset( data ).find() ) {
+                                    result.add( date260cMatcher.group( 1 ) );
+                                }
+                            }
+                        }
+                    }
+                }
+                if( result.size() > 0 ) {
+                    Collections.sort( result);
+                    logger.info( "NEW publishDateSort 260c '" + date + "' => " + result.get( 0 ) );
+                    returndate = result.get( 0 );
+                }
+            }
+        }
+    }
+    // Ticket #2966
+    year_current = Calendar.getInstance().get(Calendar.YEAR);
+    String maxokyear = (year_current + 2).toString();
+    logger.info(year_current + " " + maxokyear + " " + returndate + " " + returndate.compareTo(maxokyear));
+    if (returndate.compareTo(maxokyear) <= 0) { // year+2 ok
+        return returndate;
+    } else {
+        logger.warning("publishDateSort ignoring future value of " + returndate);
+    }
+    return "";
+}
+
+/*
+* Allgemein #2330
+* Gesamtaufnahmen erhalten für die Sortierung das Datum des ältesten Bandes
+*
+* *** NUR BEI SOURCE ID 0 ***
+*/
+private String getPublishDateSortDB( Record record ) {
+
+    String vufindHome = System.getenv( "VUFIND_HOME_SOLR4" );
+    if (vufindHome == null) {
+        vufindHome = "";
+    }
+
+    String result = "";
+
+    String source_id = indexer.getFirstFieldVal( record, "980b" );
+    String record_id = indexer.getFirstFieldVal( record, "980a");
+
+    if( source_id == null || !source_id.equals( "0" ) ) {
+        return( result ); 
+    }
+
+    synchronized(properties) {
+        if(properties.size() == 0) {
+            Class.forName( sDbDrv );
+            try {
+                String ppPath = vufindHome + "/import/index_scripts/mddb.conf";
+                properties.load(new FileInputStream( ppPath ));
+                properties.put("LOAD","true");
+            } catch (IOException e) {
+                logger.severe("ERROR 'getPublishedDateSortDB' reading config file (getItemData)");
+                return(result);
+            }
+            String sDbUrl = properties.getProperty("DatabaseUrl");
+            String sUsr   = properties.getProperty("DatabaseUser");
+            String sPwd   = properties.getProperty("DatabasePassword");
+            try {
+                logger.info("CONNECT 'getPublishedDateSortDB' to " + sDbUrl);
+                cnPDS = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
+                stPDS = cnPDS.prepareStatement(
+                    "SELECT MIN(year) " +
+                    "FROM   parents " +
+                    "WHERE  parent_record_id = ?"
+                );
+                logger.info("CONNECT 'getPublishedDateSortDB' OK => " + sDbUrl);
+            } catch(Exception e) {
+                logger.severe("ERROR 'getPublishedDateSortDB' create database connection: " + e.getMessage());
+                return(result);
+            }
+            logger.info( "CONNECT 'getPublishedDateSortDB' to " + sDbUrl );
+            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+                public void run() {
+                    logger.info("SHUTTING DOWN 'getPublishedDateSortDB' statement");
+                    try { if( null != stPDS ) stPDS.close(); } catch( Exception ex ) {}
+                    logger.info("DISCONNECT 'getPublishedDateSortDB' from " + sDbUrl);
+                    try { if( null != cnPDS ) cnPDS.close(); } catch( Exception ex ) {}
+                }
+            }));
+        }
+    }
+
+    // logger.info("CHECKING 'getPublishedDateSortDB', RECORD_ID => " + record_id);
+
+    ResultSet          rsPDS = null;
+
+    try {
+
+        stPDS.setString( 1, "(DE-576)" + record_id );  // ist immer Sigel DE-576
+        stPDS.setString( 1, record_id ); // #4087
+        rsPDS = stPDS.executeQuery();
+        if( rsPDS.next() ) {
+            String minYear = rsPDS.getString( 1 );
+            if( minYear != null ) {
+                result = minYear;
+                logger.info( "getPublishedDateSortDB - ADDING : " + record_id + ", YEAR => " + minYear );
+            } else { result = ""; }
+        } else {
+            result = "";
+        }
+        rsPDS.close(); rsPDS = null;
+
+    } catch( Exception ex ) {
+        logger.severe( "ERROR 'getPublishedDateSortDB' => " + ex.getMessage() );
+    } finally {
+        if( rsPDS != null ) try { rsPDS.close(); } catch( Exception ex ) {}
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/getSuperMP.bsh b/import/index_scripts/getSuperMP.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..26d29735db3a86fbcb718d93631480a18707c07c
--- /dev/null
+++ b/import/index_scripts/getSuperMP.bsh
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import org.apache.commons.lang.StringUtils;
+import java.util.HashMap;
+
+
+public Set getSuperMP(Record record, String fieldnums) {
+
+    Set retval = new LinkedHashSet();
+
+    //HashMap<String, String> resvalues = new HashMap<String, String> ();
+    HashMap resvalues = new HashMap();
+    //HashMap<String, Integer> resscores = new HashMap<String, Integer> ();
+    HashMap resscores = new HashMap();
+
+    String value;
+    String id;
+    Integer score;
+    Integer cscore;
+
+    String[] fields=fieldnums.split(":");
+
+    for(int i =0; i < fields.length ; i++) {
+        field=fields[i];
+
+        fnum=field.substring(0,3);
+        fsfc=field.substring(3,4);
+
+        List fs = record.getVariableFields(fnum);
+        Iterator fsI = fs.iterator();
+
+        if (fs != null) {
+            DataField df;
+            while(fsI.hasNext()) {
+                df = (DataField) fsI.next();
+
+                Subfield fw = df.getSubfield('w');
+                if (fw == null) { // qucosa
+                    fw = df.getSubfield('6');
+                }
+                if (fw != null) {
+                    Subfield fsubany = df.getSubfield(fsfc.charAt(0));
+                    if(fsubany != null) {
+                        value=fsubany.getData().trim();
+                        id=fw.getData().replaceAll("^\\([^\\)]+\\)","");
+                        score=StringUtils.countMatches(value,",");
+
+                        if(resvalues.containsKey(id)) {
+                            cscore=resscores.get(id);
+                            if(cscore>score) {
+                                // System.out.println(">>> skipping: "+fnum+fsfc+": "+value);
+                                continue;
+                            }
+                        }
+                        // System.out.println(">>> choosing: "+fnum+fsfc+": "+value);
+                        resvalues.put(id,value);
+                        resscores.put(id,score);
+                    }
+                }
+            }
+        }
+    }
+    
+    for (String key : resvalues.keySet()) {
+        value="("+key+")"+resvalues.get(key);
+        // System.out.println(">>> adding: "+value);
+        retval.add(value);
+    }
+    
+    return retval;
+}
+
+
diff --git a/import/index_scripts/imprint.bsh b/import/index_scripts/imprint.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..d0c71cd533210fa7df6cbcd8fdb4bc2bccb68707
--- /dev/null
+++ b/import/index_scripts/imprint.bsh
@@ -0,0 +1,54 @@
+/**
+ * Custom 260abc script
+ *
+ */
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+/**
+ * Read first values of 260abc.
+ * Ticket #3314
+ *
+ * @param  Record    record
+ * @return String    of first 260: first a, first b, first c
+ */
+
+static final Logger logger = Logger.getLogger("de.ubl.import.imprint");
+
+public String getImprint(Record record) {
+
+    // logger.setLevel( Level.INFO );
+
+    char[] subfield_codes = new char[]{'a', 'b', 'c'};
+    List result_parts = new ArrayList();
+    List fields = record.getVariableFields("260");
+    Iterator fieldsIter = fields.iterator();
+    if (fields != null) {
+        DataField df;
+        while(fieldsIter.hasNext()) {
+            df = (DataField) fieldsIter.next();
+            for (char subfield_code : subfield_codes) {
+                List subfields = df.getSubfields(subfield_code);
+                Iterator subfieldsIter = subfields.iterator();
+                if (subfields != null) {
+                    while (subfieldsIter.hasNext()) {
+                        String val = subfieldsIter.next().getData();
+                        // logger.info("imprint val: " + val);
+                        result_parts.add(val);
+                        break; // first subfield value only
+                    }
+                }
+            }
+            // break; // first 260 field only
+            return StringUtils.join(result_parts, " ");
+        }
+    }
+    return null;
+}
diff --git a/import/index_scripts/ismn.bsh b/import/index_scripts/ismn.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..bf8def4e1b40182852b310cb7513c57f5a5b30f9
--- /dev/null
+++ b/import/index_scripts/ismn.bsh
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.ismn");
+
+/**
+* Da in dem Feld '024a' aber auch allerhand andere Sachen stehen (können) -
+* siehe Ticket #1538 -, müssen wir genauer unterscheiden.
+* Das Beanshell soll den Inhalt von 024a zurückliefern unter folgender
+* Bedingung: 1. Indikator = 2
+*/
+public String getIsmn( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+    List fields = record.getVariableFields( "024" );
+    if (fields != null) {
+        Iterator fieldsIter = fields.iterator();
+        while( fieldsIter.hasNext() ) {
+            DataField dataField = (DataField) fieldsIter.next();
+            List subfields = dataField.getSubfields( 'a' );
+            if( subfields != null && !subfields.isEmpty() && dataField.getIndicator1() == '2') {
+                Iterator subfieldsIter = subfields.iterator();
+                if( subfields != null ) {
+                    if( subfieldsIter.hasNext() ) {
+                        String data = subfieldsIter.next().getData().toLowerCase();
+                        String record_id = indexer.getFirstFieldVal( record, "980a" );
+                        logger.info( "FOUND ISMN record_id => " + record_id + ", ismn => " + data);
+                        return data;
+                    }
+                }
+            }
+        }
+    }
+
+    return "";
+}
diff --git a/import/index_scripts/mddb.conf b/import/index_scripts/mddb.conf
new file mode 100644
index 0000000000000000000000000000000000000000..daa801789fd0b4126f1a8d1cb9c62ef88e05da6b
--- /dev/null
+++ b/import/index_scripts/mddb.conf
@@ -0,0 +1,4 @@
+DatabaseUrl = jdbc:mysql://172.18.113.101:3306/mddb3
+DatabaseUser = vufind2
+DatabasePassword = vufind2
+
diff --git a/import/index_scripts/mddb.conf_default b/import/index_scripts/mddb.conf_default
new file mode 100644
index 0000000000000000000000000000000000000000..564099d6d05024e32d59dc4bd56fe768e2282651
--- /dev/null
+++ b/import/index_scripts/mddb.conf_default
@@ -0,0 +1,4 @@
+DatabaseUrl = jdbc:mysql://localhost:3306/mddb3
+DatabaseUser = USER
+DatabasePassword = PASS
+
diff --git a/import/index_scripts/mddb.conf_finc_hw1 b/import/index_scripts/mddb.conf_finc_hw1
new file mode 100644
index 0000000000000000000000000000000000000000..1344411b326ec0563b4fd49c7714374d96b76c05
--- /dev/null
+++ b/import/index_scripts/mddb.conf_finc_hw1
@@ -0,0 +1,4 @@
+DatabaseUrl = jdbc:mysql://172.18.85.101:3306/mddb
+DatabaseUser = mddb
+DatabasePassword = mddb
+
diff --git a/import/index_scripts/mega_collection.bsh b/import/index_scripts/mega_collection.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..ffc2e0b4ec82b8ed13bf54a43de4b51ac6e95dde
--- /dev/null
+++ b/import/index_scripts/mega_collection.bsh
@@ -0,0 +1,96 @@
+import org.marc4j.marc.Record;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @author   Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.getMegaCollection");
+
+public Set getMegaCollection(Record record) {
+
+    logger.setLevel( Level.WARNING ); // FINE,INFO,ALL,WARNING and so on
+
+    Set result = new LinkedHashSet();
+
+    String sid = indexer.getFirstFieldVal(record, "980b");
+    String rid = indexer.getFirstFieldVal(record, "980a");
+
+    List list = record.getVariableFields("912");
+    if( list != null && list.size() > 0 ) {
+        for( Object df_obj : list ) {
+            DataField df = (DataField)df_obj;
+            Subfield sbData = df.getSubfield( 'a' );
+            if ( sbData != null ) {
+                String data = sbData.getData();
+                data = data.trim();
+                // Ticket #1629: 912a=qucosa could be in sid 0, 8, 13 (22)
+                // check 912a for qucosa in any sid
+                if ( data.equals( "qucosa" ) || data.equals( "KEY" ) ) {
+                    logger.info( "QUCOSA => " + rid + " - " + data );
+                    result.add( data );
+                }
+                if ( sid.equals( "17" ) ) {
+                    result.add( data );
+                }
+            }
+        }
+    }
+
+    if ( sid.equals( "0") ) {
+
+        // Tickets #1565, #2038, #2399
+        // multiple 935 possible
+        List list935 = record.getVariableFields("935");
+        if( list935 != null && list935.size() > 0 ) {
+            for( Object df_obj : list935 ) {
+                DataField df = (DataField)df_obj;
+                Subfield sbData = df.getSubfield( 'a' );
+                if ( sbData != null ) {
+                    String data = sbData.getData();
+                    data = data.trim();
+                    if ( data.equals("TRCS") || data.equals("AMSP") ) {
+                        logger.info("935a => " + data);
+                        result.add(data);
+                    }
+                }
+            }	
+        }
+
+        // Ticket #1773, safe to assume single 971
+        String val = indexer.getFirstFieldVal( record, "971p" );
+        if ( val != null && val.equals( "pdam" ) ) {
+            logger.info( "971p => " + val );
+            result.add( val );
+        }
+
+    }
+
+    result.add( sid );
+    return result;
+}
diff --git a/import/index_scripts/misc_del152.bsh b/import/index_scripts/misc_del152.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..623951b3782cf12635225d412f5258d3a7e9aecc
--- /dev/null
+++ b/import/index_scripts/misc_del152.bsh
@@ -0,0 +1,85 @@
+        /*
+ * Copyright (C) 2013 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.miscdel52");
+
+/**
+* Allgemein #1680
+* Beanshell (neu) für misc_del152
+* Wenn source_id = 15, dann gib den Inhalt von 590 $b zurück. Und 590 $a. #872
+* Wenn source_id = 21 und 655 $2 = DE-Wim8, dann gib den Inhalt von 655 $a zurück.
+*/
+public Set misc_del152( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+    Set result = new LinkedHashSet();
+    String source_id = indexer.getFirstFieldVal( record, "980b" );
+
+    if( source_id.equals( "15" ) ) {
+        List fs = record.getVariableFields("590");
+        Iterator fsIter = fs.iterator();
+        if (fs != null) {
+            while(fsIter.hasNext()) {
+                DataField df = (DataField) fsIter.next();
+                if (df.getSubfield('a') != null){
+                    String value = df.getSubfield('a').getData().trim();
+                    result.add( value );
+                }
+                if (df.getSubfield('b') != null){
+                    String value = df.getSubfield('b').getData().trim();
+                    result.add( value );
+                }
+            }
+        }
+    } else if( source_id.equals( "21" ) ) {
+        List rvk = record.getVariableFields("655");
+        Iterator rvkIter = rvk.iterator();
+        if (rvk != null) {
+            while(rvkIter.hasNext()) {
+                DataField rvk_df = (DataField) rvkIter.next();
+                if ( rvk_df.getSubfield( '2' ) != null ) {
+                    if ( rvk_df.getSubfield( '2' ).getData().equals( "DE-Wim8" ) ) {
+                        if ( rvk_df.getSubfield( 'a' ) != null ) {
+                            String value = rvk_df.getSubfield('a').getData().trim();
+                            logger.info( "MISCDEL152 655a => " + value);
+                            result.add( value );
+                        }
+                    } 
+                }
+            }
+        }
+    }
+    
+    if( result.isEmpty() ) { result.add( "" ); } // leer
+
+    return result;
+}
\ No newline at end of file
diff --git a/import/index_scripts/purchaseInfo.bsh b/import/index_scripts/purchaseInfo.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..841c669fe3d15589432c1daf5f33bf68c4a4c664
--- /dev/null
+++ b/import/index_scripts/purchaseInfo.bsh
@@ -0,0 +1,72 @@
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import org.marc4j.marc.Subfield;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/*
+ * Copyright (C) 2013 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.purchaseinfo");
+static final Map m = Collections.synchronizedMap( new LinkedHashMap() );
+
+/**
+ * Determine Record Format(s)
+ *
+ * @param  Record record
+ * @return Set of sigel
+ */
+public Set purchaseInfo( Record record ) {
+
+    logger.setLevel(Level.WARNING); // FINE,INFO,ALL and so on
+	
+    Set result = new LinkedHashSet();
+
+    if( m.size() == 0 ) {
+        logger.info( "PURCHASE INFO => init sigel map" );
+        m.put( "969m", "DE-15" );
+        m.put( "970m", "DE-L152" );
+        m.put( "971m", "DE-Ch1" );
+        m.put( "972m", "DE-105" );
+        m.put( "973m", "DE-520" );
+        m.put( "974m", "DE-L189" );
+        m.put( "975m", "DE-Zwi2" );
+        m.put( "976m", "DE-Zi4" );
+        m.put( "977m", "DE-D117" );
+        m.put( "978m", "DE-540" );
+        m.put( "979m", "DE-L242" );
+    }
+
+    for( String field : m.keySet() ) {
+        String e = indexer.getFirstFieldVal( record, field );
+        if(e != null && e.equals( "e" )) {
+            result.add( m.get( field ) );
+            logger.info( "PURCHASE INFO => added sigel " + m.get( field ) );
+        }
+    }
+
+    return result;
+}
diff --git a/import/index_scripts/rvk.bsh b/import/index_scripts/rvk.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..8736fa7ca3fc11fa1055a9236b1ff486eebb20bf
--- /dev/null
+++ b/import/index_scripts/rvk.bsh
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2012 finc team, team@finc.info
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   finc team
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import org.marc4j.marc.DataField;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+
+public Set getRvk(Record record){
+	Set result = new LinkedHashSet();
+	// DataField rvk = (DataField) record.getVariableField("084");
+	// DataField rvkSecond = (DataField) record.getVariableField("936");
+
+    // check if there's "rvk" in the 084 $2; ignore if it isn't
+	// return RVK-Notation from 084 $a
+	List rvk = record.getVariableFields("084");
+	Iterator rvkIter = rvk.iterator();
+    if (rvk != null) {
+		while(rvkIter.hasNext()) {
+            DataField rvk_df = (DataField) rvkIter.next();
+			if (rvk_df.getSubfield('2') != null){
+				if (rvk_df.getSubfield('2').getData().toLowerCase().contains("rvk")) {
+	    			// result.add(indexer.getFirstFieldVal(record, "084a"));
+					result.add(rvk_df.getSubfield('a').getData());
+				} 
+			}
+		}
+	}
+	
+	// In 936 stehen die gleichen RVK-Notationen, die sich schon in 084 finden.
+	// Sie sind lediglich durch Benennung und Identnummer ergänzt.
+	// Diese Notationen müssen also nicht zusätzlich
+	// check if there's 936 and return RVK-Notation from 936 $a
+/*    List fields = record.getVariableFields("936");
+    Iterator fieldsIter = fields.iterator();
+    if (fields != null) {
+		while(fieldsIter.hasNext()) {
+			result.add(indexer.getFirstFieldVal(record, "936a"));
+		}
+	}
+*/
+
+	if (!result.isEmpty()) {
+		return result;
+    }
+
+	// Nothing worked!
+	if (result.isEmpty()) {
+		result.add("No subject assigned");
+    }
+    return result;		
+}
diff --git a/import/index_scripts/signatur.bsh b/import/index_scripts/signatur.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..139a2b0fb8ba1b6e8cc50f910675b0746f67fd55
--- /dev/null
+++ b/import/index_scripts/signatur.bsh
@@ -0,0 +1,126 @@
+import org.marc4j.marc.Record;
+import org.marc4j.marc.ControlField;
+import org.marc4j.marc.DataField;
+import java.util.regex.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/*
+ * Copyright (C) 2012 Leander Seige, seige@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Leander Seige
+ * @author   Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+static final Logger logger = Logger.getLogger("de.ubl.import.format");
+
+public Set getSignatur(Record record) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+	Pattern pattern = Pattern.compile("^(.*):([^:]*)$");
+
+	Set result = new LinkedHashSet();
+
+	List fields,subfields;
+	Iterator fields_it,subfields_it;
+	DataField field;
+	String value,temp;
+	String[] values;
+
+	fields = record.getVariableFields("971");
+    if (fields != null) {
+        fields_it = fields.iterator();
+        while(fields_it.hasNext()) {
+            field = (DataField) fields_it.next();
+            subfields = field.getSubfields( 'j' );
+            if( subfields != null ) {
+                subfields_it= subfields.iterator();
+                while( subfields_it.hasNext() ) {
+                    value=subfields_it.next().getData();
+                    Matcher matcher = pattern.matcher(value);
+                    if( matcher.find() ) {
+                        for( int i = 1; i <= matcher.groupCount(); i++ ) {
+                            if( i > 1 ) {
+                                temp = "(DE-Ch1)" + matcher.group(i); 
+                                result.add(temp);
+                            }
+                        }
+                    }
+                    result.add(value);	
+                }
+            }
+        }
+    }
+
+	fields = record.getVariableFields("972");
+    if (fields != null) {
+        fields_it = fields.iterator();
+        while(fields_it.hasNext()) {
+            field = (DataField) fields_it.next();
+            subfields = field.getSubfields('i');
+            if (subfields != null) {
+                subfields_it= subfields.iterator();
+                while (subfields_it.hasNext()) {
+                    value=subfields_it.next().getData();
+                    result.add(value);
+                }
+            }
+        }
+    }
+
+	fields = record.getVariableFields("981");
+    if (fields != null) {
+        fields_it = fields.iterator();
+        while(fields_it.hasNext()) {
+            field = (DataField) fields_it.next();
+            subfields = field.getSubfields('a');
+            if (subfields != null) {
+                subfields_it= subfields.iterator();
+                while (subfields_it.hasNext()) {
+                    value = subfields_it.next().getData();
+                    result.add(value);
+                }
+            }
+        }
+    }
+
+    // #1302 - Zwickau Finc-Kategorie
+	fields = record.getVariableFields("975");
+    if (fields != null) {
+        fields_it = fields.iterator();
+        while(fields_it.hasNext()) {
+            field = (DataField) fields_it.next();
+            subfields = field.getSubfields('o');
+            if (subfields != null) {
+                subfields_it= subfields.iterator();
+                while (subfields_it.hasNext()) {
+                    value = subfields_it.next().getData();
+                    result.add( "(DE-Zwi2)" + value);
+                }
+            }
+        }
+    }
+
+    logger.info( "SIGNATUR => " + result);
+
+    return result;
+
+}
diff --git a/import/index_scripts/zdb.bsh b/import/index_scripts/zdb.bsh
new file mode 100644
index 0000000000000000000000000000000000000000..d81c0276c883fdf016798c839a7b8ca4e7b2f106
--- /dev/null
+++ b/import/index_scripts/zdb.bsh
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012 Polichronis Tsolakidis, tsolakidis@ub.uni-leipzig.de
+ * Leipzig University Library, Project finc
+ * http://www.ub.uni-leipzig.de
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ * @author   Polichronis Tsolakidis
+ * @license  http://opensource.org/licenses/gpl-3.0.html GNU General Public License
+ * @link     http://finc.info
+ */
+
+import org.marc4j.marc.Record;
+import java.util.*;
+import java.util.regex.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+org.solrmarc.index.SolrIndexer indexer = null;
+static final Logger logger = Logger.getLogger("de.ubl.import.zdb");
+static final Matcher m = Pattern.compile( "ZDB(.+)$" ).matcher( "" );
+
+public String getZdb( Record record ) {
+
+    logger.setLevel( Level.WARNING ); // WARNING,FINE,INFO,ALL and so on
+
+    String zdbString = indexer.getFirstFieldVal( record, "035a" );
+
+    if( zdbString != null ) {
+        zdbString = zdbString.trim();
+        if( zdbString.length() > 0 ) {
+            m.reset( zdbString );
+            if( m.find() ) {
+                String zdb = m.group( 1 );
+                String record_id = indexer.getFirstFieldVal(record, "980a");
+                logger.info( "ZDB record_id => " + record_id + ", zdb => " + zdb );
+                return zdb;
+            }
+        }
+    }
+
+    return "";
+}
diff --git a/import/lib/commons-lang3-3.3.2.jar b/import/lib/commons-lang3-3.3.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..bb069797f1d28d388a7711443b0da889d24f4bcd
Binary files /dev/null and b/import/lib/commons-lang3-3.3.2.jar differ
diff --git a/import/lib/gson-2.2.2.jar b/import/lib/gson-2.2.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f2108e00c632f672f108bf4d0282f5bcdb953307
Binary files /dev/null and b/import/lib/gson-2.2.2.jar differ
diff --git a/import/lib/sqlitejdbc-v053.jar b/import/lib/sqlitejdbc-v053.jar
new file mode 100644
index 0000000000000000000000000000000000000000..776fbe311c008d29e1cf9fd1a53c9cf76cf4e7fc
Binary files /dev/null and b/import/lib/sqlitejdbc-v053.jar differ
diff --git a/import/marc.properties b/import/marc.properties
index 458b7e2353dbc3db892448b5708c2868234ddbe4..ea5fc8140e86a4ac665d24a1ed603a4a4f76bc44 100644
--- a/import/marc.properties
+++ b/import/marc.properties
@@ -3,85 +3,86 @@
 #                    these settings, it is recommended that you edit          #
 #                    marc_local.properties to make upgrades simpler.          #
 ###############################################################################
+
 id = 001, first
-lccn = 010a, first
-ctrlnum = 035a
-collection = "Catalog"
-institution = "MyInstitution"
-building = "Library A"
+# lccn = 010a, first
+# ctrlnum = 035a
+### collection = "Catalog"
+### institution = "MyInstitution"
+### building = "Library A"
 
-fullrecord = FullRecordAsMarc
-recordtype = "marc"
-allfields = custom, getAllSearchableFieldsAsSet(100, 900)
+# fullrecord = FullRecordAsMarc
+recordtype = "marcremote"
+# allfields = custom, getAllSearchableFields(100, 900)
 
-language = 008[35-37]:041a:041d:041h:041j, language_map.properties
-format = custom, getFormat, format_map.properties
+### language = 008[35-37]:041a:041d:041h:041j, language_map.properties
+### format = custom, getFormat, format_map.properties
 
-author = 100abcd, first
-author_fuller = 100q, first
-author-letter = 100a,first
-author2 = 110ab:111ab:700abcd:710ab:711ab
-author2-role = 700e:710e
-author_additional = 505r
+### author = 100abcd, first
+### author_fuller = 100q, first
+### author-letter = 100a, first
+### author2 = 110ab:111ab:700abcd:710ab:711ab
+### author2-role = 700e:710e
+### author_additional = 505r
 
-title = 245ab, first
-title_sub = 245b, first
-title_short = 245a, first
-title_full = custom, getAllAlphaSubfields(245, first)
-title_auth = 245ab, first
-title_alt = 100t:130adfgklnpst:240a:246a:505t:700t:710t:711t:730adfgklnpst:740a
-title_old = 780ast
-title_new = 785ast
-title_sort = custom, getSortableTitle
-series = 440ap:800abcdfpqt:830ap
-series2 = 490a
+### title = 245ab, first
+### title_sub = 245b, first
+### title_short = 245a, first
+### title_full = custom, getAllAlphaSubfields(245, first)
+### title_auth = 245ab, first
+### title_alt = 130adfgklnpst:240a:246a:730adfgklnpst:740a
+### title_old = 780ast
+### title_new = 785ast
+### title_sort = custom, getSortableTitle
+### series = 440ap:800abcdfpqt:830ap
+### series2 = 490a
 
-publisher = custom, getPublishers
-publishDate = custom, getDates
-publishDateSort = custom, getFirstDate
+### publisher = 260b
+### publishDate = custom, getDate
+### publishDateSort = custom, getDate
 
-physical = 300abcefg:530abcd
+### physical = 300abcefg:530abcd
 dateSpan = 362a
 edition = 250a, first
-#description =
-contents = 505a:505t
+# description =
+### contents = 505a:505t
 
-isbn = 020a:773z
-issn = 022a:440x:490x:730x:773x:776x:780x:785x
+### isbn = 020a
+### issn = 022a:440x:490x:730x:776x:780x:785x
 
-callnumber = custom, getFullCallNumber(099ab:090ab:050ab)
-callnumber-a = 099a:090a:050a, first
-callnumber-first = 099a[0]:090a[0]:050a[0], callnumber_map.properties, first
-callnumber-first-code = 099a[0]:090a[0]:050a[0], first
-callnumber-subject = custom, getCallNumberSubject(090a:050a), callnumber_subject_map.properties
-callnumber-subject-code = custom, getCallNumberSubject(090a:050a)
-callnumber-label = custom, getCallNumberLabel(090a:050a)
+# callnumber = custom, getFullCallNumber(099ab:090ab:050ab)
+# callnumber-a = 099a:090a:050a, first
+# callnumber-first = 099a[0]:090a[0]:050a[0], callnumber_map.properties, first
+# callnumber-first-code = 099a[0]:090a[0]:050a[0], first
+# callnumber-subject = custom, getCallNumberSubject(090a:050a), callnumber_subject_map.properties
+# callnumber-subject-code = custom, getCallNumberSubject(090a:050a)
+# callnumber-label = custom, getCallNumberLabel(090a:050a)
 
-topic = custom, getAllSubfields(600:610:611:630:650:656, " ")
-genre = custom, getAllSubfields(655, " ")
-geographic = custom, getAllSubfields(651, " ")
-era = custom, getAllSubfields(648, " ")
+### topic = custom, getAllSubfields(600:610:611:630:650, " ")
+### genre = custom, getAllSubfields(655, " ")
+### geographic = custom, getAllSubfields(651, " ")
+### era = custom, getAllSubfields(648, " ")
 
-topic_facet = 600x:610x:611x:630x:648x:650a:650x:651x:655x
-genre_facet = 600v:610v:611v:630v:648v:650v:651v:655a:655v
-geographic_facet = 600z:610z:611z:630z:648z:650z:651a:651z:655z
-era_facet = 600d:610y:611y:630y:648a:648y:650y:651y:655y
+### topic_facet = 600x:610x:611x:630x:648x:650a:650x:651x:655x
+# genre_facet = 600v:610v:611v:630v:648v:650v:651v:655a:655v
+# geographic_facet = 600z:610z:611z:630z:648z:650z:651a:651z:655z
+### era_facet = 600d:610y:611y:630y:648a:648y:650y:651y:655y
 
-url = 856u:555u
+url = 856u
 
-illustrated = custom, isIllustrated
+### illustrated = custom, isIllustrated
 
-dewey-hundreds = custom, getDeweyNumber(082a:083a, 100), ddc22_map.properties(hundreds)
-dewey-tens = custom, getDeweyNumber(082a:083a, 10), ddc22_map.properties(tens)
-dewey-ones = custom, getDeweyNumber(082a:083a, 1), ddc22_map.properties(ones)
-dewey-full = custom, getDeweySearchable(082a:083a)
-dewey-sort = custom, getDeweySortable(082a:083a)
-dewey-sort-browse = custom, getDeweySortables(082a:083a)
-dewey-raw = 082a:083a
+### dewey-hundreds = custom, getDeweyNumber(082a:083a, 100), ddc22_map.properties(hundreds)
+### dewey-tens = custom, getDeweyNumber(082a:083a, 10), ddc22_map.properties(tens)
+### dewey-ones = custom, getDeweyNumber(082a:083a, 1), ddc22_map.properties(ones)
+### dewey-full = custom, getDeweySearchable(082a:083a)
+### dewey-sort = custom, getDeweySortable(082a:083a)
+### dewey-raw = 082a:083a, first
 
 # Extract the numeric portion of the OCLC number using a pattern map:
-oclc_num = 035a, (pattern_map.oclc_num)
-pattern_map.oclc_num.pattern_0 = \\([Oo][Cc][Oo][Ll][Cc]\\)[^0-9]*[0]*([0-9]+)=>$1
+oclc_num = 016a:035a, (pattern_map.oclc_num)
+pattern_map.oclc_num.pattern_0 = \\(OCoLC\\)[^0-9]*[0]*([0-9]+).*$=>$1
 pattern_map.oclc_num.pattern_1 = ocm[0]*([0-9]+)[ ]*[0-9]*=>$1
 pattern_map.oclc_num.pattern_2 = ocn[0]*([0-9]+).*=>$1
+# add - see http://vufind.org/jira/browse/VUFIND-685
 pattern_map.oclc_num.pattern_3 = on[0]*([0-9]+).*=>$1
diff --git a/import/marc_local.properties b/import/marc_local.properties
index 7e064492b1ae4bd77ef173b10b973910627728f9..6350824422319010996d35cda7e2dea1bf810d62 100644
--- a/import/marc_local.properties
+++ b/import/marc_local.properties
@@ -3,64 +3,246 @@
 #                          All settings in this file override equivalent      #
 #                          settings in marc.properties.                       #
 ###############################################################################
+##############################################
+# finc-spezifisch, bibliotheksuebergreifend
 
-# Uncomment the following settings to insert appropriate values for your site:
-#collection = "Catalog"
-#institution = "MyInstitution"
-#building = "Library A"
+# ID des Datensatzes innerhalb der Quelle
+record_id = 980a
+# ID der Quelle
+source_id = 980b
+# bibliographic level
+mrc0007=000[7]
+# category of material
+# mrc0070=007[0] first
+# collection / source_name
+mega_collection = script(mega_collection.bsh), getMegaCollection(), collection_map.properties
+authorized_mode = "true"
+# ISIL / internationales Bibiothekssigel
+# institution = 852a
+institution = script(getInstitution.bsh), getInstitution()
+rsn = 983a
+# Zugangsfacette - Unterscheidung zw. Online-Ressourcen und lokalen Bestaenden
+access_facet = script(format.bsh), getFormat, access_map.properties
+# IDs fuer Personen und Schlagw\u00c3\u00b6rter (Normdatenerweiterung)
+author_id = script(getFieldRegex.bsh), getFieldRegex("100:110:111:700:710:711","0","^\\(DE\\-588\\).*$","\\(DE\\-588\\)","")
+topic_id = script(getFieldRegex.bsh), getFieldRegex("600:610:611:648:650:651:689","0","^\\(DE\\-588\\).*$","\\(DE\\-588\\)","")
+# Normdaten :: Verweisungsformen
+author_ref = 900a
+author_corp_ref = 910a:911a
+topic_ref = 950a
+# MBW und Serien (..., #2063, #2418)
+multipart_set = 000[19]
+# multipart_set = 000[19]:000[7], multipart_set.properties, first
+multipart_link = 773w[8-16]:800w[8-16]:810w[8-16]:811w[8-16]:830w[8-16]:8306
+multipart_part = script(getSuperMP.bsh), getSuperMP("773q:800q:800g:773g:800v:810v:811v:830v:830g")
+# Erwerbungsinformation (#959)
+purchase = script(purchaseInfo.bsh), purchaseInfo()
 
-# Uncomment the following settings to use the .bsh scripts in import/scripts/
-# instead of the built-in SolrMarc functionality found in the .jar file.
-# (by default, the scripts have the same behavior as the built-in functions,
-# but the external scripts are easier to customize to your needs).
-#format = script(format.bsh), getFormat, format_map.properties
-#callnumber = script(callnumber.bsh), getFullCallNumber(099ab:090ab:050ab)
-#callnumber-subject = script(callnumber.bsh), getCallNumberSubject(090a:050a), callnumber_subject_map.properties
-#callnumber-subject-code = script(callnumber.bsh), getCallNumberSubject(090a:050a)
-#callnumber-label = script(callnumber.bsh), getCallNumberLabel(090a:050a)
-#publishDate = script(getdate.bsh), getDate
-#illustrated = script(illustrated.bsh), isIllustrated
-#dewey-hundreds = script(dewey.bsh), getDeweyNumber(082a:083a, 100), ddc22_map.properties(hundreds)
-#dewey-tens = script(dewey.bsh), getDeweyNumber(082a:083a, 10), ddc22_map.properties(tens)
-#dewey-ones = script(dewey.bsh), getDeweyNumber(082a:083a, 1), ddc22_map.properties(ones)
-#dewey-full = script(dewey.bsh), getDeweySearchable(082a:083a)
-#dewey-sort = script(dewey.bsh), getDeweySortable(082a:083a)
+##############################################
+# finc-spezifisch UND bibliotheksspezifisch
 
-# Uncomment the following lines to track history of indexing times for RSS feeds,
-# OAI-PMH server and other updates.  The parameter to these functions must be the 
-# same fieldspec as the id setting above!
-# IMPORTANT: Indexing this extra information will make extra database calls during
-#            the indexing process and will likely slow things down significantly.
-#first_indexed = custom, getFirstIndexed(001)
-#last_indexed = custom, getLastIndexed(001)
+# Sammelfeld fuer bibliotheksspezifische Informationen; Bsp. DE-CH1: Lizenzinformationen
+# misc_de15 = xxx
+misc_del152 = script(misc_del152.bsh), misc_del152
+misc_dech1 = 971g
+# misc-Feld f\u00fcr die TUF, enth\u00e4lt den Libero-Code f\u00fcr den Medientyp
+# (zur Darstellung der Icons in der Ergebnisliste)
+# misc_de105 = 972c # redundant to format_de105
+# misc_de520 = xxx
+# misc_del189 = xxx
+# misc_dezwi2 = xxx
+# misc_dezi4 = xxx
+# misc_ded117 = xxx
+# misc_de540 = xxx
+# misc_del242 = xxx
+# Zweigbibliothek - Kommentar entfernen, wenn Facettierung gewuenscht
+branch_de15 = script(getBranches.bsh), getBranches("^DE-15(-.+)?$"), branch_map_de15.properties
+# CH1 971a
+branch_dech1 = script(getBranches.bsh), getBranches("^DE-Ch1$"), branch_map_dech1.properties 
+# DE105 972a
+branch_de105 = script(getBranches.bsh), getBranches("^DE-105$"), branch_map_de105.properties
+branch_de520 = script(getBranches.bsh), getBranches("^DE-520$"), branch_map_de520.properties
+# branch_del189 = 974a
+# branch_dezwi2 = 975a
+branch_dezwi2 = script(getBranches.bsh), getBranches("^DE-Zwi2$"), branch_map_dezwi2.properties
+branch_dezi4 = script(getBranches.bsh), getBranches("^DE-Zi4$"), branch_map_dezi4.properties
+# branch_dezi4 = 976a
+# branch_ded117 = 977a
+# branch_de540 = 978a
+# branch_del242 = 979a
+# Standort/Literaturabteilung - Kommentar entfernen, wenn Facettierung gewuenscht
+collcode_de15 = 969b, collcode_map_de15.properties
+#collcode_dech1 = 971b, collcode_map_dech1.properties
+collcode_dech1 = script(getCollCode.bsh), getCollCodes(DE-Ch1), collcode_map_dech1.properties
+#collcode_de105 = 972b, collcode_map_de105.properties
+collcode_de105 = script(getCollCode.bsh), getCollCodes(DE-105), collcode_map_de105.properties
+collcode_de520 = script(getCollCode.bsh), getCollCodes(DE-520), collcode_map_de520.properties
+# collcode_del189 = 974b
+collcode_dezwi2 = script(getCollCode.bsh), getCollCodes(DE-Zwi2), collcode_map_dezwi2.properties
+# In Zittau basieren Zweigstelle und Collection Code auf den Libero-Zweigstellen, deshalb
+# verwenden wir ein Skript f\u00fcr beide Felder
+collcode_dezi4 = script(getBranches.bsh), getBranches("^DE-Zi4$"), collcode_map_dezi4.properties
+# collcode_dezi4 = 976b
+# collcode_ded117 = 977b
+# collcode_de540 = 978b
+# collcode_del242 = 979b
+# Format/Medientyp - Kommentar entfernen, wenn individuelle Formatfacettierung erwuenscht
+format_de15 = script(format.bsh), getFormat, format_map_de15.properties
+format_del152 = 970c, format_map_del152.properties(del152)
+# dech1 nutzt ubl formate vgl https://intern.finc.info/issues/2086#note-7
+format_dech1 = 971c, format_map_dech1.properties(dech1)
+format_de105 = script(format_de105.bsh),getFormat,format_map_de105.properties(de105)
+format_de520 = 973c, format_map_de520.properties
+format_del189 = script(format.bsh), getFormat, format_map_del189.properties
+format_dezwi2 = 975c, format_map_dezwi2.properties
+format_dezi4 = 976c:980b, format_map_dezi4.properties
+format_de540 = script(format.bsh), getFormat, format_map_de540.properties
+format_ded117 = script(format.bsh), getFormat, format_map_ded117.properties
+# format_ded117 = 977c, format_map_ded117.properties
+# format_de540 = 978c, format_map_de540.properties
+# format_del242 = 979c, format_map_del242.properties
+# HMT # local subject headings
+local_heading_facet_del152 = 970d
+# WHZ (Zwickau) Lokales Schlagwort aus PICA 6800, BSZ-MARC-LOKAL 689 $a
+local_heading_dezwi2 = 975q
+local_heading_facet_dezwi2 = 975q:600a:600x:610a:610x:611a:611x:630a:630x:648x:650a:650x:651x:655x:689a
+# TUBAF und HTWK # UDK fuer Anzeige und Facette
+udk_raw_de105 = 972f
+udk_facet_de105 = 972f, tuf_udk_map.properties(tuf_udk)
+udk_raw_del189 = 974f
+# HTWK will keine UDK-Facette
+# udk_facet_del189 = 974f, htwk_udk_map.properties(htwk_udk)
+# HGB Lokales Schlagwort aus PICA 6800, BSZ-MARC-LOKAL 689 $a
+local_heading_del242 = 979q
+# HGB Lokale Notation aus PICA 6700, BSZ-MARC-LOKAL 936 $a. Und Ausschrift aus 979|9 Ticket #4209
+local_class_del242 = 979f:9799
+# UBL # finc-Klassifikation
+finc_class_facet = script(finc_class.bsh), getFincClass()
+
+##############################################
+# allgemeingueltig
 
+# allfields without urls (856)
+allfields = custom, getAllSearchableFields(100, 831)
+zdb = script(zdb.bsh), getZdb
+format = script(format.bsh), getFormat
+language = 008[35-37]:041a:041d:041h:130l:730l, language_map.properties
+author = 100abcd
+author_orig = custom, getLinkedField(100abcd)
+author2 = 700abcd
+author2_orig = custom, getLinkedField(700abcd)
+author_corp = 110ab:111acde
+author_corp_orig = custom, getLinkedField(110ab:111acde)
+author_corp2 = 710ab:711acde
+author_corp2_orig = custom, getLinkedField(710ab:711acde)
+author2-role = 700e:710e
+# author_fuller = 100q
+author_letter = 100a
+# author_additional = 505r
+# fuer gemeinsame Facette von Verfasser, beteiligten Personen u. Koerperschaften
+author_facet = 100abcd:700abcd:110ab:111acde:710ab:711acde
+title = 245ab
+title_part = 245np
+title_sub = 245b first
+title_short = 245a
+# title_full = custom, getAllSubfields(245, " ")
+# keine Verfasserwiederholung mehr in title_full
+title_full = 245abdefgknp
+title_alt = custom, getLinkedFieldCombined(130ap:240ap:246abp:730ap:740ap:920t)
+# musikalische EST
+title_uniform = 130adfgklmnoprst:240adfghklmnoprs
+title_old = 780ast
+title_new = 785ast
+title_sort = custom, getSortableTitle
+title_orig = custom, getLinkedField(245abnp)
+series = 800abcdefgmnopqt:810abcdefgmnoprst:811acdegjnpqstuv:830adgmnoprst
+series2 = 490a
+series_orig = custom, getLinkedField(800abcdefgmnopqt:810abcdefgmnoprst:811acdegjnpqstuv:830adgmnoprst:490a)
+publisher = custom, getLinkedFieldCombined(260b)
+# publishDate = script(getdate.bsh), getDate
+publishDate = custom, removeTrailingPunct(260c)
+# publishDateSort = 008[7-10]
+publishDateSort = script(getPublishDateSort.bsh), getPublishDateSort
+publishPlace = custom, getLinkedFieldCombined(260a)
+imprint = 260abc, first
+# imprint = custom, removeTrailingPunct(260abc), first
+physical = custom, getLinkedFieldCombined(300abcefg)
+footnote = custom, getLinkedFieldCombined(500a)
+dissertation_note = custom, getLinkedFieldCombined(502abcd)
+performer_note = 511a
+illustrated = script(illustrated.bsh), isIllustrated
+contents = custom, getLinkedFieldCombined(505agrt:520ab)
 # Uncomment the following line to index full text from URLs found in your MARC
 # records.  All sorts of document formats are supported (PDF, Word Doc, ASCII
 # text, HTML, etc.) The first parameter is a fieldspec showing which fields to use
 # for URL retrieval.  The second parameter is optional -- if included, only files
 # matching the specified suffix will be indexed.  Note that this functionality
-# depends on a full text tool being installed on your system.  See the wiki for
-# details:
-#       http://vufind.org/wiki/importing_records#indexing_full_text
-#fulltext = custom, getFulltext(856u, pdf)
+# depends on Aperture being installed on your system.  See the wiki for details:
+#      http://vufind.org/wiki/aperture
+# old version: fulltext = custom, getFulltext(856u, pdf)
+# fulltext = script(getFincFulltext.bsh), getFincFulltext
+fulltext = script(getFincFulltextSwbp.bsh), getFincFulltextSwbp
+# fulltext_inh = script(swbplus.bsh), getSWBPlusText(001[10-18],inh)
+isbn = 020a:776z:780z:785z
+# NOTE: 029a ist \u00c3\u00bcberregional definiertes, anwenderspezifisches Feld, kein MARC-Standard
+issn = 022a:029a:490x:730x:776x:780x:785x:800x:810x:811x:830x
+# ismn = 024a
+ismn = script(ismn.bsh), getIsmn
+isbn_canc = 020z
+issn_canc = 022yz
+# topic enthaelt 970de f\u00c3\u00bcr lokale SW der HMT und 937abc f\u00c3\u00bcr Filmgattungen
+topic = 600abcdefghjklmnopqrstuvxyz:610abcdefghklmnoprstuvxyz:611acdefghjklnpqstuvxyz:630adefghklmnoprstvxyz:650abcdevxyz:689a:655abvxyz:651avxyz:648avxyz:970de:937abc
+topic_facet = 600a:600x:610a:610x:611a:611x:630a:630x:648x:650a:650x:651x:655x:689a
+# fuer Geofacette #1028
+geogr_code = script(geogr_code.bsh), getGeogrCode, geogr_code_map.properties
+# fuer Geographische Codes f\u00c3\u00bcr Personen (HMT) #1567
+geogr_code_person = 951b, geogr_code_map.properties
+# fuer Facette Zeitcode HMT #1571
+timecode = 046j, timecode_map.properties
+# fuer Suche in separatem Feld, Indexfunktion, fuer Browsing ggf. noch aufsplitten (Ticket #284)
+music_heading = 937def
+# fuer Facettierung der Filmgattungen
+film_heading = 937a
+dewey-hundreds = script(dewey.bsh), getDeweyNumber(082a:083a, 100), ddc22_map.properties(hundreds)
+dewey-tens = script(dewey.bsh), getDeweyNumber(082a:083a, 10), ddc22_map.properties(tens)
+dewey-ones = script(dewey.bsh), getDeweyNumber(082a:083a, 1), ddc22_map.properties(ones)
+dewey-full = script(dewey.bsh), getDeweySearchable(082a:083a)
+dewey-sort = script(dewey.bsh), getDeweySortable(082a:083a)
+dewey-raw = 082a:083a, first
+# RVK - Notation fuer Facette und Ausschrift zur Einbindung in die Suche
+rvk_facet = script(rvk.bsh), getRvk
+rvk_label = 936k
+rvk_path = 0849
+# GND = script(getGnd.bsh), getGnd
+# Uncomment the following lines to track history of indexing times for RSS feeds,
+# OAI-PMH server and other updates.  The parameter to these functions must be the 
+# same fieldspec as the id setting above!
+# IMPORTANT: Indexing this extra information will make extra database calls during
+#           the indexing process and will likely slow things down significantly.
+# first_indexed = custom, getFirstIndexed(001)
+# last_indexed = custom, getLastIndexed(001)
+
+# Ticket #2048
+attached_de15 = script(attached_DE-15.bsh), getAttached()
+
+# Ticket #2648, #3962
+itemdata = script(getItemDataJSON.bsh), getItemDataJSON
+
+# Ticket #3962, Barcode und Signatur aus MARC entfernen. Daten kommen jetzt aus mddb
+# Maskiere '(', ')' und '.'.  '[' und ']' auch? Viel Gl\u00fcck. Aber Testen ist besser!
+barcode  = script(getItemData.bsh), getItemData( "barcode"  , "\(DE-Ch1|DE-105|DE-Zwi2|DE-15\)")
+signatur = script(getItemData.bsh), getItemData( "signatur" , "\\.*")
 
-# Uncomment the following line if you want to index latitude/longitude data for
-# Google Map recommendations:
-#long_lat = custom, getLongLat
+# Ticket #3674
+urn=024a:037n:856u, (pattern_map.urly_urn)
+pattern_map.urly_urn.pattern_0=^.*(urn:.*)$=>$1
 
-# Uncomment the following lines if you are indexing journal article data that uses
-# the 773 field to describe the journal containing the article.  These settings
-# assume the records have been formatted according to recommendation 4.1 found at:
-#     http://www.loc.gov/marc/marbi/2003/2003-dp01.html
-# If you have records using a different 773 format, you may need to write a custom
-# indexing script to parse out volume/issue/number.
-# Additionally, you will need to make sure articles have a format value of "Article."
-# You can hard-code this if all of your records are articles, but if you need to
-# distinguish between articles and non-articles, you will need to build a custom
-# getFormat script.
-#format = "Article"
-#container_volume = 773v
-#container_issue = 773l
-#container_start_page = 773q
-#container_reference = 773g
-#container_title = 773s
+# Ticket #4087
+# hierarchytype = 
+hierarchy_top_id       = script(getParentData.bsh), getParentData(hierarchy_top_id)
+hierarchy_top_title    = script(getParentData.bsh), getParentData(hierarchy_top_title)
+hierarchy_parent_id    = script(getParentData.bsh), getParentData(parent_id)
+hierarchy_parent_title = script(getParentData.bsh), getParentData(parent_title)
+# hierarchy_sequence =
+is_hierarchy_id        = script(getParentData.bsh), getParentData(is_hierarchy_id)
+is_hierarchy_title     = script(getParentData.bsh), getParentData(is_hierarchy_title)
diff --git a/import/translation_maps/access_map.properties b/import/translation_maps/access_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f899ba2413eea52a3eaa3ebe5db22a0fae035861
--- /dev/null
+++ b/import/translation_maps/access_map.properties
@@ -0,0 +1,74 @@
+ArtPrint                           = Local Holdings
+Article                            = Local Holdings
+Atlas                              = Local Holdings
+AudioTape                          = Local Holdings
+AudioVisualMedia                   = Local Holdings
+BluRayDisc                         = Local Holdings
+Book                               = Local Holdings
+Braille                            = Local Holdings
+CD                                 = Local Holdings
+CDROM                              = Local Holdings
+Chart                              = Local Holdings
+ChipCartridge                      = Local Holdings
+Collage                            = Local Holdings
+DiscCartridge                      = Local Holdings
+Drawing                            = Local Holdings
+DVDAudio                           = Local Holdings
+DVDROM                             = Local Holdings
+DVDVideo                           = Local Holdings
+eBook                              = Electronic Resources
+Electronic                         = Electronic Resources
+ElectronicArticle                  = Electronic Resources
+ElectronicJournal                  = Electronic Resources
+ElectronicMusicalScore             = Electronic Resources
+ElectronicNewspaper                = Electronic Resources
+ElectronicResourceDataCarrier      = Local Holdings
+ElectronicResourceRemoteAccess     = Electronic Resources
+ElectronicSerial                   = Electronic Resources
+ElectronicThesis                   = Electronic Resources
+Filmstrip                          = Local Holdings
+FlashCard                          = Local Holdings
+FloppyDisk                         = Local Holdings
+Globe                              = Local Holdings
+Journal                            = Local Holdings
+Kit                                = Local Holdings
+Manuscript                         = Local Holdings
+Map                                = Local Holdings
+Microfiche                         = Local Holdings
+Microfilm                          = Local Holdings
+Microform                          = Local Holdings
+MotionPicture                      = Local Holdings
+MusicalScore                       = Local Holdings
+MusicRecording                     = Local Holdings
+Nachlass                           = Local Holdings
+Newspaper                          = Local Holdings
+NotatedMusic                       = Local Holdings
+Painting                           = Local Holdings
+Photo                              = Local Holdings
+Photonegative                      = Local Holdings
+PhysicalObject                     = Local Holdings
+Placard                            = Local Holdings
+Print                              = Local Holdings
+Record                             = Local Holdings
+RegionalHoldings                   = Regional Holdings
+SensorImage                        = Local Holdings
+Serial                             = Local Holdings
+Slide                              = Local Holdings
+Software                           = Local Holdings
+SoundRecordingMedium               = Local Holdings
+SoundCassette                      = Local Holdings
+SoundDisc                          = Local Holdings
+SoundRecording                     = Local Holdings
+TapeCartridge                      = Local Holdings
+TapeCassette                       = Local Holdings
+TapeReel                           = Local Holdings
+Thesis                             = Local Holdings
+Transparency                       = Local Holdings
+Unknown                            = Local Holdings
+Video                              = Local Holdings
+VideoTape                          = Local Holdings
+VideoCartridge                     = Local Holdings
+VideoCassette                      = Local Holdings
+VideoDisc                          = Local Holdings
+VideoReel                          = Local Holdings
+# NewPublications                     = New Publications
diff --git a/import/translation_maps/branch_map_de105.properties b/import/translation_maps/branch_map_de105.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a7bf638b5cb102bc8116f492aa0235c1b49c01d4
--- /dev/null
+++ b/import/translation_maps/branch_map_de105.properties
@@ -0,0 +1,16 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der UB Freiberg, aus LIB_BRANCH_DESC
+# Siehe auch Ticket #748
+
+HB		= Hauptbibliothek
+#IN      = Internet
+3       = Zw 3 - Chemie / Biologie
+15      = Zw 15 - Fremdsprachen
+#18      = Zw 18
+#23      = Zw 23
+#27      = Zw 27
+73      = Zw 7/3 - Reiche Zeche
+#92      = Wärmetechnik/Thermodynamik
+102     = Zw 10/2 - Technikgeschichte (IWTG)
diff --git a/import/translation_maps/branch_map_de15.properties b/import/translation_maps/branch_map_de15.properties
new file mode 100644
index 0000000000000000000000000000000000000000..02cc36a5b5bc6ba891dd2c2a34e1f97e934767f9
--- /dev/null
+++ b/import/translation_maps/branch_map_de15.properties
@@ -0,0 +1,97 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der UBL, aus LIB_BRANCH_DESC
+11		= Musik
+12		= Psychologie
+13		= Sudhoffinstitut
+31		= Rechtswissenschaft
+#36		= Wirtschaftswiss. (ab 09/2009 nicht mehr benutzen!)
+41		= Orientwissenschaften
+46		= Erziehungswissenschaft
+51		= Theologie
+#56		= Mathematik (ab 12/06 nicht mehr benutzen!)
+#61		= Informatik (ab 12/06 nicht mehr benutzen!)
+66		= Geowissenschaften
+71		= Physik
+76		= Chemie/Physik
+81		= Biowissenschaften
+81idiv	= iDiv
+86		= Veterinärmedizin
+#91		= ZB Medizin 
+91		= Zentralbibliothek Medizin
+96		= Sportwissenschaft
+#91004	= Rechtsmedizin (ab 09/2009 nicht mehr benutzen!)
+91006	= Apotheke
+#91007	= ZB Medizin, Zweigstelle Härtelstraße (ab 08/2009 nicht mehr benutzen!)
+#91016	= Zentralbibliothek Medizin 2
+91016	= Zentralbibliothek Medizin 2
+91018	= Kopfkliniken
+#91050	= Mikrobiologie  (ab 10/2009 nicht mehr benutzen!)
+#91163	= Kinderklinik u. Kinderchirurgie (ab 2008 nicht mehr benutzen!)
+91166	= Neurochirurgie
+#91204	= Paul-Flechsig-Institut  (ab 01/2011 nicht mehr benutzen!)
+#91271	= Arbeitsmed. u. Sozialmed. (ab 01/2011 nicht mehr benutzen!)
+#00		= 00
+#01	= Hauptbibliothek
+01		= Bibliotheca Albertina
+#01FL	= HB Fernleihe
+#01com	= Hauptbibliothek/Comenius (ab 2007 nicht mehr benutzen!)
+#01mag	= Hauptbibliothek Mag. (ab 2007 nicht mehr benutzen!)
+#01rara	= Hauptbibliothek Raramag. (ab 2007 nicht mehr benutzen!)
+#01sm	= Hauptbibliothek Sondermag (ab 2007 nicht mehr benutzen!)
+01theat	= Theaterwissenschaften
+#01zw1	= Hauptbibliothek 02 (ab 09/2009 nicht mehr benutzen!)
+02		= Campus-Bibliothek
+02kmw	= Kommunikations- und Medienwissenschaft
+#02mag	= Zw1 Mag. (ab 2007 nicht mehr benutzen!)
+#03		= Orientwiss.  (ab 2009 nicht mehr benutzen!)
+05		= Archäologie
+#06		= DLL
+06		= Deutsches Literaturinstitut Leipzig
+07		= Geographie
+08		= Kunst
+08akl	= Kunst/AKL
+#08mag	= Kunst Mag. (ab 2007 nicht mehr benutzen!)
+#09		= Herder (nicht mehr benutzen!)
+11instr	= Museum für Musikinstrumente
+#36mag	= Wirtschaftswiss. Mag (ab 2007 nicht mehr benutzen!)
+#41alt	= Orientwiss., Altorientalistik
+41alt	= Orientwissenschaften, Altorientalistik
+#41ori	= Orientwiss., Ägyptologie
+41ori	= Orientwissenschaften, Ägyptologie
+#46mag	= Erziehungswiss. Mag. (ab 2007 nicht mehr benutzen!)
+#51mag	= Theologie Mag. (ab 2007 nicht mehr benutzen!)
+71thph	= Theoretische Physik
+76thph  = Theoretische Physik
+76min	= Mineralogie
+#86amb	= Ambulator u. Geburtshilfl. Tierklinik
+86amb	= Ambulator und Geburtshilfliche Tierklinik
+#86ana	= Vet.-Anatomie
+86ana	= Veterinäranatomie
+#86bak	= Bakteriologie u. Mykologie
+86bak	= Bakteriologie und Mykologie
+#86bio	= Vet.-Physiol.-Chem. Inst.
+86bio	= Veterinär-physiologisch-chemisches Institut
+#86chir	= Chirurg. Tierklinik
+86chir	= Chirurgische Tierklinik
+#86hyg	= Tierhyg. u. öffentl. Veterinärwesen
+86hyg	= Tierhygiene und öffentliches Veterinärwesen
+#86imm	= Immunologie (ab 10/2009 nicht mehr benutzen!)
+86kle	= Kleintierklinik
+#86leb	= Lebensmitelhyg.  (ab 10/2009 nicht mehr benutzen!)
+86par	= Parasitologie
+#86pat	= Vet.-Pathologie
+86pat	= Veterinärpathologie
+86pha	= Pharmakologie, Pharmazie, Toxikologie
+#86phy	= Vet.-Physiologie
+86phy	= Veterinärphysiologie
+86te	= Tierernährung
+#86tie	= Med. Tierklinik
+86tie	= Medizinische Tierklinik
+86vir	= Virologie
+86vog	= Poliklinik Vögel, Reptilien
+#91mag	= ZB Medizin Mag. (ab 2007 nicht mehr benutzen!)
+#96mag	= Sportwiss. Mag. (ab 2007 nicht mehr benutzen!)
+#SG13	= Allg. Verw. SG13
+SG13	= Allgemeine Verwaltung SG13
diff --git a/import/translation_maps/branch_map_de520.properties b/import/translation_maps/branch_map_de520.properties
new file mode 100644
index 0000000000000000000000000000000000000000..612ea0b4d870e00633d89d9204c72348f228f709
--- /dev/null
+++ b/import/translation_maps/branch_map_de520.properties
@@ -0,0 +1,33 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der HTW Dresden, aus LIB_BRANCH_DESC
+
+A      = Zentralbibliothek, A.-Schubert-Str. 8
+B      = Zentralbibliothek, A.-Schubert-Str. 8
+BUBI   = Zentralbibliothek, A.-Schubert-Str. 8
+D      = Zentralbibliothek, A.-Schubert-Str. 8
+EF     = Zentralbibliothek, A.-Schubert-Str. 8
+FS     = Zentralbibliothek, A.-Schubert-Str. 8
+GR     = Zentralbibliothek, A.-Schubert-Str. 8
+KE     = Zentralbibliothek, A.-Schubert-Str. 8
+KF     = Zentralbibliothek, A.-Schubert-Str. 8
+KS     = Zentralbibliothek, A.-Schubert-Str. 8
+L      = Zentralbibliothek, A.-Schubert-Str. 8
+M      = Zentralbibliothek, A.-Schubert-Str. 8
+M1     = Zentralbibliothek, A.-Schubert-Str. 8
+R      = Zentralbibliothek, A.-Schubert-Str. 8
+SAL    = Zentralbibliothek, A.-Schubert-Str. 8
+SDA    = Zentralbibliothek, A.-Schubert-Str. 8
+SEN    = Zentralbibliothek, A.-Schubert-Str. 8
+SFR    = Zentralbibliothek, A.-Schubert-Str. 8
+SON    = Zentralbibliothek, A.-Schubert-Str. 8
+SRU    = Zentralbibliothek, A.-Schubert-Str. 8
+SSI    = Zentralbibliothek, A.-Schubert-Str. 8
+T      = Zentralbibliothek, A.-Schubert-Str. 8
+ZB     = Zentralbibliothek, A.-Schubert-Str. 8
+P1     = Zweigbibliothek Pillnitz
+P2     = Zweigbibliothek Pillnitz
+P3     = Zweigbibliothek Pillnitz
+P4     = Zweigbibliothek Pillnitz
+P5     = Zweigbibliothek Pillnitz
\ No newline at end of file
diff --git a/import/translation_maps/branch_map_dech1.properties b/import/translation_maps/branch_map_dech1.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9c7a7249e670e5eac79f167c3521452b16b6831d
--- /dev/null
+++ b/import/translation_maps/branch_map_dech1.properties
@@ -0,0 +1,7 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der UB Chemnitz, aus LIB_BRANCH_DESC
+ZB		= Zentralbibliothek
+CBI     = Campusbibliothek I
+CBII    = Campusbibliothek II
\ No newline at end of file
diff --git a/import/translation_maps/branch_map_dezi4.properties b/import/translation_maps/branch_map_dezi4.properties
new file mode 100644
index 0000000000000000000000000000000000000000..185c5e303c7834f5ea2a6442916ffdedaa33e78e
--- /dev/null
+++ b/import/translation_maps/branch_map_dezi4.properties
@@ -0,0 +1,42 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der HSZG Zittau/Görlitz, aus LIB_BRANCH_DESC
+
+# komplette Code-Liste aus P99:
+# Teile sind bei uns als "Bereich" bezeichnet:
+
+# BB   = Buchbinder in Bearbeitung [nicht in finc, ANFRAGE]
+# BW   = Bücherwagen [nicht in finc]
+FH     = Zittau
+FHGR   = Görlitz
+FHMGR  = Görlitz
+FHMZI  = Zittau
+# FL   = Fernleihe [nicht in finc]
+GR     = Görlitz
+# HS   = Hochschule Zittau/Görlitz [nicht in finc]
+# IHI  = Internationales Hochschulinstitut [nicht in finc]
+# K    = Kst. Zeitschriften Zittau [nicht in finc]
+# KM   = Magazin Zittau [nicht in finc]
+# L    = LIBERO [nicht in finc]
+LBGR   = Görlitz
+LBS    = Zittau
+LBSP   = Zittau
+LR     = Zittau
+LRGR   = Görlitz
+LRKS   = Zittau
+M      = Zittau
+MGR    = Görlitz
+# MGRB = Magazin Görlitz zum Buchbinder [nicht in finc]
+MOG    = Zittau
+MP     = Zittau
+MS     = Zittau
+PGR    = Görlitz
+# RFL  = Reservierung Fernleihe [nicht in finc]
+# RGR  = Reservierung Görlitz [nicht in finc]
+# RZI  = Reservierung Zittau [nicht in finc]
+SAPP   = Görlitz
+TGR    = Görlitz        
+THEKE  = Zittau
+VIZI   = Zittau
+ZI     = Zittau
\ No newline at end of file
diff --git a/import/translation_maps/branch_map_dezwi2.properties b/import/translation_maps/branch_map_dezwi2.properties
new file mode 100644
index 0000000000000000000000000000000000000000..57d3e21ee2aef5786e8de0efef7f6e2c79c0988b
--- /dev/null
+++ b/import/translation_maps/branch_map_dezwi2.properties
@@ -0,0 +1,15 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Zweigstellen der WH Zwickau, aus LIB_BRANCH_DESC
+
+
+
+E8 = ZB Scheffelstraße
+H1 = Hauptbibliothek
+M6 = ZB Markneukirchen
+R9 = ZB Reichenbach
+S7 = ZB Schneeberg
+T  = In Transfer
+B  = In Bearbeitung
+BI = Buchbinder
diff --git a/import/translation_maps/collcode_map_de105.properties b/import/translation_maps/collcode_map_de105.properties
new file mode 100644
index 0000000000000000000000000000000000000000..60cb3c67646d85c04b2461ac5dd965cbeb000930
--- /dev/null
+++ b/import/translation_maps/collcode_map_de105.properties
@@ -0,0 +1,42 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der UB Freiberg, aus LIB_COLLECTION_CODE_DESC
+# Siehe auch Ticket #748
+
+# alt
+##BAI			= Bibliographischer Apparat I
+##BAII        = Bibliographischer Apparat II
+#CD          = CD-ROM
+#DBOD	    = Datenbank (DBoD)
+#EBOOK       = Ebook (Einzelkauf)
+##EDV         = EDV-Abteilung
+#FBF         = Fachbuchfreihand (FBF)
+#FDLN        = QUCOSA - Publikationsserver
+#FFFH        = Freiberger Forschungshefte (FBF)
+#FKDB        = Kieler Diskussionsbeiträge (FBF)
+#FVDI        = VDI-Berichte (FBF)
+##LEER        = 
+#LFFH        = Freiberger Forschungshefte (LS)
+#LS          = Lesesaal (LS)
+#MAG         = Magazin
+#MAGZw8      = Magazin Zw8
+##NA          = Nicht vormerkbar
+#WA          = Wissenschaftlicher Altbestand
+
+# jetzt neu: regular expressions wegen Ticket #1573 (doppelte Zuordnung von UBE_DBOD)
+pattern_0 = ^CD$=>CD-ROM
+pattern_1 = DBOD=>Datenbanken (DBoD)
+pattern_2 = ^EBOOK$=>Ebook (Einzelkauf)
+pattern_3 = ^FBF$=>Fachbuchfreihand (FBF)
+# Ticket #1703: FDLN ausblenden
+#pattern_4 = ^FDLN$=>QUCOSA - Publikationsserver
+pattern_4 = ^FFFH$=>Freiberger Forschungshefte (FBF)
+pattern_5 = ^FKDB$=>Kieler Diskussionsbeiträge (FBF)
+pattern_6 = ^FVDI$=>VDI-Berichte (FBF)
+pattern_7 = ^LFFH$=>Freiberger Forschungshefte (LS)
+pattern_8 = ^LS$=>Lesesaal (LS)
+pattern_9 = ^MAG$=>Magazin
+pattern_10 = ^MAGZw8$=>Magazin Zw8
+pattern_11 = ^WA$=>Wissenschaftlicher Altbestand
+pattern_12 = UBE=>Einzelplatz
diff --git a/import/translation_maps/collcode_map_de15.properties b/import/translation_maps/collcode_map_de15.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a9d8bcac353ff56534d5a78c276f1508417f8b50
--- /dev/null
+++ b/import/translation_maps/collcode_map_de15.properties
@@ -0,0 +1,70 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der UBL, aus LIB_COLLECTION_CODE_DESC
+
+Anw = Magazin / Sonstige
+Ausk = Magazin / Sonstige
+Bank = Magazin / Sonstige
+Ethn = Freihandbereich
+FH = Freihandbereich
+FHAfr = Freihandbereich
+FHAllg = Freihandbereich
+FHAmer = Freihandbereich
+FHAngl = Freihandbereich
+FHArch = Freihandbereich
+FHBio = Freihandbereich
+FHChem = Freihandbereich
+FHEthn = Freihandbereich
+FHGeogr = Freihandbereich
+FHGeolog = Freihandbereich
+FHGerm = Freihandbereich
+FHGesch = Freihandbereich
+FHGlobStud = Freihandbereich
+FHInf = Freihandbereich
+FHKinder = Freihandbereich
+FHKult = Freihandbereich
+FHKunst = Freihandbereich
+FHLandw = Freihandbereich
+FHLit = Freihandbereich
+FHMath = Freihandbereich
+FHMed = Freihandbereich
+FHMus = Freihandbereich
+FHNaturw = Freihandbereich
+FHNiederl = Freihandbereich
+FHPaed = Freihandbereich
+FHPhilol = Freihandbereich
+FHPhilos = Freihandbereich
+FHPhys = Freihandbereich
+FHPolitik = Freihandbereich
+FHPsych = Freihandbereich
+FHRecht = Freihandbereich
+FHRoman = Freihandbereich
+FHSOSA = Freihandbereich
+FHSkand = Freihandbereich
+FHSlaw = Freihandbereich
+FHSoz = Freihandbereich
+FHSport = Freihandbereich
+FHSprach = Freihandbereich
+FHTechn = Freihandbereich
+FHTheater = Freihandbereich
+FHTheol = Freihandbereich
+FHWirtsch = Freihandbereich
+Frueh = Freihandbereich
+GK = Magazin / Sonstige
+Indol = Freihandbereich
+Jap = Freihandbereich
+Keine = Magazin / Sonstige
+Klass = Freihandbereich
+Korea = Freihandbereich
+LBS = Lehrbuchsammlung
+LS = Freihandbereich
+Oeff = Magazin / Sonstige
+Orient = Freihandbereich
+Rel = Freihandbereich
+SSG1 = Freihandbereich
+Sin = Freihandbereich
+Straf = Magazin / Sonstige
+ZLS = Freihandbereich
+Zas = Freihandbereich
+Zivil = Magazin / Sonstige
diff --git a/import/translation_maps/collcode_map_de520.properties b/import/translation_maps/collcode_map_de520.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d867e95eb5a9bfbf133b51b93acd3819abd56243
--- /dev/null
+++ b/import/translation_maps/collcode_map_de520.properties
@@ -0,0 +1,211 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der HTW Dresden, aus LIB_COLLECTION_CODE_DESC
+
+A   = Bestellung
+AA  = Bibliographien, Verzeichnisse 
+AB  = Bibliographien, Verzeichnisse
+AC  = Bibliographien, Verzeichnisse
+AD  = Bibliographien, Verzeichnisse
+AE  = Nachschlagewerke, Wörterbücher
+AF  = Nachschlagewerke, Wörterbücher
+AG  = Nachschlagewerke, Wörterbücher
+AH  = Nachschlagewerke, Wörterbücher
+AK  = Wissenschaftskunde, Museumswesen
+AL  = Hochschulwesen
+AM  = Schriftkunde
+AN  = Buch-, Bibliothekwesen, Informationswiss.
+AP1 = Medien-u. Kommunikationswiss.
+AP3 = Medien-u. Kommunikationswiss.
+AP9 = Medien-u. Kommunikationswiss.
+AP995  = Medien-u. Kommunikationswiss.
+AR  = Umweltschutz, Raumordnung
+AV  = Serien, Zeitschriften
+AW  = Serien, Zeitschriften
+AX  = Serien, Zeitschriften
+AY  = Serien, Zeitschriften
+AZ  = Serien, Zeitschriften
+B   = Theologie
+Best  = Bestellung
+CA  = Philosophie
+CB  = Philosophie
+CC  = Philosophie
+CD  = Philosophie
+CE  = Philosophie
+CF  = Philosophie
+CG  = Philosophie
+CH  = Philosophie
+CI  = Philosophie
+CL  = Psychologie
+CM  = Psychologie
+CN  = Psychologie
+CO  = Psychologie
+CP  = Psychologie
+CQ  = Psychologie
+CR  = Psychologie
+CS  = Psychologie
+CT  = Psychologie
+CU  = Psychologie
+CV  = Psychologie
+CW  = Psychologie
+CX  = Psychologie
+CY  = Psychologie
+CZ  = Psychologie
+D  = Pädagogik
+E  = Sprachen, Sprachwissenschaft
+F  = Philologie
+FL  = Fernleihe
+G  = Sprachen, Sprachwissenschaft
+H  = Sprachen, Sprachwissenschaft
+I  = Sprachen, Sprachwissenschaft
+K  = Sprachen, Sprachwissenschaft
+L  = Libero
+LA  = Ethnologie
+LB  = Ethnologie
+LC  = Ethnologie
+LD  = Archäologie, Kunstgeschichte
+LE  = Archäologie, Kunstgeschichte
+LF  = Archäologie, Kunstgeschichte
+LG  = Archäologie, Kunstgeschichte
+LH  = Archäologie, Kunstgeschichte
+LI  = Archäologie, Kunstgeschichte
+LJ  = Archäologie, Kunstgeschichte
+LK  = Archäologie, Kunstgeschichte
+LL  = Archäologie, Kunstgeschichte
+LM  = Archäologie, Kunstgeschichte
+LN  = Archäologie, Kunstgeschichte
+LO  = Archäologie, Kunstgeschichte
+LP  = Musikwiss.
+LQ  = Musikwiss.
+LR  = Musikwiss.
+LS  = Musikwiss.
+LT  = Musikwiss.
+LU  = Musikwiss.
+LV  = Musikwiss.
+LW  = Musikwiss.
+LX  = Musikwiss.
+LY  = Musikwiss.
+LZ  = Musikwiss.
+MA  = Politologie
+MB  = Politologie
+MC  = Politologie
+MD  = Politologie
+ME  = Politologie
+MF  = Politologie
+MG  = Politologie
+MH  = Politologie
+MI  = Politologie
+MJ  = Politologie
+MK  = Politologie
+ML  = Politologie
+MM  = Politologie
+MN  = Soziologie
+MO  = Soziologie
+MP  = Soziologie
+MQ  = Soziologie
+MR  = Soziologie
+MS  = Soziologie
+MX  = Militärwiss.
+MY  = Militärwiss.
+MZ  = Militärwiss.
+N  = Geschichte
+P  = Recht
+Q  = Wirtschaft
+R  = Geographie
+SA  = Mathematik
+SB  = Mathematik
+SC  = Mathematik
+SD  = Mathematik
+SE  = Mathematik
+SF  = Mathematik
+SG  = Mathematik
+SH  = Mathematik
+SI  = Mathematik
+SJ  = Mathematik
+SK  = Mathematik
+SL  = Mathematik
+SM  = Mathematik
+SN  = Mathematik
+SO  = Mathematik
+SP  = Mathematik
+SQ  = Informatik
+SR  = Informatik
+SS  = Informatik
+ST  = Informatik
+SU  = Informatik
+TA  = Naturwissenschaften allg. 
+TB  = Naturwissenschaften allg.
+TC  = Naturwissenschaften allg.
+TD  = Naturwissenschaften allg.
+TE  = Geologie, Paläontologie
+TF  = Geologie, Paläontologie
+TG  = Geologie, Paläontologie
+TH  = Geologie, Paläontologie
+TI  = Geologie, Paläontologie
+TJ  = Geologie, Paläontologie
+TK  = Geologie, Paläontologie
+TL  = Geologie, Paläontologie
+TM  = Geologie, Paläontologie
+TN  = Geologie, Paläontologie
+TO  = Geologie, Paläontologie
+TP  = Geologie, Paläontologie
+TQ  = Geologie, Paläontologie
+TR  = Geologie, Paläontologie
+TS  = Geologie, Paläontologie
+TT  = Geologie, Paläontologie
+TU  = Geologie, Paläontologie
+TV  = Geologie, Paläontologie
+TW  = Geologie, Paläontologie
+TX  = Geologie, Paläontologie
+TY  = Geologie, Paläontologie
+TZ  = Geologie, Paläontologie
+U  = Physik
+V  = Chemie, Pharmazie
+WA  = Biologie
+WB  = Biologie
+WC  = Biologie
+WD  = Biologie
+WE  = Biologie
+WF  = Biologie
+WG  = Biologie
+WH  = Biologie
+WI  = Biologie
+WJ  = Biologie
+WK  = Biologie
+WL  = Biologie
+WM  = Biologie
+WN  = Biologie
+WO  = Biologie
+WP  = Biologie
+WQ  = Biologie
+WR  = Biologie
+WS  = Biologie
+WT  = Biologie
+WU  = Biologie
+WV  = Biologie
+WW  = Medizin
+WX  = Medizin
+WY  = Medizin
+WZ  = Medizin
+X  = Medizin
+Y  = Medizin
+XX  = Datenübernahme
+ZA  = Landwirtschaft, Gartenbau
+ZB  = Landwirtschaft, Gartenbau
+ZC  = Landwirtschaft, Gartenbau
+ZD  = Nutztierwiss., Landbautechnik
+ZE  = Ernährungswiss., Hauswirtschaft
+ZG  = Technik allg. 
+ZH  = Architektur
+ZI  = Bauingenieur- u. Vermessungswesen
+ZK  = Bergbau- u. Hüttenwesen
+ZL  = Maschinenbau
+ZM  = Werkstoffwiss., Fertigungstechnik
+ZN  = Elektrotechnik, Nachrichtentechnik
+ZO  = Verkehr, Transport
+ZP  = Energietechnik
+ZQ  = MSR-Technik, Automatisierungstechnik
+ZS  = Handwerk, Gewerbe, Industrien
+ZX  = Sport
+ZY  = Sport
\ No newline at end of file
diff --git a/import/translation_maps/collcode_map_dech1.properties b/import/translation_maps/collcode_map_dech1.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2576b14b11e864f7c2040df1c42ed6355a0059f7
--- /dev/null
+++ b/import/translation_maps/collcode_map_dech1.properties
@@ -0,0 +1,33 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der UB Chemnitz, aus LIB_COLLECTION_CODE_DESC
+# Zur Gruppierung siehe Ticket #750.
+
+
+BK05        = Magazin
+F           = Freihand
+FNA         = Freihand
+K           = 
+KS          = Magazin
+LS          = Lesesaal
+LSCZ        = Lesesaal
+LSSLS       = Lesesaal
+M           = Magazin
+
+#BK05		= Kellermagazin BK05, Bereitstellung am folgenden Öffnungstag
+#CDROMNetz   = Campuslizenz
+#FL          = Fernleihe nehmend
+#FNA         = Freihand nicht ausleihbar
+#HB          = Handbestand
+#KS          = Kartenschrank, Bereitstellung am folgenden Öffnungstag
+#LSCZ        = Lesesaal - Sammlung "Prof. Czok"
+#LSSLS       = Lesesaal - Sammlung "Stiftung Land Sachsen"
+#M           = Magazin, Bereitstellung am folgenden Öffnungstag
+#VW          = Verwaltung
+#X           = Datenübernahme
+
+#CDROMNetz, FL, VW, X, HB = entfernen
+#BK05, KS, M = Magazin
+#LS, LSCZ, LSSLS = Lesesaal
+#F, FNA = Freihand
diff --git a/import/translation_maps/collcode_map_dezi4.properties b/import/translation_maps/collcode_map_dezi4.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8fed19fc1b04f69940b02c714d95660503777bb7
--- /dev/null
+++ b/import/translation_maps/collcode_map_dezi4.properties
@@ -0,0 +1,42 @@
+###
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der HSZG Zittau/G\u00f6rlitz, aus LIB_COLLECTION_CODE_DESC
+
+# komplette Code-Liste aus P99:
+# Teile sind bei uns als "Bereich" bezeichnet:
+
+# BB   = Buchbinder in Bearbeitung [nicht in finc, ANFRAGE]
+# BW   = B\u00fccherwagen [nicht in finc]
+FH     = Freihand
+FHGR   = Freihand
+FHMGR  = Medienregal
+FHMZI  = Medienregal
+# FL   = Fernleihe [nicht in finc]
+# GR   = Zweigbibliothek G\u00f6rlitz [nicht in "Bereich" ]
+# HS   = Hochschule Zittau/G\u00f6rlitz [nicht in finc]
+# IHI  = Internationales Hochschulinstitut [nicht in finc ]
+# K    = Kst. Zeitschriften Zittau [nicht in finc]
+# KM   = Magazin Zittau [nicht in finc]
+# L    = LIBERO [nicht in finc]
+LBGR = Loseblattausgabe
+LBS    = Lehrbuchsammlung
+LBSP   = Lehrbuchsammlung Pr\u00e4senz
+LR     = Freihand Pr\u00e4senz
+LRGR   = Freihand Pr\u00e4senz
+LRKS   = Kartenschrank Pr\u00e4senz
+M      = Magazin
+MGR    = Magazin
+# MGRB = Magazin G\u00f6rlitz zum Buchbinder [nicht in finc]
+MOG    = Magazin
+MP     = Magazin Pr\u00e4senz
+MS     = Magazin Sonderbestand
+PGR    = Freihand Pr\u00e4senz
+# RFL  = Reservierung Fernleihe [nicht in finc]
+# RGR  = Reservierung G\u00f6rlitz [nicht in finc]
+# RZI  = Reservierung Zittau [nicht in finc]
+SAPP = Semesterapparat
+TGR    = Theke
+THEKE  = Theke
+VIZI   = Sonderbestand
+# ZI   = Hochschulbibliothek Zittau [nicht in "Bereich"]
\ No newline at end of file
diff --git a/import/translation_maps/collcode_map_dezwi2.properties b/import/translation_maps/collcode_map_dezwi2.properties
new file mode 100644
index 0000000000000000000000000000000000000000..479f49093bd9754ffdc7d6de7cc9e0ae50fef1a2
--- /dev/null
+++ b/import/translation_maps/collcode_map_dezwi2.properties
@@ -0,0 +1,33 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Standorte der WHZ, aus LIB_COLLECTION_CODE_DESC
+
+1.OG            = 1.OG Zeitschriften
+2.OG            = 2.OG Zeitschriften
+BUBI            = Magazin / Buchbinder
+Buchbinder      = beim Buchbinder
+Dis             = Diskettenschrank
+EG              = EG Zeitschriften
+F1              = Medientrog
+F2              = Infobestand
+F3              = Ausstellung
+F3E             = Freihand
+F3R             = Freihand
+F4              = Zeitschriften
+F5              = Freihand
+F6              = Mediothek
+F7              = Altbestand
+F8              = Belletristik
+F8K             = Mini-Kinderbibliothek
+F9              = Hörbücher
+FL              = Fernleihe
+GG              = Geschäftsgang 1.OG
+IN              = Internet (siehe Link)
+INT             = Intranet
+KL              = KL
+Mag             = Magazin
+Map             = Mappenschrank
+NOR             = Normen
+UG              = UG Zeitschriften
+ZLS             = Zeitschriftenlesesaal
diff --git a/import/translation_maps/collection_map.properties b/import/translation_maps/collection_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..30d89a6a09884cd115fc21be03a6e6be73ef9cb0
--- /dev/null
+++ b/import/translation_maps/collection_map.properties
@@ -0,0 +1,88 @@
+# Nationallizenzen
+ZDB-1-DFL = Deutschsprachige Frauenliteratur des 18. & 19. Jahrhunderts, Teil 1 und 2
+ZDB-1-ECC = Eighteenth Century Collection Online
+ZDB-1-EEB = Early English books online
+ZDB-1-ELW = English Language Womens' Literature of the 18th & 19th Centuries
+ZDB-1-MME = Making of the Modern World
+ZDB-1-MML = Making of the Modern Law - Legal Treatises 1800-1926 / MOML 1
+ZDB-1-WFR = Wales related fiction of the romantic period
+# ZDB-1-NEL = E-Books Net Library
+ZDB-1-NEL = EBSCOhost eBook Collection
+ZDB-1-MYA = Mystik & Aszese des 16. - 19. Jahrhunderts
+ZDB-1-RTH = Religion & Theologie des 16. - 19. Jahrhunderts
+ZDB-1-EIO = Casalini - Editoria Italiana Online
+# ZDB-1-NEF = E-Books von NetLibrary
+ZDB-1-NEF = EBSCOhost eBook Collection
+ZDB-1-EAI = Early American Imprints, Series I - Evans 1639-1800 / EAI
+ZDB-1-BEC = Brill Nijhoff E-Books Collections, Human Rights and Humanitarian Law
+ZDB-1-KEB = Karger eBooks Collection 1997-2009
+ZDB-1-RSE = RSC eBook Collection, Royal Society of Chemistry, 1968-2009
+ZDB-1-DLC = Digital Library of the Catholic Reformation
+ZDB-1-DLP = Digital Library of the Classic Protestant Texts
+ZDB-1-CLF = Corpus de la première littérature francophone de l'Afrique noire
+ZDB-1-ELC = Elsevier eBook Collection on Science Direct - Mathematics
+ZDB-1-TES = Teatro Espanol del Siglo de Oro / TESO
+ZDB-1-CDC = Corvey Digital Collection - Literature of the 18th and 19th Centuries
+ZDB-1-ALD = Aristoteles Latinus Database
+ZDB-1-SOT = Social Theory
+ZDB-1-LEO = Der Literarische Expressionismus Online
+ZDB-1-EMO = Empire Online
+ZDB-1-MOR = Music Online Reference
+ZDB-1-EAP = Early American Imprints, Series II - Shaw/Shoemaker 1801-1819 / EAI II
+ZDB-1-SSB = Primary Sources / Slavic Studies Bundle
+ZDB-1-WBA = World Bank E-Library Archive
+ZDB-1-SSB = Primary Sources / Slavic Studies
+ZDB-1-SCM = Springer eBook Collection / Chemistry and Materials Science 2005-2008
+ZDB-1-SMI = Springer eBook Collection / Medicine 2005-2008
+ZDB-1-PAO = Periodicals Archive Online / PAO 1802-2000
+# "echte" Quellen
+0 = Verbunddaten SWB
+1 = Project Gutenberg
+3 = Nielsen Book Data - NE print
+4 = Schweitzer EBL - PDA
+5 = Naxos Music Library
+6 = Music Online Reference
+7 = Periodicals Archive Online
+8 = Lizenzfreie Online-Ressourcen
+9 = Early Music Online
+10 = Music Treasures Consortium
+11 = Bibliographie des Musikschrifttums online
+12 = B3Kat
+13 = Diss online
+14 = Répertoire International des Sources Musicale
+15 = Petrucci Musikbibliothek
+16 = Elsevier E-Books
+#17 = Nationallizenzen E-Books # Ticket #2117 (default value? map to null - #17 = null)
+18 = Oxford Scholarship Online
+19 = Kubon & Sagner Digital
+20 = Gallica (BNF)
+# 21 = GBV, zur Zeit nur Ausschnitt Hochschule f\u00fcr Musik Weimar
+21 = GBV Musikdigitalisate
+22 = Qucosa
+24 = ebrary E-Books
+26 = DOAB Directory of Open Access Books
+27 = Munzinger
+28 = DOAJ Directory of Open Access Journals
+29 = Handwörterbuch der musikalischen Terminologie
+30 = SSOAR Social Science Open Access Repository
+31 = Opera in Video
+#
+34 = PQDT Open
+35 = Hathi Trust
+#
+39 = Persée
+40 = Dance in Video
+41 = Classical Music in Video
+42 = Classical Scores Library II
+44 = Deutsches Textarchiv
+#
+46 = de Gruyter eBooks
+47 = Vahlen eLibrary
+#
+# Kollektionen, die Bestandteil einer Quelle sind
+AMSP = American Space
+DFG1 = Sammlung C. F. Becker
+TRCS = Taiwan Resource Center for Chinese Studies
+qucosa = Qucosa
+pdam = MyiLibrary
+KEY = Schlüssel
diff --git a/import/translation_maps/fincClassification.properties b/import/translation_maps/fincClassification.properties
new file mode 100644
index 0000000000000000000000000000000000000000..74add618a1a9df4bb3437176bd1f639384b651a4
--- /dev/null
+++ b/import/translation_maps/fincClassification.properties
@@ -0,0 +1,360 @@
+# RVK
+fincclass.pattern_0 = A[A-Z] [0-9]+.*=>Allgemeines
+fincclass.pattern_1 = B[A-Z] [0-9]+.*=>Theologie und Religionswissenschaft
+fincClass.pattern_2 = C[A-I] [0-9]+.*=>Philosophie
+fincClass.pattern_3 = C[L-Z] [0-9]+.*=>Psychologie
+fincClass.pattern_4 = D[A-Z] [0-9]+.*=>Pädagogik
+fincClass.pattern_5 = E[A-Z] [0-9]+.*=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen
+fincClass.pattern_6 = G[A-Z] [0-9]+.*=>Germanistik, Niederlandistik, Skandinavistik
+fincClass.pattern_7 = H[A-Z] [0-9]+.*=>Anglistik, Amerikanistik
+fincClass.pattern_8 = I[A-Z] [0-9]+.*=>Romanistik
+fincClass.pattern_9 = K[A-Z] [0-9]+.*=>Slawistik
+fincClass.pattern_10 = L[A-C] [0-9]+.*=>Ethnologie (Volks- und Völkerkunde)
+fincClass.pattern_11 = (LD [1-2][0-9]+)|(L[E-G] [0-9]+).*=>Klassische Archäologie
+fincClass.pattern_12 = (LD [3-7][0-9]+)|(L[H-O] [0-9]+).*=>Kunst und Kunstgeschichte
+fincClass.pattern_13 = (LD [8-9][0-9]+)|(L[P-Y] [0-9]+).*=>Musikwissenschaft
+fincClass.pattern_14 = M[A-L] [0-9]+.*=>Politologie
+fincClass.pattern_15 = M[N-W] [0-9]+.*=>Soziologie
+fincClass.pattern_16 = M[X-Z] [0-9]+.*=>Militärwissenschaft
+fincClass.pattern_17 = N[A-Z] [0-9]+.*=>Geschichte
+fincClass.pattern_18 = P[A-Z] [0-9]+.*=>Rechtswissenschaft
+fincClass.pattern_19 = Q[A-Z] [0-9]+.*=>Wirtschaftswissenschaften
+fincClass.pattern_20 = R[A-Z] [0-9]+.*=>Geographie
+fincClass.pattern_21 = S[A-P] [0-9]+.*=>Mathematik
+fincClass.pattern_22 = S[Q-U] [0-9]+.*=>Informatik
+fincClass.pattern_23 = T[A-D] [0-9]+.*=>Allgemeine Naturwissenschaft
+fincClass.pattern_24 = T[E-Z] [0-9]+.*=>Geologie und Paläontologie
+fincClass.pattern_25 = U[A-Z] [0-9]+.*=>Physik
+fincClass.pattern_26 = V[A-Z] [0-9]+.*=>Chemie und Pharmazie
+fincClass.pattern_27 = W[A-Z] [0-9]+.*=>Biologie
+fincClass.pattern_28 = (W[W-Z]|X[A-Z]|Y[A-V]) [0-9]+.*=>Medizin
+fincClass.pattern_29 = Z[A-E] [0-9]+.*=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+fincClass.pattern_30 = Z[G-S] [0-9]+.*=>Technik
+fincClass.pattern_31 = Z[X-Y] [0-9]+.*=>Sport
+fincClass.pattern_32 = (F[BCEHNOPQTX] [0-9]+)|(FF [1-2][0-9]+).*=>Klassische Philologie
+fincClass.pattern_33 = (FK [0-9]+)|(FF [5-6][0-9]+).*=>Byzantinistik
+fincClass.pattern_34 = F[RUY] [0-9]+.*=>Mittellateinische Philologie
+fincClass.pattern_35 = (F[GL] [0-9]+)|(FD [1-2][0-9]+).*=>Neugriechische Philologie
+fincClass.pattern_36 = F[SVZ] [0-9]+.*=>Neulateinische Philologie
+# DDC
+fincClass.pattern_37 = ^0[1-35-9][0-9]=>Allgemeines
+fincClass.pattern_38 = (^2[0-9]{2})|(^1[37][0-9])=>Theologie und Religionswissenschaften
+fincClass.pattern_39 = ^((1[0-46-9])|21)[0-9]=>Philosophie
+fincClass.pattern_40 = ^1[35][0-9]=>Psychologie
+fincClass.pattern_41 = ^37[0-9]=>Pädagogik
+fincClass.pattern_42 = ^(4[019][0-9])|(8[09][0-9])=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+fincClass.pattern_43 = ^(43[0-9])|(83[0-9])=>Germanistik, Niederlandistik, Skandinavistik
+fincClass.pattern_44 = ^(42[0-9])|(8[12][0-9])=>Anglistik, Amerikanistik
+fincClass.pattern_45 = ^(4[4-6][0-9])|(8[4-6][0-9])=>Romanistik
+fincClass.pattern_46 = ^39[0-9]=>Ethnologie (Volks- und Völkerkunde)
+fincClass.pattern_47 = ^93[0-9]=>Klassische Archäologie
+fincClass.pattern_48 = ^7[0234-7][0-9]=>Kunst und Kunstgeschichte
+fincClass.pattern_49 = ^78[0-9]=>Musikwissenschaft
+fincClass.pattern_50 = ^32[0-9]=>Politologie
+fincClass.pattern_51 = ^3[0-367][0-9]=>Soziologie
+fincClass.pattern_52 = ^35[0-9]=>Militärwissenschaft
+fincClass.pattern_53 = ^((9[012-9])|(1[89])|27)[0-9]=>Geschichte
+fincClass.pattern_54 = ^3[45][0-9]=>Rechtswissenschaft
+fincClass.pattern_55 = ^(3[38][0-9])|(65[0-9])=>Wirtschaftswissenschaften
+fincClass.pattern_56 = ^(91|55)[0-9]=>Geographie
+fincClass.pattern_57 = ^(51|16|31)[0-9]=>Mathematik
+fincClass.pattern_58 = ^(00|77)[0-9]=>Informatik
+fincClass.pattern_59 = ^50[0-9]=>Allgemeine Naturwissenschaft
+fincClass.pattern_60 = ^5[56][0-9]=>Geologie und Paläontologie
+fincClass.pattern_61 = ^5[23][0-9]=>Physik
+fincClass.pattern_62 = ^(54[0-9])|(66[0-9])=>Chemie und Pharmazie
+fincClass.pattern_63 = ^5[7-9][0-9]=>Biologie
+fincClass.pattern_64 = ^(61|57)[0-9]=>Medizin
+fincClass.pattern_65 = ^(6[34][0-9])|(7[134][0-9])=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+fincClass.pattern_66 = ^((6[0-789])|72)[0-9]=>Technik
+fincClass.pattern_67 = ^79[0-9]=>Sport
+fincClass.pattern_68 = ^((4[78])|8[78])[0-9]=>Klassische Philologie
+fincClass.pattern_69 = ^[48]8[0-9]=>Neugriechische Philologie
+fincClass.pattern_70 = ^[48]7[0-9]=>Neulateinische Philologie
+fincClass.pattern_71 = ^04[0-9]=>no subject assigned
+#BIC
+fincClass.pattern_72 = ((^[BGW]$)|(^((B[GJMT])|(G[BLMPT])|(WZ))([A-Z]|$)))=>Allgemeines
+fincClass.pattern_73 = ^HR([A-Z]|$)=>Theologie und Religionswissenschaften
+fincClass.pattern_74 = ^HP([A-Z]|$)=>Philosophie
+fincClass.pattern_75 = ^JM([A-Z]|$)=>Psychologie
+fincClass.pattern_76 = ((^E$)|(^((CJ)|(E[BLS])|(JN)|(YQ))([A-Z]|$)))=>Pädagogik
+fincClass.pattern_77 = ((^[CD]$)|(^((C[BF])|(D[CDNQS]))([A-Z]|$)))=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen
+fincClass.pattern_78 = ^E[BLS]([A-Z]|$)=>Anglistik, Amerikanistik
+fincClass.pattern_79 = ^HD([A-Z]|$)=>Klassische Archäologie
+fincClass.pattern_80 = ((^A$)|(^((A[BCFGJKMNPS])|(WF))([A-Z]|$)))=>Kunst und Kunstgeschichte
+fincClass.pattern_81 = (((^AS)|(^AV))([A-Z]|$))=>Musikwissenschaft
+fincClass.pattern_82 = ^JP([A-Z]|$)=>Politologie
+fincClass.pattern_83 = ((^J$)|(^J[FHK]([A-Z]|$)))=>Soziologie
+fincClass.pattern_84 = ^JW([A-Z]|$)=>Militärwissenschaft
+fincClass.pattern_85 = ((^H$)|(^(HB|WQ|BG)([A-Z]|$)))=>Geschichte
+fincClass.pattern_86 = ((^L$)|(^L[ABNR]([A-Z]|$)))=>Rechtswissenschaft
+fincClass.pattern_87 = ((^K$)|(^((K[CFJN])|AK|TR|UF)([A-Z]|$)))=>Wirtschaftswissenschaften
+fincClass.pattern_88 = ((^R$)|(^RG([A-Z]|$)))=>Geographie
+fincClass.pattern_89 = ^PB([A-Z]|$)=>Mathematik
+fincClass.pattern_90 = ((^U$)|(^((U[BDFGKLMNQRTY])|TJ)([A-Z]|$)))=>Informatik
+fincClass.pattern_91 = ((^P$)|(^PD([A-Z]|$)))=>Allgemeine Naturwissenschaft
+fincClass.pattern_92 = ^(RB|TH)([A-Z]|$)=>Geologie und Paläontologie
+fincClass.pattern_93 = ^P[GH]([A-Z]|$)=>Physik
+fincClass.pattern_94 = ^(PN|TD|TC)([A-Z]|$)=>Chemie und Pharmazie
+fincClass.pattern_95 = ^(MZ|PS|TC|RN)([A-Z]|$)=>Biologie
+fincClass.pattern_96 = ((^M$)|(^M[BFJMNQRX]([A-Z]|$)))=>Medizin
+fincClass.pattern_97 = ^(RP|TV|WB|WF|WK|WM)([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+fincClass.pattern_98 = ((^T$)|(^(AM|RN|RP|TC|TD|TH|(T[BGJNQRT]))([A-Z]|$)))=>Technik
+fincClass.pattern_99 = ^WS([A-Z]|$)=>Sport
+fincClass.pattern_100 = ((^[FVY]$)|(^((F[ACFHJKLMPQRTVWXYZ])|(V[FSX])|(W[CDGHJNT])|(Y[BDFNRXZ]))([A-Z]|$)))=>no subject assigned
+
+#DDC
+#fincClass.pattern_37 = ^00[0-9]=>Informatik
+#fincClass.pattern_38 = ^01[0-9]=>Allgemeines
+#fincClass.pattern_39 = ^02[0-9]=>Allgemeines
+#fincClass.pattern_40 = ^03[0-9]=>Allgemeines
+#fincClass.pattern_41 = ^04[0-9]=>no subject assigned
+#fincClass.pattern_42 = ^05[0-9]=>Allgemeines
+#fincClass.pattern_43 = ^06[0-9]=>Allgemeines
+#fincClass.pattern_44 = ^07[0-9]=>Allgemeines
+#fincClass.pattern_45 = ^08[0-9]=>Allgemeines
+#fincClass.pattern_46 = ^09[0-9]=>Allgemeines
+#fincClass.pattern_47 = ^10[0-9]=>Philosophie
+#fincClass.pattern_48 = ^11[0-9]=>Philosophie
+#fincClass.pattern_49 = ^12[0-9]=>Philosophie
+#fincClass.pattern_50 = ^13[0-9]=>Philosophie
+#fincClass.pattern_51 = ^14[0-9]=>Philosophie
+#fincClass.pattern_52 = ^15[0-9]=>Psychologie
+#fincClass.pattern_53 = ^16[0-9]=>Philosophie
+#fincClass.pattern_54 = ^17[0-9]=>Philosophie
+#fincClass.pattern_55 = ^18[0-9]=>Philosophie
+#fincClass.pattern_56 = ^19[0-9]=>Philosophie
+#fincClass.pattern_57 = ^20[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_58 = ^21[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_59 = ^22[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_60 = ^23[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_61 = ^24[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_62 = ^25[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_63 = ^26[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_64 = ^27[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_65 = ^28[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_66 = ^29[0-9]=>Theologie und Religionswissenschaften
+#fincClass.pattern_67 = ^30[0-9]=>Soziologie
+#fincClass.pattern_68 = ^31[0-9]=>Soziologie
+#fincClass.pattern_69 = ^32[0-9]=>Politologie
+#fincClass.pattern_70 = ^33[0-9]=>Wirtschaftswissenschaften
+#fincClass.pattern_71 = ^34[0-9]=>Rechtswissenschaft
+#fincClass.pattern_72 = ^35[0-9]=>Militärwissenschaft
+#fincClass.pattern_73 = ^36[0-9]=>Soziologie
+#fincClass.pattern_74 = ^37[0-9]=>Pädagogik
+#fincClass.pattern_75 = ^38[0-9]=>Wirtschaftswissenschaften
+#fincClass.pattern_76 = ^39[0-9]=>Ethnologie (Volks- und Völkerkunde)
+#fincClass.pattern_77 = ^40[0-9]=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_78 = ^41[0-9]=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_79 = ^42[0-9]=>Anglistik, Amerikanistik
+#fincClass.pattern_80 = ^43[0-9]=>Germanistik, Niederlandistik, Skandinavistik
+#fincClass.pattern_81 = ^44[0-9]=>Romanistik
+#fincClass.pattern_82 = ^45[0-9]=>Romanistik
+#fincClass.pattern_83 = ^46[0-9]=>Romanistik
+#fincClass.pattern_84 = ^47[0-9]=>Klassische Philologie
+#fincClass.pattern_85 = ^48[0-9]=>Klassische Philologie
+#fincClass.pattern_86 = ^49[0-9]=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_87 = ^50[0-9]=>Allgemeine Naturwissenschaft
+#fincClass.pattern_88 = ^51[0-9]=>Mathematik
+#fincClass.pattern_89 = ^52[0-9]=>Physik
+#fincClass.pattern_90 = ^53[0-9]=>Physik
+#fincClass.pattern_91 = ^54[0-9]=>Chemie und Pharmazie
+#fincClass.pattern_92 = ^55[0-9]=>Geologie und Paläontologie
+#fincClass.pattern_93 = ^56[0-9]=>Geologie und Paläontologie
+#fincClass.pattern_94 = ^57[0-9]=>Biologie
+#fincClass.pattern_95 = ^58[0-9]=>Biologie
+#fincClass.pattern_96 = ^59[0-9]=>Biologie
+#fincClass.pattern_97 = ^60[0-9]=>Technik
+#fincClass.pattern_98 = ^61[0-9]=>Medizin
+#fincClass.pattern_99 = ^62[0-9]=>Technik
+#fincClass.pattern_100 = ^63[0-9]=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_101 = ^64[0-9]=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_102 = ^65[0-9]=>Wirtschaftswissenschaften
+#fincClass.pattern_103 = ^66[0-9]=>Chemie und Pharmazie
+#fincClass.pattern_104 = ^67[0-9]=>Technik
+#fincClass.pattern_105 = ^68[0-9]=>Technik
+#fincClass.pattern_106 = ^69[0-9]=>Technik
+#fincClass.pattern_107 = ^70[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_108 = ^71[0-9]=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_109 = ^72[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_110 = ^73[0-9]=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_111 = ^74[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_112 = ^75[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_113 = ^76[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_114 = ^77[0-9]=>Kunst und Kunstgeschichte
+#fincClass.pattern_115 = ^78[0-9]=>Musikwissenschaft
+#fincClass.pattern_116 = ^79[0-9]=>Sport
+#fincClass.pattern_117 = ^80[0-9]=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_118 = ^81[0-9]=>Anglistik, Amerikanistik
+#fincClass.pattern_119 = ^82[0-9]=>Anglistik, Amerikanistik
+#fincClass.pattern_120 = ^83[0-9]=>Germanistik, Niederlandistik, Skandinavistik
+#fincClass.pattern_121 = ^84[0-9]=>Romanistik
+#fincClass.pattern_122 = ^85[0-9]=>Romanistik
+#fincClass.pattern_123 = ^86[0-9]=>Romanistik
+#fincClass.pattern_124 = ^87[0-9]=>Neulateinische Philologie
+#fincClass.pattern_125 = ^88[0-9]=>Neugriechische Philologie
+#fincClass.pattern_126 = ^89[0-9]=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_127 = ^90[0-9]=>Geschichte
+#fincClass.pattern_128 = ^91[0-9]=>Geographie
+#fincClass.pattern_129 = ^92[0-9]=>Geschichte
+#fincClass.pattern_130 = ^93[0-9]=>Geschichte
+#fincClass.pattern_131 = ^94[0-9]=>Geschichte
+#fincClass.pattern_132 = ^95[0-9]=>Geschichte
+#fincClass.pattern_133 = ^96[0-9]=>Geschichte
+#fincClass.pattern_134 = ^97[0-9]=>Geschichte
+#fincClass.pattern_135 = ^98[0-9]=>Geschichte
+#fincClass.pattern_136 = ^99[0-9]=>Geschichte
+# BIC
+#fincClass.pattern_137 = ^A$=>Kunst und Kunstgeschichte
+#fincClass.pattern_138 = ^AB([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_139 = ^AC([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_140 = ^AF([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_141 = ^AG([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_142 = ^AJ([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_143 = ^AK([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_144 = ^AM([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_145 = ^AN([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_146 = ^AP([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_147 = ^AS([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_148 = ^AV([A-Z]|$)=>Musikwissenschaft
+#fincClass.pattern_149 = ^B$=>Allgemeines
+#fincClass.pattern_150 = ^BG([A-Z]|$)=>Allgemeines
+#fincClass.pattern_151 = ^BJ([A-Z]|$)=>Allgemeines
+#fincClass.pattern_152 = ^BM([A-Z]|$)=>Allgemeines
+#fincClass.pattern_153 = ^BT([A-Z]|$)=>Allgemeines
+#fincClass.pattern_154 = ^C$=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen
+#fincClass.pattern_155 = ^CB([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_156 = ^CF([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_157 = ^CJ([A-Z]|$)=>Pädagogik
+#fincClass.pattern_158 = ^D$=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäische Sprachen und Literaturen
+#fincClass.pattern_159 = ^DC([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_160 = ^DD([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_161 = ^DN([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_162 = ^DQ([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_163 = ^DS([A-Z]|$)=>Allgemeine und vergleichende Sprach- und Literaturwissenschaft, Indogermanistik, Außereuropäche Sprachen und Literaturen
+#fincClass.pattern_164 = ^E$=>Pädagogik
+#fincClass.pattern_165 = ^EB([A-Z]|$)=>Pädagogik
+#fincClass.pattern_166 = ^EL([A-Z]|$)=>Pädagogik
+#fincClass.pattern_167 = ^ES([A-Z]|$)=>Pädagogik
+#fincClass.pattern_168 = ^F$=>unassigned
+#fincClass.pattern_169 = ^FA([A-Z]|$)=>unassigned
+#fincClass.pattern_170 = ^FC([A-Z]|$)=>unassigned
+#fincClass.pattern_171 = ^FF([A-Z]|$)=>unassigned
+#fincClass.pattern_172 = ^FH([A-Z]|$)=>unassigned
+#fincClass.pattern_173 = ^FJ([A-Z]|$)=>unassigned
+#fincClass.pattern_174 = ^FK([A-Z]|$)=>unassigned
+#fincClass.pattern_175 = ^FL([A-Z]|$)=>unassigned
+#fincClass.pattern_176 = ^FM([A-Z]|$)=>unassigned
+#fincClass.pattern_177 = ^FP([A-Z]|$)=>unassigned
+#fincClass.pattern_178 = ^FQ([A-Z]|$)=>unassigned
+#fincClass.pattern_179 = ^FR([A-Z]|$)=>unassigned
+#fincClass.pattern_180 = ^FT([A-Z]|$)=>unassigned
+#fincClass.pattern_181 = ^FV([A-Z]|$)=>unassigned
+#fincClass.pattern_182 = ^FW([A-Z]|$)=>unassigned
+#fincClass.pattern_183 = ^FX([A-Z]|$)=>unassigned
+#fincClass.pattern_184 = ^FY([A-Z]|$)=>unassigned
+#fincClass.pattern_185 = ^FZ([A-Z]|$)=>unassigned
+#fincClass.pattern_186 = ^G$=>Allgemeines
+#fincClass.pattern_187 = ^GB([A-Z]|$)=>Allgemeines
+#fincClass.pattern_188 = ^GL([A-Z]|$)=>Allgemeines
+#fincClass.pattern_189 = ^GM([A-Z]|$)=>Allgemeines
+#fincClass.pattern_190 = ^GP([A-Z]|$)=>Allgemeines
+#fincClass.pattern_191 = ^GT([A-Z]|$)=>Allgemeines
+#fincClass.pattern_192 = ^H$=>Geschichte
+#fincClass.pattern_193 = ^HB([A-Z]|$)=>Geschichte
+#fincClass.pattern_194 = ^HD([A-Z]|$)=>Klassische Archäologie
+#fincClass.pattern_195 = ^HP([A-Z]|$)=>Philosophie
+#fincClass.pattern_196 = ^HR([A-Z]|$)=>Theologie und Religionswissenschaften
+#fincClass.pattern_197 = ^J$=>Soziologie
+#fincClass.pattern_198 = ^JF([A-Z]|$)=>Soziologie
+#fincClass.pattern_199 = ^JH([A-Z]|$)=>Soziologie
+#fincClass.pattern_200 = ^JK([A-Z]|$)=>Soziologie
+#fincClass.pattern_201 = ^JM([A-Z]|$)=>Psychologie
+#fincClass.pattern_202 = ^JN([A-Z]|$)=>Pädagogik
+#fincClass.pattern_203 = ^JP([A-Z]|$)=>Politologie
+#fincClass.pattern_204 = ^JW([A-Z]|$)=>Militärwissenschaft
+#fincClass.pattern_205 = ^K$=>Wirtschaftswissenschaften
+#fincClass.pattern_206 = ^KC([A-Z]|$)=>Wirtschaftswissenschaften
+#fincClass.pattern_207 = ^KF([A-Z]|$)=>Wirtschaftswissenschaften
+#fincClass.pattern_208 = ^KJ([A-Z]|$)=>Wirtschaftswissenschaften
+#fincClass.pattern_209 = ^KN([A-Z]|$)=>Wirtschaftswissenschaften
+#fincClass.pattern_210 = ^L$=>Rechtswissenschaft
+#fincClass.pattern_211 = ^LA([A-Z]|$)=>Rechtswissenschaft
+#fincClass.pattern_212 = ^LB([A-Z]|$)=>Rechtswissenschaft
+#fincClass.pattern_213 = ^LN([A-Z]|$)=>Rechtswissenschaft
+#fincClass.pattern_214 = ^LR([A-Z]|$)=>Rechtswissenschaft
+#fincClass.pattern_215 = ^M$=>Medizin
+#fincClass.pattern_216 = ^MB([A-Z]|$)=>Medizin
+#fincClass.pattern_217 = ^MF([A-Z]|$)=>Medizin
+#fincClass.pattern_218 = ^MJ([A-Z]|$)=>Medizin
+#fincClass.pattern_219 = ^MM([A-Z]|$)=>Medizin
+#fincClass.pattern_220 = ^MN([A-Z]|$)=>Medizin
+#fincClass.pattern_221 = ^MQ([A-Z]|$)=>Medizin
+#fincClass.pattern_222 = ^MR([A-Z]|$)=>Medizin
+#fincClass.pattern_223 = ^MX([A-Z]|$)=>Medizin
+#fincClass.pattern_224 = ^MZ([A-Z]|$)=>Biologie
+#fincClass.pattern_225 = ^P$=>Allgemeine Naturwissenschaft
+#fincClass.pattern_226 = ^PB([A-Z]|$)=>Mathematik
+#fincClass.pattern_227 = ^PD([A-Z]|$)=>Allgemeine Naturwissenschaft
+#fincClass.pattern_228 = ^PG([A-Z]|$)=>Physik
+#fincClass.pattern_229 = ^PH([A-Z]|$)=>Physik
+#fincClass.pattern_230 = ^PN([A-Z]|$)=>Chemie und Pharmazie
+#fincClass.pattern_231 = ^PS([A-Z]|$)=>Biologie
+#fincClass.pattern_232 = ^R$=>Geographie
+#fincClass.pattern_233 = ^RB([A-Z]|$)=>Geologie und Paläontologie
+#fincClass.pattern_234 = ^RG([A-Z]|$)=>Geographie
+#fincClass.pattern_235 = ^RN([A-Z]|$)=>Technik
+#fincClass.pattern_236 = ^RP([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_237 = ^T$=>Technik
+#fincClass.pattern_238 = ^TB([A-Z]|$)=>Technik
+#fincClass.pattern_239 = ^TC([A-Z]|$)=>Biologie
+#fincClass.pattern_240 = ^TD([A-Z]|$)=>Chemie und Pharmazie
+#fincClass.pattern_241 = ^TG([A-Z]|$)=>Technik
+#fincClass.pattern_242 = ^TH([A-Z]|$)=>Geologie und Paläontologie
+#fincClass.pattern_243 = ^TJ([A-Z]|$)=>Technik
+#fincClass.pattern_244 = ^TN([A-Z]|$)=>Technik
+#fincClass.pattern_245 = ^TQ([A-Z]|$)=>Technik
+#fincClass.pattern_246 = ^TR([A-Z]|$)=>Technik
+#fincClass.pattern_247 = ^TT([A-Z]|$)=>Technik
+#fincClass.pattern_248 = ^TV([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_249 = ^U$=>Informatik
+#fincClass.pattern_250 = ^UB([A-Z]|$)=>Informatik
+#fincClass.pattern_251 = ^UD([A-Z]|$)=>Informatik
+#fincClass.pattern_252 = ^UF([A-Z]|$)=>Informatik
+#fincClass.pattern_253 = ^UG([A-Z]|$)=>Informatik
+#fincClass.pattern_254 = ^UK([A-Z]|$)=>Informatik
+#fincClass.pattern_255 = ^UL([A-Z]|$)=>Informatik
+#fincClass.pattern_256 = ^UM([A-Z]|$)=>Informatik
+#fincClass.pattern_257 = ^UN([A-Z]|$)=>Informatik
+#fincClass.pattern_258 = ^UQ([A-Z]|$)=>Informatik
+#fincClass.pattern_259 = ^UR([A-Z]|$)=>Informatik
+#fincClass.pattern_260 = ^UT([A-Z]|$)=>Informatik
+#fincClass.pattern_261 = ^UY([A-Z]|$)=>Informatik
+#fincClass.pattern_262 = ^V$=>unassigned
+#fincClass.pattern_263 = ^VF([A-Z]|$)=>unassigned
+#fincClass.pattern_264 = ^VS([A-Z]|$)=>unassigned
+#fincClass.pattern_265 = ^VX([A-Z]|$)=>unassigned
+#fincClass.pattern_266 = ^W$=>Allgemeines
+#fincClass.pattern_267 = ^WB([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_268 = ^WC([A-Z]|$)=>unassigned
+#fincClass.pattern_269 = ^WD([A-Z]|$)=>unassigned
+#fincClass.pattern_270 = ^WF([A-Z]|$)=>Kunst und Kunstgeschichte
+#fincClass.pattern_271 = ^WG([A-Z]|$)=>unassigned
+#fincClass.pattern_272 = ^WH([A-Z]|$)=>unassigned
+#fincClass.pattern_273 = ^WJ([A-Z]|$)=>unassigned
+#fincClass.pattern_274 = ^WK([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_275 = ^WM([A-Z]|$)=>Land- und Forstwirtschaft, Gartenbau, Fischereiwirtschaft, Hauswirtschaft
+#fincClass.pattern_276 = ^WN([A-Z]|$)=>unassigned
+#fincClass.pattern_277 = ^WQ([A-Z]|$)=>Geschichte
+#fincClass.pattern_278 = ^WS([A-Z]|$)=>Sport
+#fincClass.pattern_279 = ^WT([A-Z]|$)=>unassigned
+#fincClass.pattern_280 = ^WZ([A-Z]|$)=>Allgemeines
+#fincClass.pattern_281 = ^Y$=>unassigned
+#fincClass.pattern_282 = ^YB([A-Z]|$)=>unassigned
+#fincClass.pattern_283 = ^YD([A-Z]|$)=>unassigned
+#fincClass.pattern_284 = ^YF([A-Z]|$)=>unassigned
+#fincClass.pattern_285 = ^YN([A-Z]|$)=>unassigned
+#fincClass.pattern_286 = ^YQ([A-Z]|$)=>Pädagogik
+#fincClass.pattern_287 = ^YR([A-Z]|$)=>unassigned
+#fincClass.pattern_288 = ^YX([A-Z]|$)=>unassigned
+#fincClass.pattern_289 = ^YZ([A-Z]|$)=>unassigned
\ No newline at end of file
diff --git a/import/translation_maps/format_map_de105.properties b/import/translation_maps/format_map_de105.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c0f3be614f5bdcf60a44a1861a5eb59f8f5b0786
--- /dev/null
+++ b/import/translation_maps/format_map_de105.properties
@@ -0,0 +1,330 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Formate der UB Freiberg, aus LIB_GMD_DESC
+
+#Folgende Gruppierung für Facetten (Basis siehe weiter unten):
+
+de105.pattern_0 = ^AT$=>Book
+de105.pattern_1 = ^B$=>Book
+de105.pattern_2 = ^CD$=>Multimedia
+de105.pattern_3 = ^CDB$=>Book
+de105.pattern_4 = ^CD[ST]$=>Multimedia
+de105.pattern_5 = ^CDD$=>Database
+de105.pattern_6 = ^CDK$=>Map
+de105.pattern_7 = Z$=>Journal
+de105.pattern_8 = ZR=>Book
+de105.pattern_9 = ^D$=>Book
+de105.pattern_10 = ^DA$=>Book
+de105.pattern_11 = ^DA$=>Thesis
+de105.pattern_12 = ^DB$=>Database
+de105.pattern_13 = ^DIA$=>Image / Photo
+de105.pattern_14 = ^DISK$=>Multimedia
+de105.pattern_15 = ^DVD$=>Multimedia
+de105.pattern_16 = ^DVDB$=>Book
+de105.pattern_17 = ^DVDD$=>Database
+de105.pattern_18 = ^DVDK$=>Map
+de105.pattern_19 = ^DVD[RSV]=>Multimedia
+de105.pattern_20 = ^E=>Ebook
+de105.pattern_21 = ^EBOOK$=>Electronic Resource
+de105.pattern_22 = ^EBOOK$=>Book
+de105.pattern_23 = HS=>Thesis
+de105.pattern_24 = ^EHS$=>Book
+de105.pattern_25 = FI$|MF|FIHS=>Microform
+de105.pattern_26 = ^FI[HL]=>Book
+de105.pattern_27 = ^FIL=>Ebook
+de105.pattern_28 = ^FILE$=>Thesis
+de105.pattern_29 = ^FILE$=>Electronic Resource
+de105.pattern_30 = ^HS=>Book
+de105.pattern_31 = ^H$=>Manuscript
+de105.pattern_32 = ^K$=>Image / Photo
+de105.pattern_33 = ^KT$=>Map
+de105.pattern_34 = ^KTA$=>Book
+de105.pattern_35 = ^L[BO]=>Book
+de105.pattern_36 = [OBR]E$=>Ebook
+de105.pattern_37 = ^LOE$=>Book
+de105.pattern_38 = ^M[BD]=>Book
+de105.pattern_39 = ^MBE$=>Electronic Resource
+de105.pattern_40 = ^MD$=>Multimedia
+de105.pattern_41 = ^S[CK]=>Multimedia
+de105.pattern_42 = ^VK$=>Multimedia
+de105.pattern_43 = ^ZRE$=>Electronic Resource
+de105.pattern_44 = ^Z[ST]=>Journal
+de105.pattern_45 = ^Z[ST]E$=>Electronic Resource
+de105.pattern_46 = ^UR$=>Deed
+de105.pattern_47 = ^OV$=>Multimedia
+de105.pattern_48 = ^OV$=>Lecture Recording
+de105.pattern_49 = ^A$=>Contained Article
+de105.pattern_50 = ^CDDA$=>Thesis
+de105.pattern_51 = ^CDDA$=>Book
+de105.pattern_52 = ^BEIL$=>Book
+de105.pattern_53 = ^BL$=>Book
+de105.pattern_54 = ^IPAD$=>iPad / Multimedia
+de105.pattern_55 = ^APP$=>iPad / Multimedia
+de105.pattern_56 = ^DVDDA$=>Thesis
+de105.pattern_57 = ^DVDDA$=>Book
+
+de105.pattern_58 = QucosaArticles=>QucosaArticles
+de105.pattern_59 = QucosaThesis=>Thesis
+de105.pattern_60 = QucosaConferenceproceeding=>QucosaConferenceproceeding
+de105.pattern_61 = QucosaScore=>QucosaScore
+de105.pattern_62 = QucosaElectronicResource=>QucosaElectronicResource
+de105.pattern_63 = QucosaEBOOK=>QucosaEBOOK
+
+de105.pattern_64 = Map=>Map
+
+###########################
+# old:
+#de105.pattern_0 = ^B$=>Book
+#de105.pattern_1 = ^CDB$=>Book
+#de105.pattern_2 = CD=>Multimedia
+#de105.pattern_3 = ^H$=>Book
+#de105.pattern_4 = ^H$=>Manuscript
+#de105.pattern_5 = ^LB$=>Book
+#de105.pattern_6 = ^LO=>Book
+#de105.pattern_7 = ^M[BD]$=>Book
+#de105.pattern_8 = ^BEIL$=>Book
+#de105.pattern_9 = ^AT$=>Book
+#de105.pattern_10 = ^BL$=>Book
+#de105.pattern_11 = ^CDZ=>Journal / Serial
+#de105.pattern_12 = ^Z=>Journal / Serial
+#de105.pattern_13 = ^FI$=>Microform
+#de105.pattern_14 = ^MF$=>Microform
+#de105.pattern_15 = HS=>Thesis
+#de105.pattern_16 = ^DA$=>Thesis
+#de105.pattern_17 = ^CDK$=>Map
+#de105.pattern_18 = ^KT=>Map
+#de105.pattern_19 = ^DIA$=>Multimedia
+#de105.pattern_20 = SK$=>Multimedia
+#de105.pattern_21 = ^VK$=>Multimedia
+#de105.pattern_22 = DVD=>Multimedia
+#de105.pattern_23 = ^SCH$=>Multimedia
+#de105.pattern_24 = ^DB$=>Online Resource
+#de105.pattern_25 = ^MBE$=>Online Resource
+#de105.pattern_26 = ^FILE$=>Online Resource
+#de105.pattern_27 = ^Z[RST]E$=>Online Resource
+#de105.pattern_28 = ^BDIS$=>Multimedia
+#de105.pattern_29 = ^EBOOK$=>E-Book
+#de105.pattern_30 = ^MBE$=>E-Book
+#de105.pattern_31 = ^EBOOK$=>Online Resource
+#de105.pattern_32 = ^D$=>Book
+#de105.pattern_33 = ^NL$=>Book
+#de105.pattern_34 = ^K$=>Map
+#de105.pattern_35 = ^SP$=>Map
+#de105.pattern_36 = ^UR$=>Deed
+#de105.pattern_37 = ^FILE$=>Thesis
+
+########################################
+# Veränderung laut Ticket #1348
+
+#neue Format-Facette:
+#Datenbanken - darunter gruppiert: CDD, DB
+#Bild / Foto - darunter gruppiert: DIA, K
+
+#Codes ohne Erklärung bleiben unverändert so wie bisher
+#entfällt bald -> erstmal noch im Mapping belassen
+#die auflistung hier ist maßgebend: wenn bei der vorherigen Liste z.B. KTA in die Format-Facette Karte ging, geht sie jetzt nur noch in BUch
+
+#Format-Codes à la DVDK etc. gibts bei uns in Libero noch nicht. da stricken wir gerade rum. die werden dann - solange es auch noch  keine #Titel findet, nicht befüllt, richtig!?
+
+############
+#AT -> entfällt bald
+#B 
+#CD -> entfällt bald, geht auf in CD-SPezifika
+#CDB 
+#CDD -> Facette Datenbanken
+#CDK -> Facette Karte
+#CDS -> Facette Multimedia
+#CDT -> Facette Multimedia
+#CDZ -> Facette Zeitschrift
+#CDZR -> Facette Buch
+#D -> Facette Buch
+#DA -> Facette Buch, Hoschulschrift
+#DB -> Facette Datenbanken
+#DIA -> Facette Bild / Foto
+#DISK -> Facette Multimedia
+#DVD -> entfällt bald, geht auf in DVD-Spezifika
+#DVDA -> bitte löschen
+#DVDB -> neu, Facette Buch
+#DVDD -> neu, Facette Datenbanken
+#DVDK -> neu, Facette Karte
+#DVDROM -> entfällt bald, geht auf in DVD-Spezifika
+#DVDV -> Facette Multimedia
+#DVDZ -> Facette Zeitschrift
+#EBOOK -> Facette Ebook, Online-Ressource, Buch
+#EHS -> Facette Ebook, Hochschulschrift, Buch
+#FI
+#MF
+#FIHS -> Facette Hochschulschrift, Mikroform, Buch, Ebook
+#FILE -> Facette Hochschulschrift, Online-Ressource, Buch, Ebook
+#H
+#HS -> Facette Hochschulschrift, Buch
+#K -> Facette Bild / Foto
+#KT
+#KTA -> Facette Buch
+#LB
+#LO
+#LOE -> Facette Buch, Ebook
+#MB
+#MBE -> Facette Ebook, Online-Ressource, Buch
+#MD -> Facette Buch, Multimedia
+#SCH
+#SK
+#SP -> Facette _blank>nicht zugeordnet
+#VK
+#ZR -> Facette Buch
+#ZRE -> Facette Buch, Ebook, Online-Ressource
+#ZS -> Facette Zeitschrift
+#ZSE -> Facette Zeitschrift, Online-Ressource
+#ZT -> Facette Zeitschrift
+#ZTE -> Facette Zeitschrift, Online-Ressource
+#UR
+
+########################################
+# Veränderung laut Ticket #1083
+# FILE auch zusätzlich "Hochschulschrift"
+
+########################################
+# Veränderung laut Ticket #946
+
+#"Digitale Medien" soll weg.
+
+#"Online-Ressourcen"
+#FILE
+#ZRE
+#ZSE
+#ZTE
+#MBE
+#DB
+#EBOOK
+    
+#"Multimedia"
+#CDB
+#CDD
+#CDK
+#CDS
+#CDZ
+#CDZR
+#DISK
+#BCD
+#BDIS
+#BSK
+#BCDTU
+#DVDROM
+#DVDZ
+
+#"E-Book"
+#EBOOK
+#MBE
+
+####################################################
+
+#Facette: Buch
+#B
+#CDB
+#H
+#LB
+#LO
+#LOE
+#MB
+#MD
+#BEIL
+#AT
+#BL
+
+#Facette: Zeitschrift / Reihe
+#CDZ
+#CDZR
+#ZR
+#ZRE
+#ZS
+#ZSE
+#ZT
+#ZTE
+
+#Facette: Mikroform
+#FI
+#MF
+
+#Facette: Hochschulschrift
+#EHS
+#HS
+#FIHS
+#DA
+
+#Facette: Karte
+#CDK
+#KT
+
+#Facette: Multimedia
+#DIA
+#SK
+#VK
+#BDVD
+#DVD
+#SCH
+#DVDA
+#DVDV
+#CDT
+#CD
+
+#Facette: Manuskript
+#H
+
+##################################################
+#AT	    = Arbeitstransparent
+#B           = Monographie
+#BCD         = CD-ROM als Beilage
+#BCDTU       = CD-ROM als Beilage (nur für Angehörige der TUBAF)
+#BDIS        = Diskette als Beilage
+#BDVD        = DVD als Beilage
+#BEIL        = Beilage
+#BL          = Booklet
+#BSK         = Kassette als Beilage
+#CD          = CD-ROM
+#CDB         = Monographie auf CD-ROM
+#CDD         = Datenbank auf CD-ROM
+#CDK         = Karte auf CD-ROM
+#CDS         = Sprachkurs auf CD-ROM
+#CDT         = Tonträger auf CD-ROM
+#CDZ         = Zeitschrift auf CD-ROM
+#CDZR        = Zeitschr.artige Reihe auf CD-R
+#D           = Sonderdruck
+#DA          = Abschlussarbeit
+#DB          = Datenbanken im Netz
+#DIA         = Kleinbilddia
+#DISK        = Diskette
+#DVD         = DVD
+#DVDA        = Tonträger auf DVD
+#DVDROM      = Daten auf DVD-ROM
+#DVDV        = Bildmaterial auf DVD
+#DVDZ        = DVD für Fortsetzungen
+#EBOOK       = E-Book
+#EHS         = Hochschulschrift in elektron. Form
+#FEHL        = Datenübernahme
+#FI          = Mikrofiche
+#FIHS        = Hochschulschrift auf Mikrofiche
+#FILE        = Online-Ressource
+#H           = Handschrift
+#HS          = Hochschulschrift
+#K           = Kalender
+#KT          = Karte
+#KTA         = Einblattmaterial
+#LB          = Lehrbrief
+#LO          = Loseblattausgabe
+#LOE         = Loseblattausgabe elektronisch
+#MB          = Mehrbändiges Werk
+#MBE         = Mehrbändiges Werk elektronisch
+#MD          = Medienkombination
+#MF          = Mikrofilm
+#NL          = Nachlaß
+#SCH         = Schallplatte
+#SK          = Sprachkurs auf Kassette
+#SP          = Spiel
+#VK          = Videokassette
+#ZR          = Zeitschriftenartige Reihe
+#ZRE         = Elektron. Form Zeitschriftenartige Reihe
+#ZS          = Zeitschrift
+#ZSE         = Elektronische Zeitschrift
+#ZT          = Zeitung
+#ZTE         = Elektronische Zeitung
diff --git a/import/translation_maps/format_map_de15.properties b/import/translation_maps/format_map_de15.properties
new file mode 100644
index 0000000000000000000000000000000000000000..099b0c212e242903c9becaef97faafd1b82bded8
--- /dev/null
+++ b/import/translation_maps/format_map_de15.properties
@@ -0,0 +1,75 @@
+#
+# DATA FROM INDEXER = Label
+#
+Book                               = Book, E-Book
+eBook                              = Book, E-Book
+ElectronicJournal                  = Journal, E-Journal
+ElectronicSerial                   = Journal, E-Journal
+Journal                            = Journal, E-Journal
+Serial                             = Journal, E-Journal
+ElectronicNewspaper                = Journal, E-Journal
+Newspaper                          = Journal, E-Journal
+Article                            = Article, E-Article
+ElectronicArticle                  = Article, E-Article
+ElectronicThesis                   = Thesis
+Thesis                             = Thesis
+Atlas                              = Map
+Globe                              = Map
+Map                                = Map
+AudioTape                          = Audio
+CD                                 = Audio
+DVDAudio                           = Audio
+MusicRecording                     = Audio
+Record                             = Audio
+SoundRecordingMedium               = Audio
+SoundCassette                      = Audio
+SoundDisc                          = Audio
+SoundRecording                     = Audio
+AudioVisualMedia                   = Video
+BluRayDisc                         = Video
+DVDVideo                           = Video
+Filmstrip                          = Video
+MotionPicture                      = Video
+Video                              = Video
+VideoTape                          = Video
+VideoCartridge                     = Video
+VideoCassette                      = Video
+VideoDisc                          = Video
+VideoReel                          = Video
+ArtPrint                           = Visual Media
+Chart                              = Visual Media
+Collage                            = Visual Media
+Drawing                            = Visual Media
+FlashCard                          = Visual Media
+Painting                           = Visual Media
+Photo                              = Visual Media
+Photonegative                      = Visual Media
+Placard                            = Visual Media
+Print                              = Visual Media
+SensorImage                        = Visual Media
+Slide                              = Visual Media
+Transparency                       = Visual Media
+CDROM                              = Software
+ChipCartridge                      = Software
+DiscCartridge                      = Software
+DVDROM                             = Software
+FloppyDisk                         = Software
+Software                           = Software
+TapeCartridge                      = Software
+TapeCassette                       = Software
+TapeReel                           = Software
+Microfiche                         = Microform
+Microfilm                          = Microform
+Microform                          = Microform
+MusicalScore                       = Musical Score
+NotatedMusic                       = Musical Score
+ElectronicMusicalScore             = Musical Score
+Braille                            = Braille
+Kit                                = Kit
+Manuscript                         = Manuscript
+Nachlass                           = Nachlass
+PhysicalObject                     = Physical Object
+Unknown                            = Unknown Format
+Electronic                         = Website
+ElectronicResourceDataCarrier      = Electronic Resource (Data Carrier)
+ElectronicResourceRemoteAccess     = Electronic Resource (Remote Access)
diff --git a/import/translation_maps/format_map_de520.properties b/import/translation_maps/format_map_de520.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6e41b1c52a82de349f2d67bd7dbc5d92156ee45e
--- /dev/null
+++ b/import/translation_maps/format_map_de520.properties
@@ -0,0 +1,73 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Formate der HTW Dresden, aus LIB_GMD_DESC
+
+B    = Book
+MK   = Book
+LMK  = Book
+MT   = Book
+LBS  = Book
+N    = Book
+HS   = Book
+KT   = Map
+LF   = Loose leaf edition
+ZS   = Journal/Newspaper print
+ZT   = Journal/Newspaper print
+CDZ  = Journal on data carrier
+CD   = Audio
+CDS  = Audio
+DVDA = Audio
+SK   = Audio
+DVDV = Video
+VKA  = Video
+CDB  = eBook on data carrier
+CDMT = eBook on data carrier
+DVDR = eBook on data carrier
+CDD  = eBook on data carrier
+FI   = eBook on data carrier
+EB   = eBook online
+DB   = Database online
+ZSE  = Journal online
+ZTE  = Journal online
+MB   = Multi volume set
+SE   = Multi volume set
+ZR   = Multi volume set
+ZRE  = Multi volume set
+CDZR = Multi volume set
+Aufsatz = Article online
+
+# Medientypen in deutscher Sprache:
+#B    = Buch
+#MK   = Buch
+#LMK  = Buch
+#MT   = Buch
+#LBS  = Buch
+#N    = Buch
+#HS   = Buch
+#KT   = Karte
+#LF   = Loseblattausgabe
+#ZS   = Zeitschrift/Zeitung Print
+#ZT   = Zeitschrift/Zeitung Print
+#CDZ  = Zeitschrift auf Datenträger
+#CD   = Audio
+#CDS  = Audio
+#DVDA = Audio
+#SK   = Audio
+#DVDV = Video
+#VKA  = Video
+#CDB  = eBook auf Datenträger
+#CDMT = eBook auf Datenträger
+#DVDR = eBook auf Datenträger
+#CDD  = eBook auf Datenträger
+#FI   = eBook auf Datenträger
+#EB   = eBook online
+#DB   = Datenbank online
+#ZSE  = Zeitschrift online
+#ZTE  = Zeitschrift online
+#MB   = Gesamttitel
+#SE   = Gesamttitel
+#ZR   = Gesamttitel
+#ZRE  = Gesamttitel
+#CDZR = Gesamttitel
+#Aufsatz = Aufsatz online
\ No newline at end of file
diff --git a/import/translation_maps/format_map_de540.properties b/import/translation_maps/format_map_de540.properties
new file mode 100644
index 0000000000000000000000000000000000000000..147375826f7766eeb40d2774b36de8de8033dab2
--- /dev/null
+++ b/import/translation_maps/format_map_de540.properties
@@ -0,0 +1,75 @@
+#
+# DATA FROM INDEXER = Label
+#
+Book                               = Book, E-Book
+eBook                              = Book, E-Book
+ElectronicJournal                  = Journal, E-Journal
+ElectronicSerial                   = Journal, E-Journal
+Journal                            = Journal, E-Journal
+Serial                             = Journal, E-Journal
+ElectronicNewspaper                = Newspaper, E-Paper
+Newspaper                          = Newspaper, E-Paper
+Article                            = Article, E-Article
+ElectronicArticle                  = Article, E-Article
+ElectronicThesis                   = Thesis
+Thesis                             = Thesis
+Atlas                              = Map
+Globe                              = Map
+Map                                = Map
+AudioTape                          = Audio
+CD                                 = Audio
+DVDAudio                           = Audio
+MusicRecording                     = Audio
+Record                             = Audio
+SoundRecordingMedium               = Audio
+SoundCassette                      = Audio
+SoundDisc                          = Audio
+SoundRecording                     = Audio
+AudioVisualMedia                   = Video
+BluRayDisc                         = Video
+DVDVideo                           = Video
+Filmstrip                          = Video
+MotionPicture                      = Video
+Video                              = Video
+VideoTape                          = Video
+VideoCartridge                     = Video
+VideoCassette                      = Video
+VideoDisc                          = Video
+VideoReel                          = Video
+ArtPrint                           = Visual Media
+Chart                              = Visual Media
+Collage                            = Visual Media
+Drawing                            = Visual Media
+FlashCard                          = Visual Media
+Painting                           = Visual Media
+Photo                              = Visual Media
+Photonegative                      = Visual Media
+Placard                            = Visual Media
+Print                              = Visual Media
+SensorImage                        = Visual Media
+Slide                              = Visual Media
+Transparency                       = Visual Media
+CDROM                              = Software
+ChipCartridge                      = Software
+DiscCartridge                      = Software
+DVDROM                             = Software
+FloppyDisk                         = Software
+Software                           = Software
+TapeCartridge                      = Software
+TapeCassette                       = Software
+TapeReel                           = Software
+Microfiche                         = Microform
+Microfilm                          = Microform
+Microform                          = Microform
+MusicalScore                       = Musical Score
+NotatedMusic                       = Musical Score
+ElectronicMusicalScore             = Musical Score
+Braille                            = Braille
+Kit                                = Kit
+Manuscript                         = Manuscript
+Nachlass                           = Nachlass
+PhysicalObject                     = Physical Object
+Unknown                            = Unknown Format
+Electronic                         = Website
+ElectronicResourceDataCarrier      = Electronic Resource (Data Carrier)
+ElectronicResourceRemoteAccess     = Electronic Resource (Remote Access)
diff --git a/import/translation_maps/format_map_dech1.properties b/import/translation_maps/format_map_dech1.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9f7970d5bb07197d9fd33772ef18b863681084cc
--- /dev/null
+++ b/import/translation_maps/format_map_dech1.properties
@@ -0,0 +1,120 @@
+#
+# DATA FROM INDEXER = Label
+#
+
+# Libero-Formate der UB Chemnitz, aus LIB_GMD_DESC, gruppiert und als pattern-based
+# translation map, um Mehrfachzuordnungen zu realisieren
+
+dech1.pattern_0 = Z=>Zeitschrift / Reihe
+dech1.pattern_1 = ^RE$=>Zeitschrift / Reihe
+dech1.pattern_2 = [AK]T=>Karte / Bild
+dech1.pattern_3 = ^D$=>Karte / Bild
+dech1.pattern_4 = ^DA$=>Karte / Bild
+dech1.pattern_5 = ^DIA$=>Karte / Bild
+dech1.pattern_6 = ^B$=>Buch
+dech1.pattern_7 = ^DISS$=>Buch
+dech1.pattern_8 = ^LO$=>Buch
+dech1.pattern_9 = ^MB$=>Buch
+dech1.pattern_10 = ^MKO$=>Buch
+dech1.pattern_11 = ^R$=>Buch
+dech1.pattern_12 = ^CD$=>Multimedia
+dech1.pattern_13 = ^DV=>Multimedia
+dech1.pattern_14 = ^KA$=>Multimedia
+dech1.pattern_15 = ^MK=>Multimedia
+dech1.pattern_16 = ^SLP$=>Multimedia
+dech1.pattern_17 = ^SP=>Multimedia
+dech1.pattern_18 = ^V$=>Multimedia
+dech1.pattern_19 = ^CD[BDEKN]=>Elektronische Ressource
+dech1.pattern_20 = ^CDZ[ENR]=>Elektronische Ressource
+dech1.pattern_21 = ^DB$=>Elektronische Ressource
+dech1.pattern_22 = ^DBV$=>Elektronische Ressource
+dech1.pattern_23 = ^DCD$=>Elektronische Ressource
+dech1.pattern_24 = ^DISK$=>Elektronische Ressource
+dech1.pattern_25 = ^DO$=>Elektronische Ressource
+dech1.pattern_26 = ^DVD[EN]=>Elektronische Ressource
+dech1.pattern_27 = ^EBOOK$=>Elektronische Ressource
+dech1.pattern_28 = ^EHS$=>Elektronische Ressource
+dech1.pattern_29 = ^FILE$=>Elektronische Ressource
+dech1.pattern_30 = ^SPR$=>Elektronische Ressource
+dech1.pattern_31 = ^ZE=>Elektronische Ressource
+dech1.pattern_32 = ^DA$=>Hochschulschrift
+dech1.pattern_33 = ^DCD$=>Hochschulschrift
+dech1.pattern_34 = ^DISS$=>Hochschulschrift
+dech1.pattern_35 = ^DMF$=>Hochschulschrift
+dech1.pattern_36 = ^DO$=>Hochschulschrift
+dech1.pattern_37 = HS$=>Hochschulschrift
+dech1.pattern_38 = MF$=>Mikroform
+dech1.pattern_39 = ^ZM=>Mikroform
+dech1.pattern_40 = ^KA$=>Noten
+dech1.pattern_41 = ^NOT$=>Noten
+
+# Libero-Formate der UB Chemnitz, aus LIB_GMD_DESC, gruppiert, Stand 15.05.2012
+
+# AT          = Karte / Bild
+# B           = Buch
+# CD          = Multimedia
+# CDB         = Elektronische Ressource
+# CDD         = Elektronische Ressource
+# CDE         = Elektronische Ressource
+# CDK         = Elektronische Ressource
+# CDN         = Elektronische Ressource
+# CDZA        = Zeitschrift / Reihe
+# CDZE        = Elektronische Ressource
+# CDZE        = Zeitschrift / Reihe
+# CDZN        = Elektronische Ressource
+# CDZN        = Zeitschrift / Reihe
+# CDZR        = Elektronische Ressource
+# CDZR        = Zeitschrift / Reihe
+# D           = Karte / Bild
+# DA          = Hochschulschrift
+# DA          = Karte / Bild
+# DB          = Elektronische Ressource
+# DBV         = Elektronische Ressource
+# DCD         = Elektronische Ressource
+# DCD         = Hochschulschrift
+# DIA         = Karte / Bild
+# DISK        = Elektronische Ressource
+# DISS        = Buch
+# DISS        = Hochschulschrift
+# DMF         = Hochschulschrift
+# DMF         = Mikroform
+# DO          = Elektronische Ressource
+# DO          = Hochschulschrift
+# DVDE        = Elektronische Ressource
+# DVDE        = Multimedia
+# DVDN        = Elektronische Ressource
+# DVDN        = Multimedia
+# EBOOK       = Elektronische Ressource
+# EHS         = Elektronische Ressource
+# EHS         = Hochschulschrift
+# FILE        = Elektronische Ressource
+# HS          = Hochschulschrift
+# KA          = Multimedia
+# KA          = Noten
+# KT          = Karte / Bild
+# LO          = Buch
+# MB          = Buch
+# MF          = Mikroform
+# MKO         = Buch
+# MKO         = Multimedia
+# MKZ         = Multimedia
+# MKZ         = Zeitschrift / Reihe
+# NOT         = Noten
+# R           = Buch
+# RE          = Zeitschrift / Reihe
+# SLP         = Multimedia
+# SP          = Multimedia
+# SPR         = Elektronische Ressource
+# SPR         = Multimedia
+# V           = Multimedia
+# Z           = Zeitschrift / Reihe
+# ZA          = Zeitschrift / Reihe
+# ZE          = Elektronische Ressource
+# ZE          = Zeitschrift / Reihe
+# ZEA         = Elektronische Ressource
+# ZEA         = Zeitschrift / Reihe
+# ZM          = Mikroform
+# ZM          = Zeitschrift / Reihe
+# ZMA         = Mikroform
+# ZMA         = Zeitschrift / Reihe
+# ZR          = Zeitschrift / Reihe
\ No newline at end of file
diff --git a/import/translation_maps/format_map_ded117.properties b/import/translation_maps/format_map_ded117.properties
new file mode 100644
index 0000000000000000000000000000000000000000..147375826f7766eeb40d2774b36de8de8033dab2
--- /dev/null
+++ b/import/translation_maps/format_map_ded117.properties
@@ -0,0 +1,75 @@
+#
+# DATA FROM INDEXER = Label
+#
+Book                               = Book, E-Book
+eBook                              = Book, E-Book
+ElectronicJournal                  = Journal, E-Journal
+ElectronicSerial                   = Journal, E-Journal
+Journal                            = Journal, E-Journal
+Serial                             = Journal, E-Journal
+ElectronicNewspaper                = Newspaper, E-Paper
+Newspaper                          = Newspaper, E-Paper
+Article                            = Article, E-Article
+ElectronicArticle                  = Article, E-Article
+ElectronicThesis                   = Thesis
+Thesis                             = Thesis
+Atlas                              = Map
+Globe                              = Map
+Map                                = Map
+AudioTape                          = Audio
+CD                                 = Audio
+DVDAudio                           = Audio
+MusicRecording                     = Audio
+Record                             = Audio
+SoundRecordingMedium               = Audio
+SoundCassette                      = Audio
+SoundDisc                          = Audio
+SoundRecording                     = Audio
+AudioVisualMedia                   = Video
+BluRayDisc                         = Video
+DVDVideo                           = Video
+Filmstrip                          = Video
+MotionPicture                      = Video
+Video                              = Video
+VideoTape                          = Video
+VideoCartridge                     = Video
+VideoCassette                      = Video
+VideoDisc                          = Video
+VideoReel                          = Video
+ArtPrint                           = Visual Media
+Chart                              = Visual Media
+Collage                            = Visual Media
+Drawing                            = Visual Media
+FlashCard                          = Visual Media
+Painting                           = Visual Media
+Photo                              = Visual Media
+Photonegative                      = Visual Media
+Placard                            = Visual Media
+Print                              = Visual Media
+SensorImage                        = Visual Media
+Slide                              = Visual Media
+Transparency                       = Visual Media
+CDROM                              = Software
+ChipCartridge                      = Software
+DiscCartridge                      = Software
+DVDROM                             = Software
+FloppyDisk                         = Software
+Software                           = Software
+TapeCartridge                      = Software
+TapeCassette                       = Software
+TapeReel                           = Software
+Microfiche                         = Microform
+Microfilm                          = Microform
+Microform                          = Microform
+MusicalScore                       = Musical Score
+NotatedMusic                       = Musical Score
+ElectronicMusicalScore             = Musical Score
+Braille                            = Braille
+Kit                                = Kit
+Manuscript                         = Manuscript
+Nachlass                           = Nachlass
+PhysicalObject                     = Physical Object
+Unknown                            = Unknown Format
+Electronic                         = Website
+ElectronicResourceDataCarrier      = Electronic Resource (Data Carrier)
+ElectronicResourceRemoteAccess     = Electronic Resource (Remote Access)
diff --git a/import/translation_maps/format_map_del152.properties b/import/translation_maps/format_map_del152.properties
new file mode 100644
index 0000000000000000000000000000000000000000..5a9fe24d38acf9b129a4a67edfd944c2bd41ebe0
--- /dev/null
+++ b/import/translation_maps/format_map_del152.properties
@@ -0,0 +1,39 @@
+#
+# DATA FROM INDEXER = Label
+#
+# Libero-Formate der HMT Leipzig, aus LIB_GMD_DESC, gruppiert und als pattern-based
+# translation map, um Mehrfachzuordnungen zu realisieren
+
+del152.pattern_0 = ^A$=>Aufsatz
+del152.pattern_1 = ^B$=>Buch
+del152.pattern_2 = CD$=>CD
+del152.pattern_3 = TIT=>Hierarchie
+del152.pattern_4 = ^TIT$=>Buch
+del152.pattern_5 = CDD$=>CD-ROM
+del152.pattern_6 = ^DVD$=>DVD
+del152.pattern_7 = MK=>Medienkombination
+del152.pattern_8 = ^N$=>Noten
+del152.pattern_9 = [DFT]N$=>Noten
+del152.pattern_10 = OD$=>E-Text
+del152.pattern_11 = SP$=>Schallplatte
+del152.pattern_12 = VV=>Videokassette
+del152.pattern_13 = ^DN$=>Elektronisch
+del152.pattern_14 = ^SF=>Mikrofilm
+del152.pattern_15 = ^SF$=>Buch
+del152.pattern_16 = ^AU$=>Noten
+del152.pattern_17 = ^DB$=>Datenbank
+del152.pattern_18 = ^H$=>Handschrift
+del152.pattern_19 = ^HS$=>Buch
+del152.pattern_20 = ^K$=>Kassette
+del152.pattern_21 = ^LB$=>Buch
+del152.pattern_22 = ZS$=>Zeitschrift
+del152.pattern_23 = ^OZS$=>Elektronisch
+#speziell fuer BMS online
+del152.pattern_24 = ^WL$=>Weitere Literaturnachweise
+#speziell fuer Naxos Music Library
+del152.pattern_25 = ^ECD=>Elektronisch
+del152.pattern_26 = ^PN$=>Petrucci-Noten
+del152.pattern_27 = ^DVDO$=>DVDO
+del152.pattern_28 = ^DVDV$=>DVD
+#3193: HideFacetValue Aufsatz but have own icon for AufsatzBuch
+del152.pattern_29 = ^[A]$=>Buch
diff --git a/import/translation_maps/format_map_del189.properties b/import/translation_maps/format_map_del189.properties
new file mode 100644
index 0000000000000000000000000000000000000000..733f29dff7bd21cb3a6ffb2eb65c624c07a9d4cc
--- /dev/null
+++ b/import/translation_maps/format_map_del189.properties
@@ -0,0 +1,79 @@
+#
+# DATA FROM INDEXER = Label
+# Siehe #1499.
+#
+# IMPORTANT NOTE: No spaces on the left hand side, please.
+
+ArtPrint                           = Art Print
+Collage                            = Art Print
+Drawing                            = Art Print
+Painting                           = Art Print
+Article                            = Article
+ElectronicArticle                  = Article
+Atlas                              = Map
+AudioTape                          = Audio
+CD                                 = Audio
+DVDAudio                           = Audio
+MusicRecording                     = Audio
+Record                             = Audio
+SoundRecordingMedium               = Audio
+SoundCassette                      = Audio
+SoundDisc                          = Audio
+SoundRecording                     = Audio
+TapeCartridge                      = Audio
+TapeCassette                       = Audio
+TapeReel                           = Audio
+AudioVisualMedia                   = Electronic Resource (Data Carrier)
+BluRayDisc                         = Electronic Resource (Data Carrier)
+CDROM                              = Electronic Resource (Data Carrier)
+ChipCartridge                      = Electronic Resource (Data Carrier)
+DiscCartridge                      = Electronic Resource (Data Carrier)
+DVDROM                             = Electronic Resource (Data Carrier)
+DVDVideo                           = Electronic Resource (Data Carrier)
+ElectronicResourceDataCarrier      = Electronic Resource (Data Carrier)
+FloppyDisk                         = Electronic Resource (Data Carrier)
+Book                               = Book
+Manuscript                         = Book
+Braille                            = Braille
+Chart                              = Offprint
+FlashCard                          = Offprint
+Map                                = Offprint
+Placard                            = Offprint
+Print                              = Offprint
+Slide                              = Offprint
+Transparency                       = Offprint
+eBook                              = E-Book
+ElectronicThesis                   = E-Book
+Electronic                         = Online Resource
+ElectronicResourceRemoteAccess     = Online Resource
+ElectronicJournal                  = Electronic Journal
+ElectronicSerial                   = Electronic Journal
+ElectronicNewspaper                = Electronic Newspaper
+Filmstrip                          = Film
+MotionPicture                      = Film
+Globe                              = Physical Object
+Kit                                = Physical Object
+PhysicalObject                     = Physical Object
+Journal                            = Journal
+Microfiche                         = Microform
+Microfilm                          = Microform
+Microform                          = Microform
+Photonegative                      = Microform
+MusicalScore                       = Musical Score
+NotatedMusic                       = Musical Score
+ElectronicMusicalScore             = Musical Score
+Nachlass                           = Inheritance
+Newspaper                          = Newspaper
+Photo                              = Photo
+SensorImage                        = Sensor Image
+Serial                             = Serial
+Software                           = Software
+Thesis                             = Book
+HTWK-Thesis						   = HTWK Thesis
+Unknown                            = Unknown Format
+Video                              = Video
+VideoTape                          = Video
+VideoCartridge                     = Video
+VideoCassette                      = Video
+VideoDisc                          = Video
+VideoReel                          = Video
diff --git a/import/translation_maps/format_map_dezi4.properties b/import/translation_maps/format_map_dezi4.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c85a7c76e2e24cac18d02eb5db6fec16e2463a01
--- /dev/null
+++ b/import/translation_maps/format_map_dezi4.properties
@@ -0,0 +1,49 @@
+#
+# DATA FROM INDEXER = Label
+#
+## Libero-Formate der HS Zittau/Görlitz, aus der LIB_GMD_DESC
+B    	= Book
+CDROM   = CD-ROM
+DA   	= Bachelor-/Master-/Diploma-Theses
+DISK   	= Disk
+DVD   	= DVD
+EB   	= e-Book
+FI   	= Microfiche
+HS   	= Dissertation
+KT   	= Map
+LB   	= Loose-leaf edition
+MB   	= Multi volume set_1
+MBDVD   = Multi volume DVD
+MW   	= Multi volume set_2
+SE   	= Multi volume set_3
+SOTO   	= Audio
+SP   	= Game
+VID   	= Video
+ZR   	= Multi volume set_4
+ZS   	= Journal
+ZSCROM  = Journal on data carrier
+ZT   	= Newspaper
+# Medientypen in deutscher Sprache:
+#B    	= Monographie
+#CDROM  = CD-ROM
+#DA   	= Bachelor-/Master-/Diplomarbeit
+#DISK   = Disketten
+#DVD   	= DVD
+#EB   	= E-Book
+#FI   	= Mikrofiche
+#HS   	= Hochschulschrift
+#KT  	= Karte
+#LB   	= Loseblattsammlung
+#MB   	= mehrbändige Werke
+#MBDVD  = mehrbändige DVD
+#MW   	= mehrbändige Werke in Reihe
+#SE   	= Schriftenreihe (Serie)
+#SOTO   = Sonstige Tonträger
+#SP   	= Spiel
+#VID   	= Video
+#ZR   	= Zeitschriftenartige Reihe
+#ZS   	= Zeitschrift
+#ZSCROM = Zeitschriftenjahrgang CDROM
+#ZT   	= Zeitung
+8 = e-Book
+17 = e-Book
diff --git a/import/translation_maps/format_map_dezwi2.properties b/import/translation_maps/format_map_dezwi2.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9b599b94e98c2ad36cdbf65e6a389d0dd5f6b5a2
--- /dev/null
+++ b/import/translation_maps/format_map_dezwi2.properties
@@ -0,0 +1,65 @@
+#
+# DATA FROM INDEXER = Label
+#
+## Libero-Formate der Westsächsischen Hochschule Zwickau [https://www.katalog.fh-zwickau.de], aus der LIB_GMD_DESC
+B		= Book
+BCD		= Book with CD
+CD		= Audio CD
+CDROM	= CD-ROM
+CDZ		= Journal on CD-ROM
+DISK	= Disk
+DVDR	= DVD-ROM
+DVDV	= DVD
+EB		= Ebook
+HB		= Talking book
+HS		= Academic publication
+KAS		= Cassette
+KT		= Map
+LF		= Loose-leaf edition
+LP		= Record
+MB		= Multi-volume edition
+MK		= Media combination
+NOT		= Music notes
+SE		= Series
+SVB		= Book (in several parts)
+SVC		= Audio CD (in several parts)
+SVCR	= CD-ROM (in several parts)
+SVDVD	= DVD-ROM (in several parts)
+SVHB	= Talking book (in several parts)
+SVK		= Cassette (in several parts)
+SVMK	= Media combination (in several parts)
+SVV 	= Video (in several parts)
+V		= Video
+ZS		= Journal
+ZT		= Newspaper
+# Medientypen in deutscher Sprache:
+#B 		= Buch
+#BCD 	= Buch mit CD
+#CD		= Audio-CD
+#CDROM 	= CD-ROM
+#CDZ 	= Zeitschrift auf CD-ROM
+#DISK 	= Diskette
+#DVDR 	= DVD-ROM
+#DVDV 	= DVD-Video
+#EB 		= eBook
+#HB 		= Hörbuch
+#HS 		= Hochschulschrift
+#KAS 	= Kassette
+#KT 		= Karte
+#LF 		= Loseblattsammlung
+#LP 		= Schallplatte
+#MB 		= Mehrbändiges Werk
+#MK 		= Medienkombination
+#NOT 	= Noten
+#SE		= Serie
+#SVB		= Buch (mehrteilig)
+#SVC		= Audio-CD (mehrteilig)
+#SVCR	= CD-ROM (mehrteilig)
+#SVDVD 	= DVD (mehrteilig)
+#SVHB	= Hörbuch (mehrteilig)
+#SVK		= Kassette (mehrteilig)
+#SVMK 	= Medienkombination (mehrteilig)
+#SVV 	= Video (mehrteilig)
+#V		= Video
+#ZS		= Zeitschrift
+#ZT		= Zeitung
\ No newline at end of file
diff --git a/import/translation_maps/geogr_code_map.properties b/import/translation_maps/geogr_code_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..bfb70c2b8936ecd7700debc0d35512a24c378a44
--- /dev/null
+++ b/import/translation_maps/geogr_code_map.properties
@@ -0,0 +1,373 @@
+# Geographical codes according to DIN ISO 3166
+# based on this document provided by the German National Library http://www.dnb.de/SharedDocs/Downloads/DE/DNB/standardisierung/inhaltserschliessung/laendercodesSyst.pdf
+
+# translation based on Wikipedia; for the German translation please see de.ini
+
+# Europa
+XA        = Europe
+XA-AD     = Andorra
+XA-AL     = Albania
+XA-AT     = Austria
+XA-AT-1   = Austria / Burgenland
+XA-AT-2   = Austria / Carinthia
+XA-AT-3   = Austria / Lower Austria
+XA-AT-4   = Austria / Upper Austria
+XA-AT-5   = Austria / Salzburg
+XA-AT-6   = Austria / Styria
+XA-AT-7   = Austria / Tyrol
+XA-AT-8   = Austria / Vorarlberg
+XA-AT-9   = Austria / Vienna
+XA-AX     = Åland Islands
+XA-BA     = Bosnia and Herzegovina
+XA-BE     = Belgium
+XA-BG     = Bulgaria
+XA-BY     = Belarus
+XA-CH     = Switzerland
+XA-CH-AG  = Switzerland / Aargau
+XA-CH-AI  = Switzerland / Appenzell Innerrhoden
+XA-CH-AR  = Switzerland / Appenzell Ausserrhoden
+XA-CH-BE  = Switzerland / Bern
+XA-CH-BL  = Switzerland / Basel-Landschaft
+XA-CH-BS  = Switzerland / Basel
+XA-CH-FR  = Switzerland / Fribourg
+XA-CH-GE  = Switzerland / Geneva
+XA-CH-GL  = Switzerland / Glarus
+XA-CH-GR  = Switzerland / Graubünden
+XA-CH-JU  = Switzerland / Jura
+XA-CH-LU  = Switzerland / Lucerne
+XA-CH-NE  = Switzerland / Neuchâtel
+XA-CH-NW  = Switzerland / Nidwalden
+XA-CH-OW  = Switzerland / Obwalden
+XA-CH-SG  = Switzerland / St. Gallen
+XA-CH-SH  = Switzerland / Schaffhausen
+XA-CH-SO  = Switzerland / Solothurn
+XA-CH-SZ  = Switzerland / Schwyz
+XA-CH-TG  = Switzerland / Thurgau
+XA-CH-TI  = Switzerland / Ticino
+XA-CH-UR  = Switzerland / Uri
+XA-CH-VD  = Switzerland / Vaud
+XA-CH-VS  = Switzerland / Valais
+XA-CH-ZG  = Switzerland / Zug
+XA-CH-ZH  = Switzerland / Zurich
+XA-CY     = Cyprus
+XA-CZ     = Czech Republic
+XA-DE     = Germany
+XA-DE-BB  = Germany / Brandenburg
+XA-DE-BE  = Germany / Berlin
+XA-DE-BW  = Germany / Baden-Württemberg
+XA-DE-BY  = Germany / Bavaria
+XA-DE-HB  = Germany / Bremen
+XA-DE-HE  = Germany / Hesse
+XA-DE-HH  = Germany / Hamburg
+XA-DE-MV  = Germany / Mecklenburg-Vorpommern
+XA-DE-NI  = Germany / Lower Saxony
+XA-DE-NW  = Germany / North Rhine-Wesphalia
+XA-DE-RP  = Germany / Rhineland-Palatinate
+XA-DE-SH  = Germany / Schleswig-Holstein
+XA-DE-SL  = Germany / Saarland
+XA-DE-SN  = Germany / Saxony
+XA-DE-ST  = Germany / Saxony-Anhalt
+XA-DE-TH  = Germany / Thuringia
+XA-DK     = Denmark
+XA-EE     = Estonia
+XA-ES     = Spain
+XA-FI     = Finland
+XA-FR     = France
+XA-GB     = United Kingdom
+XA-GG     = Guernsey
+XA-GI     = Gibraltar
+XA-GR     = Greece
+XA-HR     = Croatia
+XA-HU     = Hungary
+XA-IE     = Ireland
+XA-IM     = Isle of Man
+XA-IS     = Iceland
+XA-IT     = Italy
+XA-IT-32  = Italy / Trentino-Alto Adige
+XA-JE     = Jersey
+XA-LI     = Liechtenstein
+XA-LT     = Lithuania
+XA-LU     = Luxembourg
+XA-LV     = Latvia
+XA-MC     = Monaco
+XA-MD     = Moldova
+XA-ME     = Montenegro
+XA-MK     = Macedonia
+XA-MT     = Malta
+XA-NL     = Netherlands
+XA-NO     = Norway
+XA-PL     = Poland
+XA-PT     = Portugal
+XA-RO     = Romania
+XA-RS     = Serbia
+XA-RU     = Russia
+XA-SE     = Sweden
+XA-SI     = Slovenia
+XA-SK     = Slovakia
+XA-SM     = San Marino
+XA-UA     = Ukraine
+XA-VA     = Vatican City
+# Asien
+XB        = Asia
+XB-AE     = United Arab Emirates
+XB-AF     = Afghanistan
+XB-AM     = Armenia
+XB-AZ     = Azerbaijan
+XB-BD     = Bangladesh
+XB-BH     = Bahrain
+XB-BN     = Brunei
+XB-BT     = Bhutan
+XB-CN     = China
+XB-CN-54  = Tibet
+XB-GE     = Georgia
+XB-HK     = Hong Kong
+XB-ID     = Indonesia
+XB-IL     = Israel
+XB-IN     = India
+XB-IQ     = Iraq
+XB-IR     = Iran
+XB-JO     = Jordan
+XB-JP     = Japan
+XB-KG     = Kyrgyzstan
+XB-KH     = Cambodia
+XB-KP     = North Korea
+XB-KR     = South Korea
+XB-KW     = Kuwait
+XB-KZ     = Kazakhstan
+XB-LA     = Laos
+XB-LB     = Lebanon
+XB-LK     = Sri Lanka
+XB-MM     = Myanmar
+XB-MN     = Mongolia
+XB-MO     = Macao
+XB-MV     = Maldives
+XB-MY     = Malaysia
+XB-NP     = Nepal
+XB-OM     = Oman
+XB-PH     = Philippines
+XB-PK     = Pakistan
+XB-PS     = Palestinian territories
+XB-QA     = Qatar
+XB-SA     = Saudi Arabia
+XB-SG     = Singapore
+XB-SY     = Syria
+XB-TH     = Thailand
+XB-TJ     = Tajikistan
+XB-TL     = Timor-Leste
+XB-TM     = Turkmenistan
+XB-TR     = Turkey
+XB-TW     = Taiwan
+XB-UZ     = Uzbekistan
+XB-VN     = Vietnam
+XB-YE     = Yemen
+# Afrika
+XC        = Africa
+XC-AO     = Angola
+XC-BF     = Burkina Faso
+XC-BI     = Burundi
+XC-BJ     = Benin
+XC-BW     = Botswana
+XC-CD     = Congo, Democratic Republic of the Congo
+XC-CF     = Central African Republic
+XC-CG     = Congo, Republic of the Congo
+XC-CI     = Côte d'Ivoire
+XC-CM     = Cameroon
+XC-CV     = Cape Verde
+XC-DJ     = Djibouti
+XC-DZ     = Algeria
+XC-EG     = Egypt
+XC-EH     = Western Sahara
+XC-ER     = Eritrea
+XC-ET     = Ethiopia
+XC-GA     = Gabon
+XC-GH     = Ghana
+XC-GM     = Gambia
+XC-GN     = Guinea
+XC-GQ     = Equatorial Guinea
+XC-GW     = Guinea-Bissau
+XC-KE     = Kenya
+XC-KM     = Comoros
+XC-LR     = Liberia
+XC-LS     = Lesotho
+XC-LY     = Libya
+XC-MA     = Morocco
+XC-MG     = Madagascar
+XC-ML     = Mali
+XC-MR     = Mauritania
+XC-MU     = Mauritius
+XC-MW     = Malawi
+XC-MZ     = Mozambique
+XC-NA     = Namibia
+XC-NE     = Niger
+XC-NG     = Nigeria
+XC-RW     = Rwanda
+XC-SC     = Seychelles
+XC-SD     = Sudan
+XC-SL     = Sierra Leone
+XC-SN     = Senegal
+XC-SO     = Somalia
+XC-SS     = South Sudan
+XC-ST     = São Tomé and Príncipe
+XC-SZ     = Swaziland
+XC-TD     = Chad
+XC-TG     = Togo
+XC-TN     = Tunisia
+XC-TZ     = Tanzania
+XC-UG     = Uganda
+XC-YT     = Mayotte
+XC-ZA     = South Africa
+XC-ZM     = Zambia
+XC-ZW     = Zimbabwe
+# Amerika
+XD        = America
+XD-AG     = Antigua and Barbuda
+XD-AI     = Anguilla
+XD-AR     = Argentina
+XD-AS     = American Samoa
+XD-AW     = Aruba
+XD-BB     = Barbados
+XD-BL     = Saint Barthélemy
+XD-BM     = Bermuda
+XD-BO     = Bolivia
+XD-BQ     = Bonaire, Sint Eustatius, Saba (Caribbean Netherlands)
+XD-BR     = Brazil
+XD-BS     = Bahamas
+XD-BZ     = Belize
+XD-CA     = Canada
+XD-CL     = Chile
+XD-CO     = Colombia
+XD-CR     = Costa Rica
+XD-CU     = Cuba
+XD-CW     = Curaçao
+XD-DM     = Dominica
+XD-DO     = Dominican Republic
+XD-EC     = Ecuador
+XD-GD     = Grenada
+XD-GF     = French Guiana
+XD-GP     = Guadeloupe
+XD-GT     = Guatemala
+XD-GY     = Guyana
+XD-HN     = Honduras
+XD-HT     = Haiti
+XD-JM     = Jamaica
+XD-KN     = Saint Kitts und Nevis
+XD-KY     = Cayman Islands
+XD-LC     = Saint Lucia
+XD-MF     = Saint Martin
+XD-MQ     = Martinique
+XD-MS     = Montserrat
+XD-MX     = Mexico
+XD-NI     = Nicaragua
+XD-PA     = Panama
+XD-PE     = Peru
+XD-PM     = Saint Pierre and Miquelon
+XD-PR     = Puerto Rico
+XD-PY     = Paraguay
+XD-SR     = Suriname
+XD-SV     = El Salvador
+XD-SX     = Sint Maarten
+XD-TC     = Turks and Caicos Islands
+XD-TT     = Trinidad and Tobago
+XD-US     = USA
+XD-UY     = Uruguay
+XD-VC     = Saint Vincent and the Grenadines
+XD-VE     = Venezuela
+XD-VG     = Virgin Islands, British
+XD-VI     = Virgin Islands, United States
+# Australien, Ozeanien
+XE        = Australia and Oceania
+XE-AU     = Australia
+XE-CC     = Cocos (Keeling) Islands
+XE-CK     = Cook Islands
+XE-CX     = Christmas Island <Australia>
+XE-FJ     = Fiji
+XE-FM     = Micronesia, Federated States of
+XE-GU     = Guam
+XE-KI     = Kiribati
+XE-MH     = Marshall Islands
+XE-MP     = Northern Mariana Islands
+XE-NC     = New Caledonia
+XE-NF     = Norfolk Island
+XE-NR     = Nauru
+XE-NZ     = New Zealand
+XE-PF     = French Polynesia
+XE-PG     = Papua New Guinea
+XE-PW     = Palau
+XE-SB     = Solomon Islands
+XE-TK     = Tokelau
+XE-TO     = Tonga
+XE-TV     = Tuvalu
+XE-VU     = Vanuatu
+XE-WF     = Wallis and Futuna
+XE-WS     = Samoa
+# Arktis und Antarktis
+XH        = Arctic
+XI        = Antarctic
+XI-AQ     = Antarctica
+XI-HM     = Heard Islands and McDonald Islands
+# Atlantischer Ozean
+XK        = Atlantic Ocean
+XK-BV     = Bouvet Island
+XK-FK     = Falkland Islands
+XK-FO     = Faroe Islands
+XK-GL     = Greenland
+XK-GS     = South Georgia and the South Sandwich Islands
+XK-SH     = Saint Helena, Ascension and Tristan da Cunha
+XK-SJ     = Svalbard and Jan Mayen
+# Indischer Ozean
+XL        = Indian Ocean
+XL-IO     = British Indian Ocean Territory
+XL-RE     = Réunion
+XL-TF     = French Southern and Antarctic Lands
+# Pazifischer Ozean
+XM        = Pacific Ocean
+XM-NU     = Niue
+XM-PN     = Pitcairn
+XM-UM     = United States Minor Outlying Islands
+# Kontinentübergreifende Staatengruppen, Sonstiges
+XN        = Outer Space
+XP        = International organisations and communities of states
+XQ        = Entire world
+XW        = Palestinian people
+XX        = Arab people
+XY        = Jewish people
+XZ        = Fictitious places
+ZZ        = Other places
+XR        = Ancient Near East
+XS        = Ancient Greece
+XT        = Roman Empire
+XU        = Byzantine Empire
+XV        = Ottoman Empire
+# Historische Bezeichnungen
+NTHH      = Saudi-Iraqi neutral zone (-1993)
+XA-AAAT   = Austria (- 12.11.1918)
+XA-CSHH   = Czechoslovakia (-1993)
+XA-CSXX   = Serbia and Montenegro (2003-2006)
+XA-DDDE   = German Democratic Republic (-1990)
+XA-DXDE   = German Reich
+XA-FXFR   = Metropolitan France (1993-1997)
+XA-SUHH   = Soviet Union (-1992)
+XA-YUCS   = Yugoslavia (-2003)
+XB-BUMM   = Burma (-1989)
+XB-SKIN   = Sikkim (-1975)
+XB-TPTL   = East Timor (-2002)
+XB-VDVN   = Vietnam, Republic of (i.e. South Vietnam) (-1977)
+XB-YDYE   = Yemen (i.e. South Yemen) (-1990)
+XC-AIDJ   = Djibouti (French Territory of the Afars and the Issas) (-1977)
+XC-DYBJ   = Benin (Dahomey) (-1977)
+XC-HVBF   = Burkina Faso (Upper Volta) (-1984)
+XC-RHZW   = Zimbabwe (Southern Rhodesia) (-1980)
+XC-ZRCD   = Congo, Democratic Republic of the Congo (Zaire) (-1997)
+XD-ANHH   = Netherlands Antilles (1974-2011)
+XD-PZPA   = Panama Canal Zone (-1980)
+XE-CTKI   = Canton and Enderbury Islands (-1984)
+XE-GEHH   = Gilbert and Ellice Islands (-1979)
+XE-NHVU   = Vanuatu (New Hebrides) (-1980)
+XE-PCHH   = Pacific Islands, Trust Territory of the (-1986)
+XI-BQAQ   = British Antarctic Territory (-1979)
+XI-FQHH   = French Southern and Antarctic Lands (-1979)
+XI-NQAQ   = Queen Maud Land (-1983)
+XM-JTUM   = Johnston Island (-1986)
+XM-MIUM   = Midway Islands (-1986)
+XM-PUUM   = United States Miscellaneous Pacific Islands (-1986)
+XM-WKUM   = Wake Island (-1986)
\ No newline at end of file
diff --git a/import/translation_maps/htwk_udk_map.properties b/import/translation_maps/htwk_udk_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4fe478407792ece17418e2ab62f3bbc5e57fd55d
--- /dev/null
+++ b/import/translation_maps/htwk_udk_map.properties
@@ -0,0 +1,142 @@
+# UDK to Facet mapping file HTWK => trunk/import/translation_maps
+# Copy of mapping file for TUBAF - to be changed.
+
+# UDK 1978
+htwk_udk.pattern_0 = ^DK 0=>Allgemeines
+htwk_udk.pattern_1 = ^DK 1=>Philosophie. Psychologie
+htwk_udk.pattern_2 = ^DK 2=>Religion. Theologie
+htwk_udk.pattern_3 = ^DK 3$=>Sozialwissenschaften. Statistik. Politik. Volkswirtschaft. Handel. Recht. Verwaltung. Kriegskunst. Fürsorge. Versicherung. Erziehung. Volkskunde
+htwk_udk.pattern_4 = ^DK 30=>Soziologie. Soziale Fragen. Soziographie
+htwk_udk.pattern_5 = ^DK 31=>Statistik
+htwk_udk.pattern_6 = ^DK 32=>Politik
+htwk_udk.pattern_7 = ^DK 33=>Wirtschaft. Wirtschaftswissenschaften
+htwk_udk.pattern_8 = ^DK 34=>Recht. Rechtswissenschaften
+htwk_udk.pattern_9 = ^DK 35=>Öffentliche Verwaltung. Kriegskunst. Kriegswissenschaften
+htwk_udk.pattern_10 = ^DK 36=>Fürsorge. Volkshilfe. Versicherung
+htwk_udk.pattern_11 = ^DK 37=>Erziehung. Bildung. Unterricht. Freizeitgestaltung
+htwk_udk.pattern_12 = ^DK 38=>Metrologie. Maß- und Gewichtswesen
+htwk_udk.pattern_13 = ^DK 39=>Völkerkunde. Volkskunde. Sitte. Brauchtum. Volksleben. Folklore
+htwk_udk.pattern_14 = ^DK 3\D=>Sozialwissenschaften. Statistik. Politik. Volkswirtschaft. Handel. Recht. Verwaltung. Kriegskunst. Fürsorge. Versicherung. Erziehung. Volkskunde
+htwk_udk.pattern_15 = ^DK 5$=>Mathematik. Naturwissenschaften
+htwk_udk.pattern_16 = ^DK 502=>Naturschutz
+htwk_udk.pattern_17 = ^DK 504=>Umweltwissenschaften
+htwk_udk.pattern_18 = ^DK 50[\D1]=>Allgemeines über die Naturwissenschaften
+htwk_udk.pattern_19 = ^DK 51=>Mathematik
+htwk_udk.pattern_20 = ^DK 52=>Astronomie. Gedäsie
+htwk_udk.pattern_21 = ^DK 53$=>Physik
+htwk_udk.pattern_22 = ^DK 530=>Theoretische Physik
+htwk_udk.pattern_23 = ^DK 531=>Mechanik starrer Körper
+htwk_udk.pattern_24 = ^DK 534=>Mechnische Schwingungen
+htwk_udk.pattern_25 = ^DK 535=>Optik
+htwk_udk.pattern_26 = ^DK 536=>Wärmelehre
+htwk_udk.pattern_27 = ^DK 539$=>Physikalischer Aufbau der Materie
+htwk_udk.pattern_28 = ^DK 539\.1=>Kern- und Atomphysik
+htwk_udk.pattern_29 = ^DK 539\.2=>Festkörperphysik
+htwk_udk.pattern_30 = ^DK 539\.[3-8]=>Deformation. Festigkeit
+htwk_udk.pattern_31 = ^DK 53[23]=>Mechanik der Flüssigkeiten und Gase
+htwk_udk.pattern_32 = ^DK 53[78]=>Elektrizität. Magnetismus
+htwk_udk.pattern_33 = ^DK 53\D=>Physik
+htwk_udk.pattern_34 = ^DK 54$=>Chemie. Mineralogie
+htwk_udk.pattern_35 = ^DK 541=>Physikalische Chemie
+htwk_udk.pattern_36 = ^DK 542=>Experimentalchemie
+htwk_udk.pattern_37 = ^DK 543=>Analytische Chemie
+htwk_udk.pattern_38 = ^DK 546=>Anorganische Chemie
+htwk_udk.pattern_39 = ^DK 547=>Organische Chemie
+htwk_udk.pattern_40 = ^DK 548=>Kristallographie
+htwk_udk.pattern_41 = ^DK 549=>Mineralogie
+htwk_udk.pattern_42 = ^DK 54\D=>Chemie. Mineralogie
+htwk_udk.pattern_43 = ^DK 55=>Geologwissenschaften ohne Paläontologie
+htwk_udk.pattern_44 = ^DK 56=>Paläontologie
+htwk_udk.pattern_45 = ^DK 57=>Biologie
+htwk_udk.pattern_46 = ^DK 58=>Botanik
+htwk_udk.pattern_47 = ^DK 59=>Zoologie
+htwk_udk.pattern_48 = ^DK 5\D=>Mathematik. Naturwissenschaften
+htwk_udk.pattern_49 = ^DK 6$=>Angewandte Wissenschaften. Medizin. Technik
+htwk_udk.pattern_50 = ^DK 61=>Medizin
+htwk_udk.pattern_51 = ^DK 62$=>Ingenieurwesen. Technik im Allgemeinen
+htwk_udk.pattern_52 = ^DK 620=>Werkstoffprüfung. Warenkunde. Kraftzentralen. Energiewirtschaft
+htwk_udk.pattern_53 = ^DK 621$=>Maschinen-, Anlagen- & Energietechnik
+htwk_udk.pattern_54 = ^DK 621\.3=>Elektrotechnik, Elektronik
+htwk_udk.pattern_55 = ^DK 621\.7=>Fertigungstechnik. Fügen. Oberflächenbehandlung
+htwk_udk.pattern_56 = ^DK 621\.8=>Maschinenelemente. Fördermittel. Schmierung
+htwk_udk.pattern_57 = ^DK 621\.9=>Spanende Umformtechnik. Zerkleinerungs- und Abscheidevorrichtungen. Blechbearbeitung
+htwk_udk.pattern_58 = ^DK 621\.[0-24-6]=>Maschinen-, Anlagen- & Energietechnik
+htwk_udk.pattern_59 = ^DK 622=>Bergbau. Rohstoffgewinnung
+htwk_udk.pattern_60 = ^DK 623=>Wehrtechnik
+htwk_udk.pattern_61 = ^DK 624=>Geotechnik. Bauingenieurwesen
+htwk_udk.pattern_62 = ^DK 625=>Technik der Verkehrswege zu Lande. Eisenbahnbau. Straßenbau. Wegebau
+htwk_udk.pattern_63 = ^DK 626=>Allgemeiner Wasserbau. Kanalbau. Landeskulturbau
+htwk_udk.pattern_64 = ^DK 627=>Wasserbau. Hafen- und Seebau
+htwk_udk.pattern_65 = ^DK 628=>Gesundheitstechnik. Wasser. Sanitäre Anlagen. Lichttechnik
+htwk_udk.pattern_66 = ^DK 629=>Fahrzeugtechnik
+htwk_udk.pattern_67 = ^DK 62\(038\)$=>Technik - Wörterbücher
+htwk_udk.pattern_68 = ^DK 62\(083\.7\)$=>Technik - Normen, Standards
+htwk_udk.pattern_69 = ^DK 62\D=>Ingenieurwesen. Technik im Allgemeinen
+htwk_udk.pattern_70 = ^DK 63$=>Landwirtschaft und verwandte Wissenschaften und Techniken
+htwk_udk.pattern_71 = ^DK 631$=>Landwirtschaft und verwandte Wissenschaften und Techniken
+htwk_udk.pattern_72 = ^DK 631\.4=>Bodenkunde
+htwk_udk.pattern_73 = ^DK 631\.[0-35-9]=>Landwirtschaft und verwandte Wissenschaften und Techniken
+htwk_udk.pattern_74 = ^DK 63[02-9\D]=>Landwirtschaft und verwandte Wissenschaften und Techniken
+htwk_udk.pattern_75 = ^DK 64=>Hauswirtschaft
+htwk_udk.pattern_76 = ^DK 65=>Betriebsführung und Organisation von Industrie, Handel und Verkehr
+htwk_udk.pattern_77 = ^DK 66$=>Chemische Technik. Chemische Industrie. Verwandte Industriezweige
+htwk_udk.pattern_78 = ^DK 66-=>Chemische Technik. Chemische Industrie. Verwandte Industriezweige
+htwk_udk.pattern_79 = ^DK 666=>Glas. Email. Keramik. Kunststeine. Zement (Gesteinshüttenkunde)
+htwk_udk.pattern_80 = ^DK 667=>Farbtechnische Industrien
+htwk_udk.pattern_81 = ^DK 669=>Metallurgie. Metalle und Legierungen
+htwk_udk.pattern_82 = ^DK 66[1-5]=>Verschiedene Industriezweige
+htwk_udk.pattern_83 = ^DK 66\.0=>Verfahrenstechnik
+htwk_udk.pattern_84 = ^DK 67$=>Verschiedene Industrien und Gewerbe. Mechanische Technologie
+htwk_udk.pattern_85 = ^DK 671=>Gegenstände aus Edelmetall und Edelsteinen
+htwk_udk.pattern_86 = ^DK 672=>Gegenstände aus Eisen und Stahl
+htwk_udk.pattern_87 = ^DK 673=>Gegenstände aus Nichteisenmetallen außer Edelmetallen
+htwk_udk.pattern_88 = ^DK 674=>Holzindustrie
+htwk_udk.pattern_89 = ^DK 675=>Lederindustrie. Pelze. Kunstleder
+htwk_udk.pattern_90 = ^DK 676=>Papierindustrie
+htwk_udk.pattern_91 = ^DK 677=>Textilindustrie. Textilveredelung. Kabelindustrie
+htwk_udk.pattern_92 = ^DK 678=>Industrie der natürlichen und synthetischen makromolekularen Stoffe. Gummiindustrie. Kunststoffindustrie
+htwk_udk.pattern_93 = ^DK 679=>Technologie der Steine. Industrie der Steine und Erden
+htwk_udk.pattern_94 = ^DK 67\D=>Verschiedene Industrien und Gewerbe. Mechanische Technologie
+htwk_udk.pattern_95 = ^DK 68$=>Verschiedene Industrien und Gewerbe
+htwk_udk.pattern_96 = ^DK 681$=>Feinmechanik
+htwk_udk.pattern_97 = ^DK 681\.3=>IT. Informatik. Software
+htwk_udk.pattern_98 = ^DK 681\.[0-24-9]=>Feinmechanik
+htwk_udk.pattern_99 = ^DK 682=>Schmiedegewerbe. Hufbeschlag
+htwk_udk.pattern_100 = ^DK 683=>Eisenwaren. Schlosserei
+htwk_udk.pattern_101 = ^DK 684=>Möbelindustrie und verwandte Industrien
+htwk_udk.pattern_102 = ^DK 685=>Sattlerei. Riemerei. Schuhmacherei. Handschuhmacherei. Reiseartikel und Sportgeräte. Spielartikel
+htwk_udk.pattern_103 = ^DK 686=>Buchbinderei. Metallisierung. Glaserei. Bürogeräte
+htwk_udk.pattern_104 = ^DK 687=>Bekleidungsindustrie. Schönheitspflege
+htwk_udk.pattern_105 = ^DK 688=>Kunstdrechselei. Spielwaren. Dekorationsartikel
+htwk_udk.pattern_106 = ^DK 689=>Technische und handwerkliche Liebhaberarbeiten. Bastelarbeiten
+htwk_udk.pattern_107 = ^DK 68\D=>Verschiedene Industrien und Gewerbe
+htwk_udk.pattern_108 = ^DK 69=>Baustoffe. Bauhandwerk. Bauarbeiten
+htwk_udk.pattern_109 = ^DK 6\D=>Angewandte Wissenschaften. Medizin. Technik
+htwk_udk.pattern_110 = ^DK 7$=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+htwk_udk.pattern_111 = ^DK 71=>Raumordnung. Landesplanung. Städtebau. Landschaftsgestaltung. Gartenarchitektur
+htwk_udk.pattern_112 = ^DK 72=>Architektur. Baukunst
+htwk_udk.pattern_113 = ^DK 73=>Bildhauerei. Münzkunde. Künstlerische Metallverarbeitung
+htwk_udk.pattern_114 = ^DK 74=>Zeichenkunst. Kunstgewerbe
+htwk_udk.pattern_115 = ^DK 75=>Malerei
+htwk_udk.pattern_116 = ^DK 76=>Graphische Künste. Graphik
+htwk_udk.pattern_117 = ^DK 77=>Photographie
+htwk_udk.pattern_118 = ^DK 78=>Musik
+htwk_udk.pattern_119 = ^DK 79=>Unterhaltung. Spiele. Sport
+htwk_udk.pattern_120 = ^DK 7\D=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+htwk_udk.pattern_121 = ^DK 8=>Sprachwissenschaften. Philologie. Schöne Literatur. Literaturwissenschaft
+htwk_udk.pattern_122 = ^DK 9$=>Geographie. Biographien. Geschichte
+htwk_udk.pattern_123 = ^DK 91$=>Geographie. Erforschung der Erde und Länder. Reisen. Länderkunde. Landeskunde
+htwk_udk.pattern_124 = ^DK 910=>Allg. Fragen der Geographie
+htwk_udk.pattern_125 = ^DK 911=>Physische Geographie & Anthropogeographie
+htwk_udk.pattern_126 = ^DK 912=>Karten und Atlanten
+htwk_udk.pattern_127 = ^DK 91[3-9]=>Geographie. Erforschung der Erde und Länder. Reisen. Länderkunde. Landeskunde
+htwk_udk.pattern_128 = ^DK 92=>Biographien. Genealogie. Heraldik
+htwk_udk.pattern_129 = ^DK 93=>Geschichtswissenschaft. Alte Geschichte
+htwk_udk.pattern_130 = ^DK 94=>Geschichte Europas
+htwk_udk.pattern_131 = ^DK 95=>Geschichte Asiens
+htwk_udk.pattern_132 = ^DK 96=>Geschichte Afrikas
+htwk_udk.pattern_133 = ^DK 97=>Geschichte Nordamerikas
+htwk_udk.pattern_134 = ^DK 98=>Geschichte Südamerikas
+htwk_udk.pattern_135 = ^DK 99=>Geschichte der ozeanischen und polarischen Gebiete
+htwk_udk.pattern_136 = ^DK 9[0\D]=>Geographie. Biographien. Geschichte
+
diff --git a/import/translation_maps/rvk_map.properties b/import/translation_maps/rvk_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..63cbdaa5ea1b519d80354c6c7e11bd88e556b6f2
--- /dev/null
+++ b/import/translation_maps/rvk_map.properties
@@ -0,0 +1,210 @@
+A		=		Allgemeines
+B		=		Theologie und Religionswissenschaften
+CA 	=		Philosophie
+CB	=		Philosophie
+CC	=		Philosophie
+CD	=		Philosophie
+CE	= 		Philosophie
+CF	=		Philosophie
+CG	=		Philosophie
+CH	=		Philosophie
+CI		=		Philosophie
+CL 	=		Psychologie
+CM 	=		Psychologie
+CN 	=		Psychologie
+CO 	=		Psychologie
+CP 	=		Psychologie
+CQ 	=		Psychologie
+CR 	=		Psychologie
+CS 	=		Psychologie
+CT 	=		Psychologie
+CU 	=		Psychologie
+CV 	=		Psychologie
+CW 	=		Psychologie
+CX 	=		Psychologie
+CY 	=		Psychologie
+CZ 	=		Psychologie
+D 		= 		Pädagogik
+E		=		Allgemeine und vergleichende Sprach- und Literaturwissenschaft. Indogermanistik. Außereuropäische Sprachen und Literaturen
+F		= 		Klassische Philologie. Byzantinistik. Mittellateinische und Neugriechische Philologie. Neulatein
+G 	=		Germanistik. Niederlandistik. Skandinavistik
+H		=		Anglistik. Amerikanistik
+I		=		Romanistik
+K		=		Slawistik
+LA	=		Ethnologie(Volks- und Völkerkunde)
+LB	=		Ethnologie(Volks- und Völkerkunde)
+LC	=		Ethnologie(Volks- und Völkerkunde)
+LD	=		Zeitschriften für Klassische Archäologie, Kunstgeschichte, Musikwissenschaft, Architektur und Baukunst
+LE	=		Klassische Archäologie
+LF	=		Klassische Archäologie
+LG	=		Klassische Archäologie
+LH	=		Kunstgeschichte
+LI		=		Kunstgeschichte
+LJ	=		Kunstgeschichte
+LK	=		Kunstgeschichte
+LL	=		Kunstgeschichte
+LM	=		Kunstgeschichte
+LN	=		Kunstgeschichte
+LO	=		Kunstgeschichte
+LP	=		Musikwissenschaft
+LQ	=		Musikwissenschaft
+LR	=		Musikwissenschaft
+LS	=		Musikwissenschaft
+LT	=		Musikwissenschaft
+LU	=		Musikwissenschaft
+LV	=		Musikwissenschaft
+LW	=		Musikwissenschaft
+LX	=		Musikwissenschaft
+LY	=		Musikwissenschaft
+MA	=		Politologie
+MB	=		Politologie
+MC	=		Politologie
+MD	=		Politologie
+ME	=		Politologie
+MF	=		Politologie
+MG	=		Politologie
+MH	=		Politologie
+MI	=		Politologie
+MJ	=		Politologie
+MK	=		Politologie
+ML	=		Politologie
+MN	=		Soziologie
+MO	=		Soziologie
+MP	=		Soziologie
+MQ	=		Soziologie
+MR	=		Soziologie
+MS	=		Soziologie
+MT	=		Soziologie
+MU	=		Soziologie
+MV	=		Soziologie
+MW	=		Soziologie
+MX	=		Militärwissenschaft
+MY	=		Militärwissenschaft
+MZ	=		Militärwissenschaft
+N		=		Geschichte
+P		=		Rechtswissenschaft
+Q		=		Wirtschaftswissenschaften
+R		=		Geographie
+SA	=		Mathematik
+SB	=		Mathematik
+SC	=		Mathematik
+SD	=		Mathematik
+SE	=		Mathematik
+SF	=		Mathematik
+SG	=		Mathematik
+SH	=		Mathematik
+SI		=		Mathematik
+SJ	=		Mathematik
+SK	=		Mathematik
+SL	=		Mathematik
+SM	=		Mathematik
+SN	=		Mathematik
+SO	=		Mathematik
+SP	=		Mathematik
+SQ	=		Informatik
+SR	=		Informatik
+SS	=		Informatik
+ST	=		Informatik
+SU	=		Informatik
+TA	=		Allgemeine Naturwissenschaft
+TB	=		Allgemeine Naturwissenschaft
+TC	=		Allgemeine Naturwissenschaft
+TD	=		Allgemeine Naturwissenschaft
+TE	=		Geologie und Paläontologie
+TF	=		Geologie und Paläontologie
+TG	=		Geologie und Paläontologie
+TH	=		Geologie und Paläontologie
+TI	=		Geologie und Paläontologie
+TJ	=		Geologie und Paläntologiie
+TK	=		Geologie und Paläontologie
+TL	=		Geologie und Paläontologie
+TM	=		Geologie und Paläontologie
+TN	=		Geologie und Paläontologie
+TO	=		Geologie und Paläontologie
+TP	=		Geologie und Paläontologie
+TQ	=		Geologie und Paläontologie
+TR	=		Geologie und Paläontologie
+TS	=		Geologie und Paläontologie
+TT	=		Geologie und Paläontologie
+TU	=		Geologie und Paläontologie
+TV	=		Geologie und Paläontologie
+TW	=		Geologie und Paläontologie
+TX	=		Geologie und Paläontologie
+TY	=		Geologie und Paläontologie
+TZ	=		Geologie und Paläontologie
+U		=		Physik
+V 		=		Chemie und Pharmazie
+W		=		Biologie
+WW 	=		Biologie
+WX 	=		Biologie
+WY 	=		Biologie
+WZ 	=		Biologie
+XA 	=		Medizin
+XB 	=		Medizin
+XC 	=		Medizin
+XD 	=		Medizin
+XE 	=		Medizin
+XF 	=		Medizin
+XG 	=		Medizin
+XH 	=		Medizin
+XI 	=		Medizin
+XJ 	=		Medizin
+XK 	=		Medizin
+XL 	=		Medizin
+XM 	=		Medizin
+XN 	=		Medizin
+XO 	=		Medizin
+XP 	=		Medizin
+XQ 	=		Medizin
+XR 	=		Medizin
+XS 	=		Medizin
+XT 	=		Medizin
+XU 	=		Medizin
+XV 	=		Medizin
+XW 	=		Medizin
+XX 	=		Medizin
+XY 	=		Medizin
+XZ 	=		Medizin
+YA 	=		Medizin
+YB 	=		Medizin
+YC 	=		Medizin
+YD 	=		Medizin
+YE 	=		Medizin
+YF 	=		Medizin
+YG 	=		Medizin
+YH 	=		Medizin
+YI 	=		Medizin
+YJ 	=		Medizin
+YK 	=		Medizin
+YL 	=		Medizin
+YM 	=		Medizin
+YN 	=		Medizin
+YO 	=		Medizin
+YP 	=		Medizin
+YQ 	=		Medizin
+YR 	=		Medizin
+YS 	=		Medizin
+YT 	=		Medizin
+YU 	=		Medizin
+YV 	=		Medizin
+ZA	=		Land- und Forstwirtschaft. Gartenbau. Fischereiwirtschaft. Hauswirtschaft
+ZB	=		Land- und Forstwirtschaft. Gartenbau. Fischereiwirtschaft. Hauswirtschaft
+ZC	=		Land- und Forstwirtschaft. Gartenbau. Fischereiwirtschaft. Hauswirtschaft
+ZD	=		Land- und Forstwirtschaft. Gartenbau. Fischereiwirtschaft. Hauswirtschaft
+ZE	=		Land- und Forstwirtschaft. Gartenbau. Fischereiwirtschaft. Hauswirtschaft
+ZG	=		Technik
+ZH	=		Technik
+ZI		=	Technik
+ZJ	=		Technik
+ZK	=		Technik
+ZL	=		Technik
+ZM	=		Technik
+ZN	=		Technik
+ZO	=		Technik
+ZP	=		Technik
+ZQ	=		Technik
+ZR	=		Technik
+ZS	=		Technik
+ZX	=		Sport
+ZY	=		Sport
+No subject assigned = No subject assigned
\ No newline at end of file
diff --git a/import/translation_maps/timecode_map.properties b/import/translation_maps/timecode_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c850c6abe5e2b6af7ab78e1db8cefeed9914f93e
--- /dev/null
+++ b/import/translation_maps/timecode_map.properties
@@ -0,0 +1,21 @@
+ad01 = 0 \u2013 100
+ad02 = 101 \u2013 200
+ad03 = 201 \u2013 300
+ad04 = 301 \u2013 400
+ad05 = 401 \u2013 500
+ad06 = 501 \u2013 600
+ad07 = 601 \u2013 700
+ad08 = 701 \u2013 800
+ad09 = 801 \u2013 900
+ad10 = 901 \u2013 1000
+ad11 = 1001 \u2013 1100
+ad12 = 1101 \u2013 1200
+ad13 = 1201 \u2013 1300
+ad14 = 1301 \u2013 1400
+ad15 = 1401 \u2013 1500
+ad16 = 1501 \u2013 1600
+ad17 = 1601 \u2013 1700
+ad18 = 1701 \u2013 1800
+a19a = 1801 \u2013 1850
+a19b = 1851 \u2013 1900
+
diff --git a/import/translation_maps/tuf_udk_map.properties b/import/translation_maps/tuf_udk_map.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e17d7627a44335bd28a11f9e6146896d6a3d95b9
--- /dev/null
+++ b/import/translation_maps/tuf_udk_map.properties
@@ -0,0 +1,218 @@
+# UDK to facet mapping file TUBAF => trunk/import/translation_maps
+# Generated by CreateUDKFacetPatternMatching.py
+
+# UDK 1978
+tuf_udk.pattern_0 = ^DK 0$=>Allgemeines
+tuf_udk.pattern_1 = ^DK 001=>Wissenschaft, Allgemeines
+tuf_udk.pattern_2 = ^DK 00[2-9]=>Allgemeines
+tuf_udk.pattern_3 = ^DK 01=>Bibliographie
+tuf_udk.pattern_4 = ^DK 02=>Bibliothekswesen
+tuf_udk.pattern_5 = ^DK 06$=>Organisationen
+tuf_udk.pattern_6 = ^DK 061$=>Organisationen
+tuf_udk.pattern_7 = ^DK 061\.3=>Kongresse
+tuf_udk.pattern_8 = ^DK 061\.4=>Ausstellungen
+tuf_udk.pattern_9 = ^DK 061\.[125679]=>Organisationen
+tuf_udk.pattern_10 = ^DK 069=>Museen
+tuf_udk.pattern_11 = ^DK 06\.=>Organisationen
+tuf_udk.pattern_12 = ^DK 0[345789]=>Allgemeines
+tuf_udk.pattern_13 = ^DK 1$=>Philosophie. Psychologie
+tuf_udk.pattern_14 = ^DK 15=>Psychologie
+tuf_udk.pattern_15 = ^DK 1[0-46-9]=>Philosophie
+tuf_udk.pattern_16 = ^DK 2=>Religion. Theologie
+tuf_udk.pattern_17 = ^DK 3$=>Sozialwissenschaften. Statistik. Politik. Volkswirtschaft. Handel. Recht. Verwaltung. Kriegskunst. Fürsorge. Versicherung. Erziehung. Volkskunde
+tuf_udk.pattern_18 = ^DK 30=>Soziologie. Methoden
+tuf_udk.pattern_19 = ^DK 31=>Statistik
+tuf_udk.pattern_20 = ^DK 316=>Soziologie
+tuf_udk.pattern_21 = ^DK 31[\D1-57-9]=>Statistik
+tuf_udk.pattern_22 = ^DK 32=>Politik
+tuf_udk.pattern_23 = ^DK 33=>Wirtschaft. Wirtschaftswissenschaften
+tuf_udk.pattern_24 = ^DK 34$=>Recht. Rechtswissenschaften
+tuf_udk.pattern_25 = ^DK 340=>Recht im Allgemeinen
+tuf_udk.pattern_26 = ^DK 341=>Internationales Recht
+tuf_udk.pattern_27 = ^DK 342=>Staatsrecht. Verfassungsrecht. Verwaltungsrecht
+tuf_udk.pattern_28 = ^DK 347=>Zivilrecht
+tuf_udk.pattern_29 = ^DK 348=>Kirchenrecht
+tuf_udk.pattern_30 = ^DK 349$=>Spezielle Rechtszweige. Rechtszweige gemischten Charakters
+tuf_udk.pattern_31 = ^DK 349\.2=>Arbeitsrecht
+tuf_udk.pattern_32 = ^DK 349\.3=>Sozialrecht
+tuf_udk.pattern_33 = ^DK 349\.4=>Bodenrecht. Baurecht
+tuf_udk.pattern_34 = ^DK 349\.6=>Umweltrecht
+tuf_udk.pattern_35 = ^DK 349\.7=>Atomrecht. Energierecht
+tuf_udk.pattern_36 = ^DK 34[34]=>Strafrecht
+tuf_udk.pattern_37 = ^DK 35=>Verwaltung. Militärwissenschaft
+tuf_udk.pattern_38 = ^DK 36=>Fürsorge. Versicherung
+tuf_udk.pattern_39 = ^DK 37$=>Bildungswesen. Pädagogik. Freizeitgestaltung
+tuf_udk.pattern_40 = ^DK 378$=>Hochschulwesen
+tuf_udk.pattern_41 = ^DK 378\.2$=>Hochschulwesen
+tuf_udk.pattern_42 = ^DK 378\.24$=>Hochschulwesen
+tuf_udk.pattern_43 = ^DK 378\.245$=>Dissertationen
+tuf_udk.pattern_44 = ^DK 378\.24[0-46-9]=>Hochschulwesen
+tuf_udk.pattern_45 = ^DK 378\.2[1-35-9]=>Hochschulwesen
+tuf_udk.pattern_46 = ^DK 378\.[013-9]=>Hochschulwesen
+tuf_udk.pattern_47 = ^DK 379=>Freizeitgestaltung
+tuf_udk.pattern_48 = ^DK 37[\D0-7]=>Bildungswesen. Pädagogik
+tuf_udk.pattern_49 = ^DK 38=>Metrologie. Maß- und Gewichtswesen
+tuf_udk.pattern_50 = ^DK 39=>Völkerkunde
+tuf_udk.pattern_51 = ^DK 3\D=>Sozialwissenschaften. Statistik. Politik. Volkswirtschaft. Handel. Recht. Verwaltung. Kriegskunst. Fürsorge. Versicherung. Erziehung. Volkskunde
+tuf_udk.pattern_52 = ^DK 5$=>Mathematik. Naturwissenschaften
+tuf_udk.pattern_53 = ^DK 502=>Naturschutz
+tuf_udk.pattern_54 = ^DK 504=>Umweltwissenschaften
+tuf_udk.pattern_55 = ^DK 50[\D1]=>Allgemeines über die Naturwissenschaften
+tuf_udk.pattern_56 = ^DK 51=>Mathematik
+tuf_udk.pattern_57 = ^DK 52=>Astronomie. Geodäsie
+tuf_udk.pattern_58 = ^DK 53$=>Physik
+tuf_udk.pattern_59 = ^DK 530=>Theoretische Physik
+tuf_udk.pattern_60 = ^DK 531=>Mechanik starrer Körper
+tuf_udk.pattern_61 = ^DK 534=>Mechnische Schwingungen
+tuf_udk.pattern_62 = ^DK 535=>Optik
+tuf_udk.pattern_63 = ^DK 536=>Wärmelehre
+tuf_udk.pattern_64 = ^DK 539$=>Physikalischer Aufbau der Materie
+tuf_udk.pattern_65 = ^DK 539\.1=>Kern- und Atomphysik
+tuf_udk.pattern_66 = ^DK 539\.2=>Festkörperphysik
+tuf_udk.pattern_67 = ^DK 539\.[3-8]=>Deformation. Festigkeit
+tuf_udk.pattern_68 = ^DK 53[23]=>Mechanik der Flüssigkeiten und Gase
+tuf_udk.pattern_69 = ^DK 53[78]=>Elektrizität. Magnetismus
+tuf_udk.pattern_70 = ^DK 53\D=>Physik
+tuf_udk.pattern_71 = ^DK 54$=>Chemie. Mineralogie
+tuf_udk.pattern_72 = ^DK 541=>Physikalische Chemie
+tuf_udk.pattern_73 = ^DK 542=>Experimentalchemie
+tuf_udk.pattern_74 = ^DK 543=>Analytische Chemie
+tuf_udk.pattern_75 = ^DK 546=>Anorganische Chemie
+tuf_udk.pattern_76 = ^DK 547=>Organische Chemie
+tuf_udk.pattern_77 = ^DK 548=>Kristallographie
+tuf_udk.pattern_78 = ^DK 549=>Mineralogie
+tuf_udk.pattern_79 = ^DK 54\D=>Chemie. Mineralogie
+tuf_udk.pattern_80 = ^DK 55=>Geolog. Wissenschaften ohne Paläontologie
+tuf_udk.pattern_81 = ^DK 56=>Paläontologie
+tuf_udk.pattern_82 = ^DK 57=>Biologie
+tuf_udk.pattern_83 = ^DK 58=>Botanik
+tuf_udk.pattern_84 = ^DK 59=>Zoologie
+tuf_udk.pattern_85 = ^DK 5\D=>Mathematik. Naturwissenschaften
+tuf_udk.pattern_86 = ^DK 6$=>Angewandte Wissenschaften. Medizin. Technik
+tuf_udk.pattern_87 = ^DK 61=>Medizin
+tuf_udk.pattern_88 = ^DK 62$=>Ingenieurwesen. Technik im Allgemeinen
+tuf_udk.pattern_89 = ^DK 620=>Werkstoffprüfung. Warenkunde. Kraftzentralen. Energiewirtschaft
+tuf_udk.pattern_90 = ^DK 621$=>Maschinen-, Anlagen- & Energietechnik
+tuf_udk.pattern_91 = ^DK 621\.3=>Elektrotechnik, Elektronik
+tuf_udk.pattern_92 = ^DK 621\.7=>Fertigungstechnik. Fügen. Oberflächenbehandlung
+tuf_udk.pattern_93 = ^DK 621\.8=>Maschinenelemente. Fördermittel. Schmierung
+tuf_udk.pattern_94 = ^DK 621\.9=>Spanende Umformtechnik. Zerkleinerungs- und Abscheidevorrichtungen. Blechbearbeitung
+tuf_udk.pattern_95 = ^DK 621\.[0-24-6]=>Maschinen-, Anlagen- & Energietechnik
+tuf_udk.pattern_96 = ^DK 622=>Bergbau. Rohstoffgewinnung
+tuf_udk.pattern_97 = ^DK 623=>Wehrtechnik
+tuf_udk.pattern_98 = ^DK 624=>Geotechnik. Bauingenieurwesen
+tuf_udk.pattern_99 = ^DK 625=>Technik der Verkehrswege zu Lande. Eisenbahnbau. Straßenbau. Wegebau
+tuf_udk.pattern_100 = ^DK 626=>Allgemeiner Wasserbau. Kanalbau. Landeskulturbau
+tuf_udk.pattern_101 = ^DK 627=>Wasserbau. Hafen- und Seebau
+tuf_udk.pattern_102 = ^DK 628=>Gesundheitstechnik. Wasser. Sanitäre Anlagen. Lichttechnik
+tuf_udk.pattern_103 = ^DK 629=>Fahrzeugtechnik
+tuf_udk.pattern_104 = ^DK 62\(038\)$=>Technik - Wörterbücher
+tuf_udk.pattern_105 = ^DK 62\(083\.7\)$=>Technik - Normen, Standards
+tuf_udk.pattern_106 = ^DK 62\D=>Ingenieurwesen. Technik im Allgemeinen
+tuf_udk.pattern_107 = ^DK 63$=>Landwirtschaft und verwandte Wissenschaften und Techniken
+tuf_udk.pattern_108 = ^DK 631$=>Landwirtschaft und verwandte Wissenschaften und Techniken
+tuf_udk.pattern_109 = ^DK 631\.4=>Bodenkunde
+tuf_udk.pattern_110 = ^DK 631\.[0-35-9]=>Landwirtschaft und verwandte Wissenschaften und Techniken
+tuf_udk.pattern_111 = ^DK 63[02-9\D]=>Landwirtschaft und verwandte Wissenschaften und Techniken
+tuf_udk.pattern_112 = ^DK 64=>Hauswirtschaft
+tuf_udk.pattern_113 = ^DK 65=>Betriebsführung und Organisation von Industrie, Handel und Verkehr
+tuf_udk.pattern_114 = ^DK 66$=>Chemische Technik. Chemische Industrie. Verwandte Industriezweige
+tuf_udk.pattern_115 = ^DK 66-=>Chemische Technik. Chemische Industrie. Verwandte Industriezweige
+tuf_udk.pattern_116 = ^DK 666=>Glas. Email. Keramik. Kunststeine. Zement (Gesteinshüttenkunde)
+tuf_udk.pattern_117 = ^DK 667=>Farbtechnische Industrien
+tuf_udk.pattern_118 = ^DK 669=>Metallurgie. Metalle und Legierungen
+tuf_udk.pattern_119 = ^DK 66[1-5]=>Verschiedene Industriezweige
+tuf_udk.pattern_120 = ^DK 66\.0=>Verfahrenstechnik
+tuf_udk.pattern_121 = ^DK 67$=>Verschiedene Industrien und Gewerbe. Mechanische Technologie
+tuf_udk.pattern_122 = ^DK 671=>Gegenstände aus Edelmetall und Edelsteinen
+tuf_udk.pattern_123 = ^DK 672=>Gegenstände aus Eisen und Stahl
+tuf_udk.pattern_124 = ^DK 673=>Gegenstände aus Nichteisenmetallen außer Edelmetallen
+tuf_udk.pattern_125 = ^DK 674=>Holzindustrie
+tuf_udk.pattern_126 = ^DK 675=>Lederindustrie. Pelze. Kunstleder
+tuf_udk.pattern_127 = ^DK 676=>Papierindustrie
+tuf_udk.pattern_128 = ^DK 677=>Textilindustrie. Textilveredelung. Kabelindustrie
+tuf_udk.pattern_129 = ^DK 678=>Industrie der natürlichen und synthetischen makromolekularen Stoffe. Gummiindustrie. Kunststoffindustrie
+tuf_udk.pattern_130 = ^DK 679=>Technologie der Steine. Industrie der Steine und Erden
+tuf_udk.pattern_131 = ^DK 67\D=>Verschiedene Industrien und Gewerbe. Mechanische Technologie
+tuf_udk.pattern_132 = ^DK 68$=>Verschiedene Industrien und Gewerbe
+tuf_udk.pattern_133 = ^DK 681$=>Feinmechanik
+tuf_udk.pattern_134 = ^DK 681\.3=>IT. Informatik. Software
+tuf_udk.pattern_135 = ^DK 681\.[012456789]=>Feinmechanik
+tuf_udk.pattern_136 = ^DK 682=>Schmiedegewerbe. Hufbeschlag
+tuf_udk.pattern_137 = ^DK 683=>Eisenwaren. Schlosserei
+tuf_udk.pattern_138 = ^DK 684=>Möbelindustrie und verwandte Industrien
+tuf_udk.pattern_139 = ^DK 685=>Sattlerei. Riemerei. Schuhmacherei. Handschuhmacherei. Reiseartikel und Sportgeräte. Spielartikel
+tuf_udk.pattern_140 = ^DK 686=>Buchbinderei. Metallisierung. Glaserei. Bürogeräte
+tuf_udk.pattern_141 = ^DK 687=>Bekleidungsindustrie. Schönheitspflege
+tuf_udk.pattern_142 = ^DK 688=>Kunstdrechselei. Spielwaren. Dekorationsartikel
+tuf_udk.pattern_143 = ^DK 689=>Technische und handwerkliche Liebhaberarbeiten. Bastelarbeiten
+tuf_udk.pattern_144 = ^DK 68\D=>Verschiedene Industrien und Gewerbe
+tuf_udk.pattern_145 = ^DK 69=>Baustoffe. Bauhandwerk. Bauarbeiten
+tuf_udk.pattern_146 = ^DK 6[\D0]=>Angewandte Wissenschaften. Medizin. Technik
+tuf_udk.pattern_147 = ^DK 7$=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+tuf_udk.pattern_148 = ^DK 7-=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+tuf_udk.pattern_149 = ^DK 71=>Raumordnung. Landesplanung. Städtebau. Gartenarchitektur
+tuf_udk.pattern_150 = ^DK 72$=>Architektur. Baukunst
+tuf_udk.pattern_151 = ^DK 725$=>Architektur. Baukunst
+tuf_udk.pattern_152 = ^DK 725\.4=>Industriebauten
+tuf_udk.pattern_153 = ^DK 725\.[0-35-9]=>Architektur. Baukunst
+tuf_udk.pattern_154 = ^DK 72[0-46-9]=>Architektur. Baukunst
+tuf_udk.pattern_155 = ^DK 72\.025=>Denkmalschutz
+tuf_udk.pattern_156 = ^DK 72\.02[0-46-9]=>Architektur. Baukunst
+tuf_udk.pattern_157 = ^DK 72\.0[013-9]=>Architektur. Baukunst
+tuf_udk.pattern_158 = ^DK 73$=>Bildhauerei. Münzkunde. Künstlerische Metallverarbeitung
+tuf_udk.pattern_159 = ^DK 737=>Münzkunde. Numismatik
+tuf_udk.pattern_160 = ^DK 73[0-689]=>Bildhauerei. Künstlerische Metallverarbeitung
+tuf_udk.pattern_161 = ^DK 74=>Zeichenkunst. Kunstgewerbe
+tuf_udk.pattern_162 = ^DK 75=>Malerei
+tuf_udk.pattern_163 = ^DK 76=>Graphik
+tuf_udk.pattern_164 = ^DK 77=>Photographie
+tuf_udk.pattern_165 = ^DK 78=>Musik
+tuf_udk.pattern_166 = ^DK 79=>Unterhaltung. Sport
+tuf_udk.pattern_167 = ^DK 7\.025=>Kunsttechnik: Verfall, Pflege, Schutz
+tuf_udk.pattern_168 = ^DK 7\.02[0-46-9]=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+tuf_udk.pattern_169 = ^DK 7\.0[013-9]=>Kunst. Kunstgewerbe. Photographie. Musik. Spiel. Sport
+tuf_udk.pattern_170 = ^DK 8$=>Sprach- und Literaturwissenschaft. Schöne Literatur
+tuf_udk.pattern_171 = ^DK 80=>Linguistik
+tuf_udk.pattern_172 = ^DK 82=>Literaturwissenschaft
+tuf_udk.pattern_173 = ^DK 9$=>Geographie. Biographien. Geschichte
+tuf_udk.pattern_174 = ^DK 904=>Reste der Kulturen der historischen Zeit. Industriearchäologie
+tuf_udk.pattern_175 = ^DK 90[0-35-9]=>Archäologie. Vor- und Frühgeschichte. Reste der Kulturen
+tuf_udk.pattern_176 = ^DK 91$=>Geographie. Erforschung der Erde und Länder. Reisen. Länderkunde. Landeskunde
+tuf_udk.pattern_177 = ^DK 910=>Allg. Fragen der Geographie
+tuf_udk.pattern_178 = ^DK 911=>Physische Geographie und Anthropogeographie
+tuf_udk.pattern_179 = ^DK 912=>Karten und Atlanten
+tuf_udk.pattern_180 = ^DK 913=>Orte der alten Welt. Legendäre und vermutete Länder
+tuf_udk.pattern_181 = ^DK 914$=>Europa
+tuf_udk.pattern_182 = ^DK 914\.30=>Deutschland
+tuf_udk.pattern_183 = ^DK 914\.3[1-9]=>Europa
+tuf_udk.pattern_184 = ^DK 914\.[0-24-9]=>Europa
+tuf_udk.pattern_185 = ^DK 915=>Asien
+tuf_udk.pattern_186 = ^DK 916=>Afrika
+tuf_udk.pattern_187 = ^DK 917=>Nord- und Mittelamerika
+tuf_udk.pattern_188 = ^DK 918=>Südamerika
+tuf_udk.pattern_189 = ^DK 919$=>Ozeanien
+tuf_udk.pattern_190 = ^DK 919\.8=>Arktis
+tuf_udk.pattern_191 = ^DK 919\.9=>Antarktis
+tuf_udk.pattern_192 = ^DK 919\.[1-7]=>Ozeanien
+tuf_udk.pattern_193 = ^DK 92=>Biographien. Genealogie. Heraldik
+tuf_udk.pattern_194 = ^DK 93$=>Geschichte allgemein
+tuf_udk.pattern_195 = ^DK 930=>Geschichtswissenschaft
+tuf_udk.pattern_196 = ^DK 93[1-9]=>Alte Geschichte
+tuf_udk.pattern_197 = ^DK 94$=>Mittelalterliche und neuere Geschichte im allgemeinen
+tuf_udk.pattern_198 = ^DK 943\.0$=>Geschichte Deutschlands
+tuf_udk.pattern_199 = ^DK 943\.01=>Geschichte Bundesrepublik Deutschland
+tuf_udk.pattern_200 = ^DK 943\.02=>Geschichte Deutsche Demokratische Republik
+tuf_udk.pattern_201 = ^DK 943\.0\D=>Geschichte Deutschlands
+tuf_udk.pattern_202 = ^DK 943\.5$=>Geschichte Deutschlands
+tuf_udk.pattern_203 = ^DK 943\.59=>Geschichte Europas
+tuf_udk.pattern_204 = ^DK 943\.6=>Geschichte Europas
+tuf_udk.pattern_205 = ^DK 943\.[1-4]=>Geschichte Deutschlands
+tuf_udk.pattern_206 = ^DK 94[0-24-9]=>Geschichte Europas
+tuf_udk.pattern_207 = ^DK 95=>Geschichte Asiens
+tuf_udk.pattern_208 = ^DK 96=>Geschichte Afrikas
+tuf_udk.pattern_209 = ^DK 97=>Geschichte Nordamerikas
+tuf_udk.pattern_210 = ^DK 98=>Geschichte Südamerikas
+tuf_udk.pattern_211 = ^DK 99=>Geschichte der ozeanischen und polarischen Gebiete
+tuf_udk.pattern_212 = ^DK 9\D=>Geographie. Biographien. Geschichte
+tuf_udk.pattern_213 = ^Q=>Wirtschaftswissenschaften
diff --git a/solr/biblio/conf/german_stop.txt b/solr/biblio/conf/german_stop.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f770384188703d5c5253311786901b258f54e4bb
--- /dev/null
+++ b/solr/biblio/conf/german_stop.txt
@@ -0,0 +1,292 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/german/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+
+ | A German stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | The number of forms in this list is reduced significantly by passing it
+ | through the German stemmer.
+
+
+aber           |  but
+
+alle           |  all
+allem
+allen
+aller
+alles
+
+als            |  than, as
+also           |  so
+am             |  an + dem
+an             |  at
+
+ander          |  other
+andere
+anderem
+anderen
+anderer
+anderes
+anderm
+andern
+anderr
+anders
+
+auch           |  also
+auf            |  on
+aus            |  out of
+bei            |  by
+bin            |  am
+bis            |  until
+bist           |  art
+da             |  there
+damit          |  with it
+dann           |  then
+
+der            |  the
+den
+des
+dem
+die
+das
+
+daß            |  that
+
+derselbe       |  the same
+derselben
+denselben
+desselben
+demselben
+dieselbe
+dieselben
+dasselbe
+
+dazu           |  to that
+
+dein           |  thy
+deine
+deinem
+deinen
+deiner
+deines
+
+denn           |  because
+
+derer          |  of those
+dessen         |  of him
+
+dich           |  thee
+dir            |  to thee
+du             |  thou
+
+dies           |  this
+diese
+diesem
+diesen
+dieser
+dieses
+
+
+doch           |  (several meanings)
+dort           |  (over) there
+
+
+durch          |  through
+
+ein            |  a
+eine
+einem
+einen
+einer
+eines
+
+einig          |  some
+einige
+einigem
+einigen
+einiger
+einiges
+
+einmal         |  once
+
+er             |  he
+ihn            |  him
+ihm            |  to him
+
+es             |  it
+etwas          |  something
+
+euer           |  your
+eure
+eurem
+euren
+eurer
+eures
+
+für            |  for
+gegen          |  towards
+gewesen        |  p.p. of sein
+hab            |  have
+habe           |  have
+haben          |  have
+hat            |  has
+hatte          |  had
+hatten         |  had
+hier           |  here
+hin            |  there
+hinter         |  behind
+
+ich            |  I
+mich           |  me
+mir            |  to me
+
+
+ihr            |  you, to her
+ihre
+ihrem
+ihren
+ihrer
+ihres
+euch           |  to you
+
+im             |  in + dem
+in             |  in
+indem          |  while
+ins            |  in + das
+ist            |  is
+
+jede           |  each, every
+jedem
+jeden
+jeder
+jedes
+
+jene           |  that
+jenem
+jenen
+jener
+jenes
+
+jetzt          |  now
+kann           |  can
+
+kein           |  no
+keine
+keinem
+keinen
+keiner
+keines
+
+können         |  can
+könnte         |  could
+machen         |  do
+man            |  one
+
+manche         |  some, many a
+manchem
+manchen
+mancher
+manches
+
+mein           |  my
+meine
+meinem
+meinen
+meiner
+meines
+
+mit            |  with
+muss           |  must
+musste         |  had to
+nach           |  to(wards)
+nicht          |  not
+nichts         |  nothing
+noch           |  still, yet
+nun            |  now
+nur            |  only
+ob             |  whether
+oder           |  or
+ohne           |  without
+sehr           |  very
+
+sein           |  his
+seine
+seinem
+seinen
+seiner
+seines
+
+selbst         |  self
+sich           |  herself
+
+sie            |  they, she
+ihnen          |  to them
+
+sind           |  are
+so             |  so
+
+solche         |  such
+solchem
+solchen
+solcher
+solches
+
+soll           |  shall
+sollte         |  should
+sondern        |  but
+sonst          |  else
+über           |  over
+um             |  about, around
+und            |  and
+
+uns            |  us
+unse
+unsem
+unsen
+unser
+unses
+
+unter          |  under
+viel           |  much
+vom            |  von + dem
+von            |  from
+vor            |  before
+während        |  while
+war            |  was
+waren          |  were
+warst          |  wast
+was            |  what
+weg            |  away, off
+weil           |  because
+weiter         |  further
+
+welche         |  which
+welchem
+welchen
+welcher
+welches
+
+wenn           |  when
+werde          |  will
+werden         |  will
+wie            |  how
+wieder         |  again
+will           |  want
+wir            |  we
+wird           |  will
+wirst          |  willst
+wo             |  where
+wollen         |  want
+wollte         |  wanted
+würde          |  would
+würden         |  would
+zu             |  to
+zum            |  zu + dem
+zur            |  zu + der
+zwar           |  indeed
+zwischen       |  between
+
diff --git a/solr/biblio/conf/schema.xml b/solr/biblio/conf/schema.xml
index 6ccce34540319c9d2959b4c274fe8526deda6b0f..c8920d01826e5c42c2cda32b2372f03da87008f6 100644
--- a/solr/biblio/conf/schema.xml
+++ b/solr/biblio/conf/schema.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
+<?xml version="1.0" ?>
 <schema name="VuFind Bibliographic Index" version="1.2">
   <types>
     <!-- Define fieldType long as it is needed by the _version_ field required by Solr 4.x -->
-    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>  
     <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
     <fieldType name="textFacet" class="solr.TextField" sortMissingLast="true" omitNorms="true">
       <analyzer>
@@ -11,14 +11,6 @@
         <filter class="solr.PatternReplaceFilterFactory" pattern="(?&lt;!\b[A-Z])[.\s]*$" replacement="" replace="first"/>
       </analyzer>
     </fieldType>
-    <!-- BOF vufind2 addition -->
-    <fieldType name="textFacetRaw" class="solr.TextField" sortMissingLast="true" omitNorms="true">
-      <analyzer>
-        <tokenizer class="solr.KeywordTokenizerFactory"/>
-        <!-- this is just like textFacet but without punctuation stripping. -->
-      </analyzer>
-    </fieldType>
-    <!-- EOF vufind2 addition -->
     <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -37,8 +29,8 @@
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
-        <!-- Zusatz -->
-        <filter class="solr.SynonymFilterFactory" synonyms="zusatz.txt" ignoreCase="true" expand="true"/>
+	<!-- Zusatz -->
+        <!--<filter class="solr.SynonymFilterFactory" synonyms="zusatz.txt" ignoreCase="true" expand="true"/>-->
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="german_stop.txt" enablePositionIncrements="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -49,6 +41,7 @@
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>
+
     <!-- Text Field without Stemming and Synonyms -->
     <fieldType name="textProper" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
@@ -102,7 +95,7 @@
         <tokenizer class="solr.PatternTokenizerFactory" pattern="^(\S*)\s*.*$" group="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.PatternReplaceFilterFactory" pattern="[^0-9x]" replacement="" replace="all"/>
-        <filter class="solr.LengthFilterFactory" min="1" max="100"/>
+        <filter class="solr.LengthFilterFactory" min="1" max="100" />
       </analyzer>
     </fieldType>
     <!-- Text Field for rather normalized information like call number (Signatur),
@@ -118,6 +111,7 @@
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
+   
     <fieldType name="codetokenized" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -128,221 +122,237 @@
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
+
     <fieldType name="num" class="solr.TrieLongField" sortMissingLast="true" omitNorms="true"/>
     <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
   </types>
-  <fields>
-    <!-- Required by Solr 4.x -->
-    <field name="_version_" type="long" indexed="true" stored="true"/>
-    <!-- Core Fields  -->
-    <!-- Used for loading correct record driver -->
-    <field name="recordtype" type="string" indexed="false" stored="true"/>
-    <field name="id" type="string" indexed="true" stored="true"/>
-    <field name="mrc0007" type="string" indexed="true" stored="true"/>
-    <field name="mrc0070" type="string" indexed="true" stored="true"/>
-    <field name="fullrecord" type="string" indexed="false" stored="true"/>
-    <field name="itemdata" type="string" indexed="false" stored="true"/>
-    <field name="marc_error" type="string" indexed="false" stored="true" multiValued="true"/>
-    <field name="allfields" type="text" indexed="true" stored="false"/>
-    <field name="allfields_unstemmed" type="textProper" indexed="true" stored="false"/>
-    <field name="fulltext" type="text" indexed="true" stored="false" multiValued="false"/>
-    <field name="spelling" type="textSpell" indexed="true" stored="true"/>
-    <field name="spellingShingle" type="textSpellShingle" indexed="true" stored="true" multiValued="true"/>
-    <!-- finc-spezifisch, bibliotheksübergreifend -->
-    <field name="mega_collection" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="mega_toplevel" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="record_id" type="string" indexed="true" stored="true" multiValued="false" termVectors="true"/>
-    <field name="source_id" default="error" type="string" indexed="true" stored="true" multiValued="false"/>
-    <!-- <field name="source_name" default="error" type="string" indexed="true" stored="true" multiValued="false"/> -->
-    <field name="authorized_mode" default="true" type="string" indexed="true" stored="true" multiValued="false"/>
-    <field name="institution" default="finc" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="signatur" type="code" indexed="true" stored="true" multiValued="true"/>
-    <field name="barcode" type="code" indexed="true" stored="true" multiValued="true"/>
-    <field name="rsn" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="access_facet" type="string" indexed="true" stored="true" multiValued="false"/>
-    <field name="author_id" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="topic_id" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="author_ref" type="textProper" indexed="true" stored="false" multiValued="true"/>
-    <field name="author_corp_ref" type="textProper" indexed="true" stored="false" multiValued="true"/>
-    <field name="topic_ref" type="text" indexed="true" stored="false" multiValued="true"/>
-    <field name="multipart_set" type="string" indexed="true" stored="true" multiValued="false"/>
-    <field name="multipart_link" type="string" indexed="true" stored="true" multiValued="true" termVectors="true"/>
-    <field name="multipart_part" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="purchase" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="timecode" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+ <fields>
+   <!-- Core Fields  -->
+   <!-- Required by Solr 4.x -->
+   <field name="_version_" type="long" indexed="true" stored="true"/>
+   <!-- Used for loading correct record driver -->
+   <field name="recordtype" type="string" indexed="false" stored="true"/>
+   <field name="id" type="string" indexed="true" stored="true"/>
+   <field name="mrc0007" type="string" indexed="true" stored="true"/>
+   <field name="mrc0070" type="string" indexed="true" stored="true"/>
+   <!--<field name="fullrecord" type="string" indexed="false" stored="true"/>-->
+   <field name="itemdata" type="string" indexed="false" stored="true"/>
+   <field name="marc_error" type="string" indexed="false" stored="true" multiValued="true"/>
+   <field name="allfields" type="text" indexed="true" stored="false"/>
+   <field name="allfields_unstemmed" type="textProper" indexed="true" stored="false"/>
+   <field name="fulltext" type="text" indexed="true" stored="false" multiValued="false"/>
+   <field name="spelling" type="textSpell" indexed="true" stored="true"/>
+   <field name="spellingShingle" type="textSpellShingle" indexed="true" stored="true" multiValued="true"/>
+   <!-- finc-spezifisch, bibliotheksübergreifend -->
+   <field name="mega_collection" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="mega_toplevel" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="record_id" type="string" indexed="true" stored="true" multiValued="false" termVectors="true"/>
+   <field name="source_id" default="error" type="string" indexed="true" stored="true" multiValued="false"/>
+   <!-- <field name="source_name" default="error" type="string" indexed="true" stored="true" multiValued="false"/> -->
+   <field name="authorized_mode" default="true" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="institution" default="finc" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="signatur" type="code" indexed="true" stored="true" multiValued="true"/>
+   <field name="barcode" type="code" indexed="true" stored="true" multiValued="true"/>
+   <field name="rsn" type="string" indexed="true" stored="true" multiValued="true" />
+   <field name="access_facet" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="author_id" type="string" indexed="true" stored="true" multiValued="true" />
+   <field name="topic_id" type="string" indexed="true" stored="true" multiValued="true" />
+   <field name="author_ref" type="textProper" indexed="true" stored="false" multiValued="true" />
+   <field name="author_corp_ref" type="textProper" indexed="true" stored="false" multiValued="true" />
+   <field name="topic_ref" type="text" indexed="true" stored="false" multiValued="true" />
+   <field name="multipart_set" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="multipart_link" type="string" indexed="true" stored="true" multiValued="true" termVectors="true"/>
+   <field name="multipart_part" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="purchase" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="timecode" type="textFacet" indexed="true" stored="true" multiValued="true"/>
     <!-- finc-spezifisch UND bibliotheksspezifisch -->
-    <field name="misc_dech1" type="codetokenized" indexed="true" stored="false" multiValued="true"/>
-    <!--field name="misc_de15" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <field name="misc_del152" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="misc_de105" type="string" indexed="true" stored="true" multiValued="true"/-->
-    <!--field name="misc_de520" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_del189" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_dezwi2" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_dezi4" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_ded117" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_de540" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="misc_del242" type="code" indexed="true" stored="false" multiValued="true"/-->
-    <field name="branch_de15" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="branch_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="branch_de105" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="branch_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="branch_del189" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <field name="branch_dezwi2" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="branch_dezi4" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="branch_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="branch_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="branch_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <field name="collcode_de15" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="collcode_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="collcode_de105" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="collcode_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="collcode_del189" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <field name="collcode_dezwi2" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="collcode_dezi4" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="collcode_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="collcode_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="collcode_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <field name="format_de15" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_del152" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_de105" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_del189" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_dezwi2" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_dezi4" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_de540" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="format_ded117" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="format_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="format_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!--field name="format_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <!-- Local Subject Headings for searching and faceting -->
-    <field name="local_heading_facet_del152" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="local_heading_dezwi2" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="local_heading_facet_dezwi2" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="local_heading_del242" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="local_class_del242" type="code" indexed="true" stored="true" multiValued="true"/>
-    <field name="udk_raw_de105" default="not assigned" type="code" indexed="true" stored="true" multiValued="true"/>
-    <field name="udk_facet_de105" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="udk_raw_del189" default="not assigned" type="code" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="udk_facet_del189" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/-->
-    <field name="finc_class_facet" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="misc_dech1" type="codetokenized" indexed="true" stored="false" multiValued="true"/>
+   <!--field name="misc_de15" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <field name="misc_del152" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="misc_de105" type="string" indexed="true" stored="true" multiValued="true"/-->
+   <!--field name="misc_de520" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_del189" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_dezwi2" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_dezi4" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_ded117" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_de540" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="misc_del242" type="code" indexed="true" stored="false" multiValued="true"/-->
+   <field name="branch_de15" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="branch_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="branch_de105" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="branch_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="branch_del189" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <field name="branch_dezwi2" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="branch_dezi4" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="branch_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="branch_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="branch_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <field name="collcode_de15" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="collcode_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="collcode_de105" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="collcode_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="collcode_del189" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <field name="collcode_dezwi2" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="collcode_dezi4" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="collcode_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="collcode_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="collcode_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <field name="format_de15" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_del152" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_dech1" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_de105" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_de520" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_del189" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_dezwi2" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_dezi4" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_de540" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="format_ded117" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="format_ded117" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="format_de540" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <!--field name="format_del242" type="textFacet" indexed="true" stored="false" multiValued="true"/-->  
+   <!-- Local Subject Headings for searching and faceting -->
+   <field name="local_heading_facet_del152" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="local_heading_dezwi2" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="local_heading_facet_dezwi2" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="local_heading_del242" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="local_class_del242" type="code" indexed="true" stored="true" multiValued="true"/>
+   <field name="udk_raw_de105" default="not assigned" type="code" indexed="true" stored="true" multiValued="true"/>
+   <field name="udk_facet_de105" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="udk_raw_del189" default="not assigned" type="code" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="udk_facet_del189" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/-->
+   <field name="finc_class_facet" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
     <!-- allgemeingueltig, Generic Fields -->
-    <field name="zdb" type="string" indexed="true" stored="true" multiValued="false"/>
-    <field name="format" default="not assigned" type="string" indexed="true" stored="true" multiValued="true" termVectors="true"/>
-    <field name="language" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="author" type="textProper" indexed="true" stored="true" termVectors="true"/>
-    <field name="author_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
-    <field name="authorStr" type="textFacet" indexed="true" stored="false"/>
-    <field name="author2" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <field name="author2_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="author2Str" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
-    <field name="author_corp" type="textProper" indexed="true" stored="true" termVectors="true"/>
-    <field name="author_corp_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
-    <!-- field name="author_corpStr" type="textFacet" indexed="true" stored="false"/-->
-    <field name="author_corp2" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <field name="author_corp2_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <!-- field name="author_corp2Str" type="textFacet" indexed="true" stored="false" multiValued="true"/ -->
-    <field name="author2-role" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="author_letter" type="string" indexed="true" stored="true"/>
-    <field name="author_additional" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <!--field name="author_additionalStr" type="string" indexed="true" stored="true" multiValued="true"/ -->
-    <field name="author_facet" type="textFacet" indexed="true" stored="false" multiValued="true"/>
-    <field name="author_browse" type="string" indexed="true" stored="false" multiValued="true"/>
-    <field name="title" type="text" indexed="true" termVectors="true" stored="true"/>
-    <field name="title_part" type="text" indexed="true" stored="true"/>
-    <field name="title_sub" type="text" indexed="true" stored="true"/>
-    <field name="title_short" type="text" indexed="true" stored="true"/>
-    <field name="title_full" type="text" indexed="true" stored="true"/>
-    <field name="title_full_unstemmed" type="textProper" indexed="true" stored="true"/>
-    <field name="title_fullStr" type="string" indexed="true" stored="true"/>
-    <field name="title_alt" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="title_uniform" type="text" indexed="true" stored="true" multiValued="false"/>
-    <field name="title_old" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="title_new" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="title_sort" type="string" indexed="true" stored="true"/>
-    <field name="title_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
-    <field name="series" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="series2" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="series_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <field name="edition" type="string" indexed="true" stored="true"/>
-    <field name="publisher" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <field name="publishDate" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="publishDateSort" type="string" indexed="true" stored="true"/>
-    <field name="imprint" type="string" indexed="false" stored="true" multiValued="false"/>
-    <field name="dateSpan" type="string" indexed="false" stored="true" multiValued="true"/>
-    <field name="publishPlace" type="textProper" indexed="true" stored="true" multiValued="true"/>
-    <field name="physical" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="footnote" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="dissertation_note" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="performer_note" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="illustrated" type="string" indexed="true" stored="true" multiValued="false"/>
-    <field name="contents" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="url" type="string" indexed="false" stored="true" multiValued="true"/>
-    <field name="urn" type="string" indexed="true" stored="false" multiValued="true"/>
-    <field name="isbn" type="isn" indexed="true" stored="true" multiValued="true"/>
-    <field name="issn" type="isn" indexed="true" stored="true" multiValued="true"/>
-    <field name="isbn_canc" type="isn" indexed="true" stored="true" multiValued="true"/>
-    <field name="ismn" type="isn" indexed="true" stored="true" multiValued="true"/>
-    <field name="issn_canc" type="isn" indexed="true" stored="true" multiValued="true"/>
-    <field name="oclc_num" type="num" indexed="true" stored="true" multiValued="true"/>
-    <field name="topic" type="text" indexed="true" stored="true" termVectors="true" multiValued="true"/>
-    <field name="topic_unstemmed" type="textProper" indexed="true" stored="false" multiValued="true"/>
-    <field name="topic_facet" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="geogr_code" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="geogr_code_person" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="music_heading" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="music_heading_browse" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="film_heading" type="textFacet" indexed="true" stored="true" multiValued="true"/>
-    <field name="dewey-hundreds" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="dewey-tens" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="dewey-ones" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="dewey-full" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
-    <field name="dewey-sort" default="not assigned" type="string" indexed="true" stored="true"/>
-    <field name="dewey-raw" type="string" indexed="true" stored="true"/>
-    <field name="rvk_facet" default="not assigned" type="code" indexed="true" stored="true" termVectors="true" multiValued="true"/>
-    <field name="rvk_label" type="text" indexed="true" stored="true" multiValued="true"/>
-    <field name="rvk_path" type="code" indexed="true" stored="true" multiValued="true"/>
-    <field name="attached_de15" type="date" indexed="true" stored="true" multiValued="false"/>
-    <!-- Tracking fields to keep track of oldest and most recent index times -->
-    <!-- field name="first_indexed" type="date" indexed="true" stored="true"/ -->
-    <!-- field name="last_indexed" type="date" indexed="true" stored="true"/ -->
-  </fields>
-  <uniqueKey>id</uniqueKey>
-  <!-- CopyFields for Spelling -->
-  <!-- ** Basic, single word spelling -->
-  <copyField source="allfields" dest="spelling"/>
-  <!-- ** Complex, Shingle spelling -->
-  <copyField source="author" dest="spellingShingle"/>
-  <copyField source="author2" dest="spellingShingle"/>
-  <copyField source="author_corp" dest="spellingShingle"/>
-  <copyField source="author_corp2" dest="spellingShingle"/>
-  <copyField source="title" dest="spellingShingle"/>
-  <copyField source="contents" dest="spellingShingle"/>
-  <copyField source="series" dest="spellingShingle"/>
-  <copyField source="series2" dest="spellingShingle"/>
-  <copyField source="topic" dest="spellingShingle"/>
-  <!-- CopyFields for Faceting on Text -->
-  <copyField source="title_full" dest="title_fullStr"/>
-  <copyField source="title_full" dest="title_full_unstemmed"/>
-  <copyField source="author" dest="authorStr"/>
-  <!--copyField source="author2" dest="author2Str"/>
+   <field name="zdb" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="format" default="not assigned" type="string" indexed="true" stored="true" multiValued="true" termVectors="true"/>
+   <field name="language" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="author" type="textProper" indexed="true" stored="true" termVectors="true"/>
+   <field name="author_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
+   <field name="authorStr" type="textFacet" indexed="true" stored="false"/>
+   <field name="author2" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <field name="author2_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <!--field name="author2Str" type="textFacet" indexed="true" stored="false" multiValued="true"/-->
+   <field name="author_corp" type="textProper" indexed="true" stored="true" termVectors="true"/>
+   <field name="author_corp_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
+   <!-- field name="author_corpStr" type="textFacet" indexed="true" stored="false"/-->
+   <field name="author_corp2" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <field name="author_corp2_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <!-- field name="author_corp2Str" type="textFacet" indexed="true" stored="false" multiValued="true"/ -->
+   <field name="author2-role" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="author_letter" type="string" indexed="true" stored="true"/>
+   <!-- field name="author_additional" type="textProper" indexed="true" stored="true" multiValued="true"/ -->
+   <!--field name="author_additionalStr" type="string" indexed="true" stored="true" multiValued="true"/ -->
+   <field name="author_facet" type="textFacet" indexed="true" stored="false" multiValued="true"/>
+   <field name="author_browse" type="string" indexed="true" stored="false" multiValued="true"/>
+   <field name="title" type="text" indexed="true" termVectors="true" stored="true"/>
+   <field name="title_part" type="text" indexed="true" stored="true"/>
+   <field name="title_sub" type="text" indexed="true" stored="true"/>
+   <field name="title_short" type="text" indexed="true" stored="true"/>
+   <field name="title_full" type="text" indexed="true" stored="true"/>
+   <field name="title_full_unstemmed" type="textProper" indexed="true" stored="true"/>
+   <field name="title_fullStr" type="string" indexed="true" stored="true"/>
+   <field name="title_alt" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="title_uniform" type="text" indexed="true" stored="true" multiValued="false"/>
+   <field name="title_old" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="title_new" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="title_sort" type="string" indexed="true" stored="true"/>
+   <field name="title_orig" type="textProper" indexed="true" stored="true" multiValued="false"/>
+   <field name="series" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="series2" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="series_orig" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <field name="edition" type="string" indexed="true" stored="true"/>
+   <field name="publisher" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <field name="publishDate" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="publishDateSort" type="string" indexed="true" stored="true"/>
+   <field name="imprint" type="string" indexed="false" stored="true" multiValued="false"/>
+   <field name="dateSpan" type="string" indexed="false" stored="true" multiValued="true"/>
+   <field name="publishPlace" type="textProper" indexed="true" stored="true" multiValued="true"/>
+   <field name="physical" type="string" indexed="true" stored="true" multiValued="true"/>   
+   <field name="footnote" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="dissertation_note" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="performer_note" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="illustrated" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="contents" type="text" indexed="true" stored="true" multiValued="true"/>   
+   <field name="url" type="string" indexed="false" stored="true" multiValued="true"/>
+   <field name="urn" type="string" indexed="true" stored="false" multiValued="true"/>
+   <field name="isbn" type="isn" indexed="true" stored="true" multiValued="true"/>
+   <field name="issn" type="isn" indexed="true" stored="true" multiValued="true"/>
+   <field name="isbn_canc" type="isn" indexed="true" stored="true" multiValued="true"/>
+   <field name="ismn" type="isn" indexed="true" stored="true" multiValued="true"/>
+   <field name="issn_canc" type="isn" indexed="true" stored="true" multiValued="true"/>
+   <field name="oclc_num" type="num" indexed="true" stored="true" multiValued="true"/>
+   <field name="topic" type="text" indexed="true" stored="true" termVectors="true" multiValued="true"/>
+   <field name="topic_unstemmed" type="textProper" indexed="true" stored="false" multiValued="true"/>
+   <field name="topic_facet" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="geogr_code" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="geogr_code_person" default="not assigned" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="music_heading" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="music_heading_browse" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="film_heading" type="textFacet" indexed="true" stored="true" multiValued="true"/>
+   <field name="dewey-hundreds" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="dewey-tens" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="dewey-ones" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="dewey-full" default="not assigned" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="dewey-sort" default="not assigned" type="string" indexed="true" stored="true" />
+   <field name="dewey-raw" type="string" indexed="true" stored="true"/>
+   <field name="rvk_facet" default="not assigned" type="code" indexed="true" stored="true" termVectors="true" multiValued="true"/>
+   <field name="rvk_label" type="text" indexed="true" stored="true" multiValued="true"/>
+   <field name="rvk_path" type="code" indexed="true" stored="true" multiValued="true"/>
+   <field name="attached_de15" type="date" indexed="true" stored="true" multiValued="false"/>
+   <!-- Tracking fields to keep track of oldest and most recent index times -->
+   <!-- field name="first_indexed" type="date" indexed="true" stored="true"/ -->
+   <!-- field name="last_indexed" type="date" indexed="true" stored="true"/ -->
+   <!-- blubb-->
+   <field name="fulltext_unstemmed" type="textProper" indexed="true" stored="false"/>
+   <!-- Hierarchy Fields -->
+   <field name="hierarchytype" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="hierarchy_top_id" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="hierarchy_top_title" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="hierarchy_parent_id" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="hierarchy_parent_title" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="hierarchy_sequence" type="string" indexed="true" stored="true" multiValued="true"/>
+   <field name="is_hierarchy_id" type="string" indexed="true" stored="true" multiValued="false"/>
+   <field name="is_hierarchy_title" type="string" indexed="true" stored="true" multiValued="false"/>
+   <!-- <field name="title_in_hierarchy" type="string" indexed="true" stored="true" multiValued="true" /> -->
+   <!-- <field name="hierarchy_browse" type="textFacetRaw" indexed="true" stored="false" multiValued="true"/> -->
+   
+</fields>
+ <uniqueKey>id</uniqueKey>
+ <!-- CopyFields for Spelling -->
+ <!-- ** Basic, single word spelling -->
+ <copyField source="allfields" dest="spelling"/>
+ <!-- ** Complex, Shingle spelling -->
+ <copyField source="author" dest="spellingShingle"/>
+ <copyField source="author2" dest="spellingShingle"/>
+ <copyField source="author_corp" dest="spellingShingle"/>
+ <copyField source="author_corp2" dest="spellingShingle"/>
+ <copyField source="title" dest="spellingShingle"/>
+ <copyField source="contents" dest="spellingShingle"/>
+ <copyField source="series" dest="spellingShingle"/>
+ <copyField source="series2" dest="spellingShingle"/>
+ <copyField source="topic" dest="spellingShingle"/>
+ <!-- CopyFields for Faceting on Text -->
+ <copyField source="title_full" dest="title_fullStr"/>
+ <copyField source="title_full" dest="title_full_unstemmed"/>
+ <copyField source="author" dest="authorStr"/>
+ <!--copyField source="author2" dest="author2Str"/>
  <copyField source="author_corp" dest="author_corpStr"/>
  <copyField source="author_corp2" dest="author_corp2Str"/-->
-  <!-- copyField source="author_additional" dest="author_additionalStr"/ -->
-  <!-- copyField source="publisher" dest="publisherStr"/ -->
-  <!-- copyField source="publishPlace" dest="publishPlaceStr"/ -->
-  <copyField source="topic" dest="topic_unstemmed"/>
-  <copyField source="allfields" dest="allfields_unstemmed"/>
-  <!-- CopyFields for Alphabetic Browse -->
-  <!--copyField source="topic" dest="topic_browse"/-->
-  <copyField source="music_heading" dest="music_heading_browse"/>
-  <copyField source="author" dest="author_browse"/>
-  <copyField source="author2" dest="author_browse"/>
-  <!-- Laut http://wiki.apache.org/solr/SchemaXml ist "defaultSearchField" considered for deprecation.
+ <!-- copyField source="author_additional" dest="author_additionalStr"/ -->
+ <!-- copyField source="publisher" dest="publisherStr"/ -->
+ <!-- copyField source="publishPlace" dest="publishPlaceStr"/ -->
+ <copyField source="topic" dest="topic_unstemmed"/>
+ <copyField source="allfields" dest="allfields_unstemmed"/>
+ <!-- CopyFields for Alphabetic Browse -->
+ <!--copyField source="topic" dest="topic_browse"/-->
+ <copyField source="music_heading" dest="music_heading_browse" />
+ <copyField source="author" dest="author_browse"/>
+ <copyField source="author2" dest="author_browse"/>
+ <!-- Laut http://wiki.apache.org/solr/SchemaXml ist "defaultSearchField" considered for deprecation.
  Stattdessen sollen der Request Handler oder die Query LocalParams die Default-Felder festlegen.-->
-  <defaultSearchField>allfields</defaultSearchField>
-  <!-- Default Boolean Operator -->
-  <!-- Laut http://wiki.apache.org/solr/SchemaXml ist "defaultOperator" considered for deprecation.
+ <defaultSearchField>allfields</defaultSearchField>
+ <!-- Default Boolean Operator -->
+ <!-- Laut http://wiki.apache.org/solr/SchemaXml ist "defaultOperator" considered for deprecation.
  Stattdessen sollen der Request Handler oder die Query LocalParams den Default-Operator festlegen.-->
-  <solrQueryParser defaultOperator="AND"/>
+ <solrQueryParser defaultOperator="AND"/>
+
 </schema>