[open-ils-commits] r1376 - in servres/trunk/conifer: . integration integration/auth_evergreen libsystems/evergreen plumbing syrup syrup/migrations (gfawcett)

svn at svn.open-ils.org svn at svn.open-ils.org
Sun Apr 17 17:29:33 EDT 2011


Author: gfawcett
Date: 2011-04-17 17:29:27 -0400 (Sun, 17 Apr 2011)
New Revision: 1376

Added:
   servres/trunk/conifer/integration/auth_evergreen/eg_http.py
   servres/trunk/conifer/syrup/migrations/0015_auto__chg_field_item_evergreen_update.py
Removed:
   servres/trunk/conifer/integration/auth_evergreen/dj.py
   servres/trunk/conifer/integration/auth_evergreen/eg_xmlrpc.py
   servres/trunk/conifer/libsystems/evergreen/fm_IDL.xml
Modified:
   servres/trunk/conifer/integration/auth_evergreen/__init__.py
   servres/trunk/conifer/integration/evergreen_site.py
   servres/trunk/conifer/integration/uwindsor.py
   servres/trunk/conifer/libsystems/evergreen/item_status.py
   servres/trunk/conifer/libsystems/evergreen/startup.py
   servres/trunk/conifer/libsystems/evergreen/support.py
   servres/trunk/conifer/local_settings.py.example
   servres/trunk/conifer/plumbing/hooksystem.py
   servres/trunk/conifer/settings.py
   servres/trunk/conifer/syrup/models.py
Log:
Evergreen authentication working again; overhauled local_settings, moved EG-specific stuff into EG module.

Modified: servres/trunk/conifer/integration/auth_evergreen/__init__.py
===================================================================
--- servres/trunk/conifer/integration/auth_evergreen/__init__.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/integration/auth_evergreen/__init__.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -0,0 +1,52 @@
+from .eg_http import EvergreenAuthServer
+from django.contrib.auth.models import User
+
+
+class EvergreenAuthBackend(EvergreenAuthServer):
+
+    def __init__(self):
+        super(EvergreenAuthBackend, self).__init__()
+
+    def authenticate(self, username=None, password=None):
+        login_token = self.login(username, password)
+        if login_token:
+            return self.maybe_initialize_user(
+                username, login_token=login_token)
+        return None
+
+    def get_user(self, user_id):
+        try:
+            return User.objects.get(pk=user_id)
+        except User.DoesNotExist:
+            return None
+
+    def maybe_initialize_user(self, username, login_token=None, look_local=True):
+        """Look up user in Django db; if not found, fetch user detail
+        from backend and set up a local user object. Return None if no
+        such user exists in either Django or the backend.
+
+        Setting look_local=False skips the Django search and heads
+        straight to the backend; this shaves a database call when
+        walking a set of backends to initialize a user. Skipping
+        look_local on a username that already exists in Django will
+        certainly lead to an integrity error.
+
+        This method is NOT part of the Django backend interface.
+        """
+        user = None
+        username = self.djangoize_username(username)
+        if look_local:
+            try:
+                user = User.objects.get(username=username)
+            except User.DoesNotExist:
+                pass
+        if user is None:
+            u = self.lookup(username, login_token)
+            if u:           # user found in Evergreen.
+                user = User(username   = username,
+                            first_name = u['first_name'],
+                            last_name  = u['last_name'],
+                            email      = u['email'])
+                user.set_unusable_password()
+                user.save()
+        return user

Deleted: servres/trunk/conifer/integration/auth_evergreen/dj.py
===================================================================
--- servres/trunk/conifer/integration/auth_evergreen/dj.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/integration/auth_evergreen/dj.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -1,53 +0,0 @@
-from eg_xmlrpc import EvergreenAuthServer
-from django.contrib.auth.models import User
-from django.conf import settings
-
-class EvergreenAuthBackend(EvergreenAuthServer):
-
-    def __init__(self):
-        assert settings.EVERGREEN_GATEWAY_SERVER, \
-            'EvergreenAuthBackend requires settings.EVERGREEN_GATEWAY_SERVER'
-        EvergreenAuthServer.__init__(
-            self, settings.EVERGREEN_GATEWAY_SERVER)
-
-    def authenticate(self, username=None, password=None):
-        pwd_valid = self.login(username, password)
-        if pwd_valid:
-            return self.maybe_initialize_user(username)
-        return None
-
-    def get_user(self, user_id):
-        try:
-            return User.objects.get(pk=user_id)
-        except User.DoesNotExist:
-            return None
-
-    def maybe_initialize_user(self, username, look_local=True):
-        """Look up user in Django db; if not found, fetch user detail
-        from backend and set up a local user object. Return None if no
-        such user exists in either Django or the backend.
-
-        Setting look_local=False skips the Django search and heads
-        straight to the backend; this shaves a database call when
-        walking a set of backends to initialize a user. Skipping
-        look_local on a username that already exists in Django will
-        certainly lead to an integrity error.
-
-        This method is NOT part of the Django backend interface.
-        """
-        user = None
-        if look_local:
-            try:
-                user = User.objects.get(username=username)
-            except User.DoesNotExist:
-                pass
-        if user is None:
-            u = self.lookup(username)
-            if u:           # user found in Evergreen.
-                user = User(username=username,
-                            first_name = u['first_name'],
-                            last_name  = u['last_name'],
-                            email      = u['email'])
-                user.set_unusable_password()
-                user.save()
-        return user

Added: servres/trunk/conifer/integration/auth_evergreen/eg_http.py
===================================================================
--- servres/trunk/conifer/integration/auth_evergreen/eg_http.py	                        (rev 0)
+++ servres/trunk/conifer/integration/auth_evergreen/eg_http.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -0,0 +1,67 @@
+# auth_evergreen_support -- Authentication and user lookup against an
+# Evergreen XML-RPC server.
+
+# This is the Evergreen-specific stuff, with no Django dependencies.
+
+from hashlib import md5
+import warnings
+import time
+from conifer.libsystems.evergreen.support import ER, E1, initialize
+import re
+
+#----------------------------------------------------------------------
+# support
+
+def _hsh(s):
+    return md5(s).hexdigest()
+
+#----------------------------------------------------------------------
+# main interface
+
+class EvergreenAuthServer(object):
+
+    def __init__(self):
+        pass
+
+    def login(self, username, password, workstation='OWA-proxyloc'): # fixme!
+        """Return True if the username/password are good, False otherwise."""
+
+        seed = E1('open-ils.auth.authenticate.init', username)
+
+        result = E1('open-ils.auth.authenticate.complete', {
+                'workstation' : workstation,
+                'username' : username,
+                'password' : _hsh(seed + _hsh(password)),
+                'type' : 'staff' 
+                })
+        try:
+            authkey = result['payload']['authtoken']
+            return authkey
+        except:
+            return None
+
+    def djangoize_username(self, username):
+        """
+        Transform username so it is valid as a Django username. For Django
+        1.2, only [a-zA-Z0-9_] are allowed in userids.
+        """
+        pat = re.compile('[^a-zA-Z0-9_]+')
+        return pat.sub('_', username)
+
+    def lookup(self, username, login_token=None):
+        """Given a username, return a dict, or None. The dict must have
+        four keys (first_name, last_name, email, external_username), where
+        external_username value is the username parameter."""
+
+        # for now, this backend only returns a user if a login_token is
+        # provided; in other words, the only time your personal info is
+        # fetched is when you log in.
+        if login_token:
+            resp = E1('open-ils.auth.session.retrieve', login_token)
+            person = dict((j, resp.get(k)) 
+                          for j,k in [('first_name', 'first_given_name'),
+                                      ('last_name', 'family_name'),
+                                      ('email', 'email'),
+                                      ('external_username', 'usrname')])
+            return person
+

Deleted: servres/trunk/conifer/integration/auth_evergreen/eg_xmlrpc.py
===================================================================
--- servres/trunk/conifer/integration/auth_evergreen/eg_xmlrpc.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/integration/auth_evergreen/eg_xmlrpc.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -1,86 +0,0 @@
-# auth_evergreen_support -- Authentication and user lookup against an
-# Evergreen XML-RPC server.
-
-# This is the Evergreen-specific stuff, with no Django dependencies.
-
-import xmlrpclib
-import md5
-import warnings
-import time
-
-#----------------------------------------------------------------------
-# support
-
-def do_request(proxy, method, *args):
-    # Against my test server, I would get intermittent
-    # ProtcolErrors. If we get one, try again, backing off gradually.
-    for attempt in range(5):
-        try:
-            return getattr(proxy, method)(*args)
-        except xmlrpclib.ProtocolError, pe:
-            warnings.warn('open-ils xml-rpc protocol error: trying again: ' + method)
-            time.sleep(0.1 * attempt)       # back off a bit and try again
-
-def _hsh(s):
-    return md5.new(s).hexdigest()
-
-#----------------------------------------------------------------------
-# main interface
-
-class EvergreenAuthServer(object):
-
-    def __init__(self, address, verbose=False):
-        self.address = address
-        self.verbose = verbose
-
-    def proxy(self, service):
-        server = xmlrpclib.Server(
-            'http://%s/xml-rpc/%s' % (self.address, service),
-            verbose=self.verbose)
-        def req(method, *args):
-            return do_request(server, method, *args)
-        return req
-
-    def login(self, username, password):
-        """Return True if the username/password are good, False otherwise."""
-        prx = self.proxy('open-ils.auth')
-        seed = prx('open-ils.auth.authenticate.init', username)
-        resp = prx('open-ils.auth.authenticate.complete',
-                   dict(username=username,
-                        password=_hsh(seed + _hsh(password)), 
-                        type='reserves'))
-        try:
-            # do we need the authkey for anything?
-            authkey = resp['payload']['authtoken']
-            return True
-        except KeyError:
-            return False
-
-    def lookup(self, username):
-        """Given a username, return a dict, or None. The dict must have
-        four keys (first_name, last_name, email, external_username), where
-        external_username value is the username parameter."""
-
-        prx = self.proxy('open-ils.actor')
-        r = prx('open-ils.actor.user.search.username', 'admin')
-        if not r:
-            return None
-        else:
-            r = r[0]['__data__']
-            f = lambda k: r.get(k)
-            person = dict((j, f(k)) for j,k in [('first_name', 'first_given_name'),
-                                                ('last_name', 'family_name'),
-                                                ('email', 'email'),
-                                                ('external_username', 'usrname')])
-            return person
-
-#----------------------------------------------------------------------
-# testing
-
-if __name__ == '__main__':
-    from pprint import pprint
-    address = '192.168.1.10'
-    egreen = EvergreenAuthServer(address)
-    username, password = 'admin', 'open-ils'
-    print egreen.login(username, password)
-    pprint(egreen.lookup('admin'))

Modified: servres/trunk/conifer/integration/evergreen_site.py
===================================================================
--- servres/trunk/conifer/integration/evergreen_site.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/integration/evergreen_site.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -11,6 +11,19 @@
 import time
 import traceback
 
+# If the Python OpenSRF library is installed, we want to know about it. It
+# isn't needed for our read-only ILS operations, only for updates.
+
+try:
+    import osrf
+    OSRF_LIB_INSTALLED = True
+except ImportError:
+    OSRF_LIB_INSTALLED = False
+
+if OSRF_LIB_INSTALLED:
+    from conifer.libsystems.evergreen.startup import ils_startup
+
+
 OPENSRF_AUTHENTICATE      = "open-ils.auth.authenticate.complete"
 OPENSRF_AUTHENTICATE_INIT = "open-ils.auth.authenticate.init"
 OPENSRF_BATCH_UPDATE      = "open-ils.cat.asset.copy.fleshed.batch.update"
@@ -30,16 +43,67 @@
 def disable(func):
     return None
 
+
+
 class EvergreenIntegration(object):
 
-    EG_BASE = 'http://%s/' % settings.EVERGREEN_GATEWAY_SERVER
-    initialize(EG_BASE)
+    # Either specify EVERGREEN_SERVERin your local_settings, or override
+    # EVERGREEN_SERVER and OPAC_URL, etc. in your subclass of this class.
 
+    EVERGREEN_SERVER = getattr(settings, 'EVERGREEN_SERVER', '')
+
+
+    # ----------------------------------------------------------------------
+    # These variables depend on EVERGREEN_SERVER, or else you need to override
+    # them in your subclass.
+
+    # OPAC_URL: the base URL for the OPAC's Web interface.
+    # default: http://your-eg-server/
+    # local_settings variable: EVERGREEN_OPAC_URL
+
+    if hasattr(settings, 'EVERGREEN_OPAC_URL'):
+        OPAC_URL = settings.EVERGREEN_OPAC_URL
+    else:
+        assert EVERGREEN_SERVER
+        OPAC_URL = 'http://%s/' % EVERGREEN_SERVER
+
+    # IDL_URL: where is your fm_IDL.xml file located? For faster process
+    # startup, it's recommended you use a file:// URL, pointing to a local
+    # copy of the file. default: http://your-eg-server/reports/fm_IDL.xml
+    # local_settings variable: EVERGREEN_IDL_URL
+
+    IDL_URL = getattr(settings, 'EVERGREEN_IDL_URL',
+                      'http://%s/reports/fm_IDL.xml' % EVERGREEN_SERVER)
+
+    # GATEWAY_URL: where is your HTTP gateway?
+    # default: http://your-eg-server/osrf-gateway-v1'
+    # variable: EVERGREEN_GATEWAY_URL
+
+    GATEWAY_URL = getattr(settings, 'EVERGREEN_GATEWAY_URL',
+                      'http://%s/osrf-gateway-v1' % EVERGREEN_SERVER)
+
+    # end of variables dependent on EVERGREEN_SERVER
+    # ----------------------------------------------------------------------
+
+
+
+    # OPAC_LANG and OPAC_SKIN: localization skinning for your OPAC
+
+    OPAC_LANG = getattr(settings, 'EVERGREEN_OPAC_LANG', 'en-CA')
+    OPAC_SKIN = getattr(settings, 'EVERGREEN_OPAC_SKIN', 'default')
+
+    # RESERVES_DESK_NAME: this will be going away, but for now, it's the full
+    # ILS-side name of the reserves desk. This needs to be replaced with a
+    # database-driven lookup for the correct reserves desk in the context of
+    # the given item.
+
+    RESERVES_DESK_NAME = getattr(settings, 'RESERVES_DESK_NAME', None)
+    
     # USE_Z3950: if True, use Z39.50 for catalogue search; if False, use OpenSRF.
     # Don't set this value directly here: rather, if there is a valid Z3950_CONFIG
     # settings in local_settings.py, then Z39.50 will be used.
 
-    USE_Z3950 = getattr(settings, 'Z3950_CONFIG', None) is not None
+    USE_Z3950 = bool(getattr(settings, 'Z3950_CONFIG', None))
 
     TIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
     DUE_FORMAT  = "%b %d %Y, %r"
@@ -48,14 +112,37 @@
     # call number
     IS_ATTACHMENT = re.compile('\w*DVD\s?|\w*CD\s?|\w[Gg]uide\s?|\w[Bb]ooklet\s?|\w*CD\-ROM\s?')
 
-    # Item status stuff
 
-    _STATUS_DECODE = [(str(x['id']), x['name'])
-                     for x in E1('open-ils.search.config.copy_status.retrieve.all')]
+    # Used if you're doing updates to Evergreen from Syrup.
 
-    AVAILABLE  = [id for id, name in _STATUS_DECODE if name == 'Available'][0]
-    RESHELVING = [id for id, name in _STATUS_DECODE if name == 'Reshelving'][0]
+    UPDATE_CHOICES = [ 
+        ('One', 'Syrup only'), 
+        ('Cat', 'Catalogue'), 
+        ('Zap', 'Remove from Syrup'), 
+        ] 
 
+
+
+    # ----------------------------------------------------------------------
+
+
+
+    def __init__(self):
+        # establish our OpenSRF connection.
+        initialize(self)
+
+        if OSRF_LIB_INSTALLED:
+            ils_startup(self.EVERGREEN_SERVER, 
+                        self.IDL_URL)
+
+        # set up the available/reshelving codes, for the item_status routine.
+        status_decode = [(str(x['id']), x['name'])
+                         for x in E1('open-ils.search.config.copy_status.retrieve.all')]
+
+        self.AVAILABLE  = [id for id, name in status_decode if name == 'Available'][0]
+        self.RESHELVING = [id for id, name in status_decode if name == 'Reshelving'][0]
+
+
     def item_status(self, item):
         """
         Given an Item object, return three numbers: (library, desk,
@@ -85,6 +172,7 @@
         # bindings, I am not sure there is a use case where an evergreen
         # site would not have access to these but will leave for now
         # since there are no hardcoded references
+        assert self.RESERVES_DESK_NAME, 'No RESERVES_DESK_NAME specified!'
         try:
             counts = E1(OPENSRF_COPY_COUNTS, bib_id, 1, 0)
             lib = desk = avail = vol = 0
@@ -108,7 +196,7 @@
                 # attachment test
                 attachtest = re.search(self.IS_ATTACHMENT, callnum)
 
-                if loc == settings.RESERVES_DESK_NAME:
+                if loc == self.RESERVES_DESK_NAME:
                     desk += anystatus_here
                     avail += avail_here
                     dueinfo = ''
@@ -138,7 +226,7 @@
                         if thisloc:
                             thisloc = thisloc.get("name")
 
-                        if thisloc == settings.RESERVES_DESK_NAME:
+                        if thisloc == self.RESERVES_DESK_NAME:
                             bringfw = attachtest
 
                             # multiple volumes
@@ -224,7 +312,7 @@
         bibid	= ''
         is_barcode = re.search('\d{14}', query)
 
-        if query.startswith(self.EG_BASE):
+        if query.startswith(self.OPAC_URL):
             # query is an Evergreen URL
             # snag the bibid at this point
             params = dict([x.split("=") for x in query.split("&")])
@@ -302,10 +390,11 @@
         """
         Given a bib ID, return either a URL for examining the bib record, or None.
         """
-        # TODO: move this to local_settings
         if bib_id:
-            return ('%sopac/en-CA'
-                    '/skin/uwin/xml/rdetail.xml?r=%s&l=1&d=0' % (self.EG_BASE, bib_id))
+            url = '%sopac/%s/skin/%s/xml/rdetail.xml?l=1&d=0&r=%s' % (
+                self.OPAC_URL, self.OPAC_LANG, self.OPAC_SKIN,
+                bib_id)
+            return url
 
     if USE_Z3950:
         # only if we are using Z39.50 for catalogue search. Against our Conifer

Modified: servres/trunk/conifer/integration/uwindsor.py
===================================================================
--- servres/trunk/conifer/integration/uwindsor.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/integration/uwindsor.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -13,7 +13,13 @@
 
 
     OSRF_CAT_SEARCH_ORG_UNIT = 106
+    
+    OPAC_LANG = 'en-CA'
+    OPAC_SKIN = 'uwin'
 
+    RESERVES_DESK_NAME = 'Leddy: Course Reserves - Main Bldng - 1st Flr - Reserve Counter at Circulation Desk'
+    SITE_DEFAULT_ACCESS_LEVEL = 'RESTR'
+
     #---------------------------------------------------------------------------
     # proxy server integration
 
@@ -84,6 +90,11 @@
         'group': a group-code, externally defined;
         'role':          the user's role in that group, one of (INSTR, ASSIST, STUDT).
         """
+        if '@' in userid:
+            # If there's an at-sign in the userid, then it's not a UWin ID.
+            # Maybe you've got Evergreen authentication turned on?
+           return []
+ 
         memberships = self._campus_info('membership_ids', userid)
         for m in memberships:
             m['role'] = self._decode_role(m['role'])

Deleted: servres/trunk/conifer/libsystems/evergreen/fm_IDL.xml
===================================================================
--- servres/trunk/conifer/libsystems/evergreen/fm_IDL.xml	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/libsystems/evergreen/fm_IDL.xml	2011-04-17 21:29:27 UTC (rev 1376)
@@ -1,5384 +0,0 @@
-<IDL xmlns:idl='http://opensrf.org/spec/IDL/base/v1' xmlns='http://opensrf.org/spec/IDL/base/v1' xmlns:permacrud='http://open-ils.org/spec/opensrf/IDL/permacrud/v1' xmlns:reporter='http://open-ils.org/spec/opensrf/IDL/reporter/v1' xmlns:oils_obj='http://open-ils.org/spec/opensrf/IDL/objects/v1' xmlns:oils_persist='http://open-ils.org/spec/opensrf/IDL/persistence/v1'> 
- 
-	
-	<class oils_obj:fieldmapper='money::user_payment_summary' reporter:label='User Payment Summary' controller='open-ils.cstore' id='mups' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='usr' oils_persist:virtual='true'></field> 
-			<field name='forgive_payment' oils_persist:virtual='true'></field> 
-			<field name='work_payment' oils_persist:virtual='true'></field> 
-			<field name='credit_payment' oils_persist:virtual='true'></field> 
-			<field name='goods_payment' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='money::workstation_payment_summary' reporter:label='Workstation Payment Summary' controller='open-ils.cstore' id='mwps' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='workstation' oils_persist:virtual='true'></field> 
-			<field name='cash_payment' oils_persist:virtual='true'></field> 
-			<field name='check_payment' oils_persist:virtual='true'></field> 
-			<field name='credit_card_payment' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='workstation' reltype='has_a' class='aws' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='biblio::record_node' reporter:label='Record Node' controller='open-ils.cstore' id='brn' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='id' oils_persist:virtual='true'></field> 
-			<field name='children' oils_persist:virtual='true'></field> 
-			<field name='owner_doc' oils_persist:virtual='true'></field> 
-			<field name='intra_doc_id' oils_persist:virtual='true'></field> 
-			<field name='parent_node' oils_persist:virtual='true'></field> 
-			<field name='node_type' oils_persist:virtual='true'></field> 
-			<field name='namespace_uri' oils_persist:virtual='true'></field> 
-			<field name='name' oils_persist:virtual='true'></field> 
-			<field name='value' oils_persist:virtual='true'></field> 
-		</fields> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='metabib::virtual_record' reporter:label='Virtual Record' controller='open-ils.cstore' id='mvr' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='title' oils_persist:virtual='true'></field> 
-			<field name='author' oils_persist:virtual='true'></field> 
-			<field name='doc_id' oils_persist:virtual='true'></field> 
-			<field name='doc_type' oils_persist:virtual='true'></field> 
-			<field name='pubdate' oils_persist:virtual='true'></field> 
-			<field name='isbn' oils_persist:virtual='true'></field> 
-			<field name='publisher' oils_persist:virtual='true'></field> 
-			<field name='tcn' oils_persist:virtual='true'></field> 
-			<field name='subject' oils_persist:virtual='true'></field> 
-			<field name='types_of_resource' oils_persist:virtual='true'></field> 
-			<field name='call_numbers' oils_persist:virtual='true'></field> 
-			<field name='edition' oils_persist:virtual='true'></field> 
-			<field name='online_loc' oils_persist:virtual='true'></field> 
-			<field name='synopsis' oils_persist:virtual='true'></field> 
-			<field name='physical_description' oils_persist:virtual='true'></field> 
-			<field name='toc' oils_persist:virtual='true'></field> 
-			<field name='copy_count' oils_persist:virtual='true'></field> 
-			<field name='series' oils_persist:virtual='true'></field> 
-			<field name='serials' oils_persist:virtual='true'></field> 
-		</fields> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='ex' controller='open-ils.cstore' id='ex' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='err_msg' oils_persist:virtual='true'></field> 
-			<field name='type' oils_persist:virtual='true'></field> 
-		</fields> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='perm_ex' controller='open-ils.cstore' id='perm_ex' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='err_msg' oils_persist:virtual='true'></field> 
-			<field name='type' oils_persist:virtual='true'></field> 
-		</fields> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action::matrix_test_result' reporter:label='Matrix Test Result' controller='open-ils.cstore' id='amtr' oils_persist:virtual='true'> 
-		<fields oils_persist:primary='matchpoint'> 
-			<field reporter:label='Matchpoint ID' name='matchpoint' reporter:datatype='id'></field> 
-			<field reporter:label='Success' name='success' reporter:datatype='bool'></field> 
-			<field reporter:label='Failure Part' name='fail_part' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='matchpoint' reltype='has_a' class='ccmm' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
- 
-	
-	<class oils_obj:fieldmapper='vandelay::import_bib_trash_fields' reporter:label='Import/Overlay Fields for Removal' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.import_bib_trash_fields' id='vibtf'> 
-		<fields oils_persist:sequence='vandelay.import_bib_trash_fields_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Field ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Field' name='field' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owner' permission='CREATE_IMPORT_TRASH_FIELD'></create> 
-				<retrieve context_field='owner' permission='CREATE_IMPORT_TRASH_FIELD UPDATE_IMPORT_TRASH_FIELD DELETE_IMPORT_TRASH_FIELD'></retrieve> 
-				<update context_field='owner' permission='UPDATE_IMPORT_TRASH_FIELD'></update> 
-				<delete context_field='owner' permission='DELETE_IMPORT_TRASH_FIELD'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::import_item' reporter:label='Import Item' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.import_item' id='vii'> 
-		<fields oils_persist:sequence='vandelay.import_item_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Import Item ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Import Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Attribute Definition' name='definition' reporter:datatype='link'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='int'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='int'></field> 
-			<field reporter:label='Call Number' name='call_number' reporter:datatype='text'></field> 
-			<field reporter:label='Copy Number' name='copy_number' reporter:datatype='int'></field> 
-			<field reporter:label='Status' name='status' reporter:datatype='int'></field> 
-			<field reporter:label='Shelving Location' name='location' reporter:datatype='int'></field> 
-			<field reporter:label='Circulate' name='circulate' reporter:datatype='bool'></field> 
-			<field reporter:label='Deposit' name='deposit' reporter:datatype='bool'></field> 
-			<field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='money'></field> 
-			<field reporter:label='Reference' name='ref' reporter:datatype='bool'></field> 
-			<field reporter:label='Holdable' name='holdable' reporter:datatype='bool'></field> 
-			<field reporter:label='Price' name='price' reporter:datatype='money'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='text'></field> 
-			<field reporter:label='Circulate As MARC Type' name='circ_as_type' reporter:datatype='text'></field> 
-			<field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field> 
-			<field reporter:label='Public Note' name='pub_note' reporter:datatype='text'></field> 
-			<field reporter:label='Private Note' name='priv_note' reporter:datatype='text'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='vqbr' key='id' map=''></link> 
-			<link field='definition' reltype='has_a' class='viiad' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create permission='CREATE_IMPORT_ITEM'> 
-                    <context field='owner' link='definition'></context> 
-				</create> 
-				<retrieve permission='CREATE_IMPORT_ITEM UPDATE_IMPORT_ITEM DELETE_IMPORT_ITEM'> 
-                    <context field='owner' link='definition'></context> 
-				</retrieve> 
-				<update permission='UPDATE_IMPORT_ITEM'> 
-                    <context field='owner' link='definition'></context> 
-				</update> 
-				<delete permission='DELETE_IMPORT_ITEM'> 
-                    <context field='owner' link='definition'></context> 
-				</delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::import_item_attr_definition' reporter:label='Import Item Attribute Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.import_item_attr_definition' id='viiad'> 
-		<fields oils_persist:sequence='vandelay.import_item_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Tag' name='tag' reporter:datatype='text'></field> 
-			<field reporter:label='Keep' name='keep' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='text'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='text'></field> 
-			<field reporter:label='Call Number' name='call_number' reporter:datatype='text'></field> 
-			<field reporter:label='Status' name='status' reporter:datatype='text'></field> 
-			<field reporter:label='Shelving Location' name='location' reporter:datatype='text'></field> 
-			<field reporter:label='Circulate' name='circulate' reporter:datatype='text'></field> 
-			<field reporter:label='Deposit' name='deposit' reporter:datatype='text'></field> 
-			<field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='text'></field> 
-			<field reporter:label='Reference' name='ref' reporter:datatype='text'></field> 
-			<field reporter:label='Holdable' name='holdable' reporter:datatype='text'></field> 
-			<field reporter:label='Price' name='price' reporter:datatype='text'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='text'></field> 
-			<field reporter:label='Circulate As MARC Type' name='circ_as_type' reporter:datatype='text'></field> 
-			<field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field> 
-			<field reporter:label='Public Note' name='pub_note' reporter:datatype='text'></field> 
-			<field reporter:label='Private Note' name='priv_note' reporter:datatype='text'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='text'></field> 
-			<field reporter:label='Copy Number' name='copy_number' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owner' permission='CREATE_IMPORT_ITEM_ATTR_DEF'></create> 
-				<retrieve context_field='owner' permission='CREATE_IMPORT_ITEM_ATTR_DEF UPDATE_IMPORT_ITEM_ATTR_DEF DELETE_IMPORT_ITEM_ATTR_DEF'></retrieve> 
-				<update context_field='owner' permission='UPDATE_IMPORT_ITEM_ATTR_DEF'></update> 
-				<delete context_field='owner' permission='DELETE_IMPORT_ITEM_ATTR_DEF'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::bib_queue' reporter:label='Import/Overlay Bib Queue' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.bib_queue' id='vbq'> 
-		<fields oils_persist:sequence='vandelay.queue_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Queue ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Complete' name='complete' reporter:datatype='bool'></field> 
-			<field reporter:label='Type' name='queue_type' reporter:datatype='text'></field> 
-			<field reporter:label='Item Import Attribute Definition' name='item_attr_def' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='item_attr_def' reltype='has_a' class='viiad' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_BIB_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_BIB_IMPORT_QUEUE UPDATE_BIB_IMPORT_QUEUE DELETE_BIB_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_BIB_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_BIB_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::queued_bib_record' reporter:label='Queued Bib Record' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.queued_bib_record' id='vqbr'> 
-		<fields oils_persist:sequence='vandelay.queued_record_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Create Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Import Time' name='import_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='MARC' name='marc' reporter:datatype='text'></field> 
-			<field reporter:label='Queue' name='queue' reporter:datatype='link'></field> 
-			<field reporter:label='Bib Source' name='bib_source' reporter:datatype='link'></field> 
-			<field reporter:label='Final Target Record' name='imported_as' reporter:datatype='link'></field> 
-			<field reporter:label='Purpose' name='purpose' reporter:datatype='text'></field> 
-			<field reporter:label='Attributes' name='attributes' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Matches' name='matches' reporter:datatype='text' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='queue' reltype='has_a' class='vbq' key='id' map=''></link> 
-			<link field='bib_source' reltype='has_a' class='cbs' key='id' map=''></link> 
-			<link field='imported_as' reltype='has_a' class='bre' key='id' map=''></link> 
-            <link field='attributes' reltype='has_many' class='vqbra' key='record' map=''></link> 
-            <link field='matches' reltype='has_many' class='vbm' key='queued_record' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_BIB_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_BIB_IMPORT_QUEUE UPDATE_BIB_IMPORT_QUEUE DELETE_BIB_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_BIB_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_BIB_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::bib_attr_definition' reporter:label='Queued Bib Record Attribute Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.bib_attr_definition' id='vqbrad'> 
-		<fields oils_persist:sequence='vandelay.bib_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='XPath' name='xpath' reporter:datatype='text'></field> 
-			<field reporter:label='Remove RegExp' name='remove' reporter:datatype='text'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_BIB_IMPORT_FIELD_DEF'></create> 
-                <retrieve></retrieve> 
-                
-				<update global_required='true' permission='UPDATE_BIB_IMPORT_IMPORT_FIELD_DEF'></update> 
-				<delete global_required='true' permission='DELETE_BIB_IMPORT_IMPORT_FIELD_DEF'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::queued_bib_record_attr' reporter:label='Queued Bib Record Attribute' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.queued_bib_record_attr' id='vqbra'> 
-		<fields oils_persist:sequence='vandelay.queued_bib_record_attr_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Attribute ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Field' name='field' reporter:datatype='link'></field> 
-			<field reporter:label='Value' name='attr_value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='vqbr' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='vqbrad' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_BIB_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_BIB_IMPORT_QUEUE UPDATE_BIB_IMPORT_QUEUE DELETE_BIB_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_BIB_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_BIB_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::bib_match' reporter:label='Queued Bib Record Match' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.bib_match' id='vbm'> 
-		<fields oils_persist:sequence='vandelay.bib_match_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Match ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Queued Record' name='queued_record' reporter:datatype='link'></field> 
-			<field reporter:label='Matched Attribute' name='matched_attr' reporter:datatype='link'></field> 
-			<field reporter:label='Evergreen Record' name='eg_record' reporter:datatype='link'></field> 
-			<field reporter:label='Field Type' name='field_type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='queued_record' reltype='has_a' class='vqbr' key='id' map=''></link> 
-			<link field='eg_record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='matched_attr' reltype='has_a' class='vqbra' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_BIB_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_BIB_IMPORT_QUEUE UPDATE_BIB_IMPORT_QUEUE DELETE_BIB_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_BIB_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_BIB_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::authority_queue' reporter:label='Import/Overlay Authority Queue' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.authority_queue' id='vaq'> 
-		<fields oils_persist:sequence='vandelay.queue_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Queue ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Complete' name='complete' reporter:datatype='bool'></field> 
-			<field reporter:label='Type' name='queue_type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE UPDATE_AUTHORITY_IMPORT_QUEUE DELETE_AUTHORITY_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_AUTHORITY_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_AUTHORITY_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::queued_authority_record' reporter:label='Queued Authority Record' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.queued_authority_record' id='vqar'> 
-		<fields oils_persist:sequence='vandelay.queued_record_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Create Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Import Time' name='import_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='MARC' name='marc' reporter:datatype='text'></field> 
-			<field reporter:label='Queue' name='queue' reporter:datatype='link'></field> 
-			<field reporter:label='Final Target Record' name='imported_as' reporter:datatype='link'></field> 
-			<field reporter:label='Purpose' name='purpose' reporter:datatype='text'></field> 
-			<field reporter:label='Attributes' name='attributes' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Matches' name='matches' reporter:datatype='text' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='queue' reltype='has_a' class='vaq' key='id' map=''></link> 
-			<link field='imported_as' reltype='has_a' class='are' key='id' map=''></link> 
-            <link field='attributes' reltype='has_many' class='vqara' key='record' map=''></link> 
-            <link field='matches' reltype='has_many' class='vam' key='queued_record' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE UPDATE_AUTHORITY_IMPORT_QUEUE DELETE_AUTHORITY_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_AUTHORITY_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_AUTHORITY_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::authority_attr_definition' reporter:label='Queued Authority Record Attribute Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.authority_attr_definition' id='vqarad'> 
-		<fields oils_persist:sequence='vandelay.authority_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='XPath' name='xpath' reporter:datatype='text'></field> 
-			<field reporter:label='Remove RegExp' name='remove' reporter:datatype='text'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF'></create> 
-                <retrieve></retrieve> 
-                
-				<update global_required='true' permission='UPDATE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF'></update> 
-				<delete global_required='true' permission='DELETE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::queued_authority_record_attr' reporter:label='Queued Authority Record Attribute' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.queued_authority_record_attr' id='vqara'> 
-		<fields oils_persist:sequence='vandelay.queued_authority_record_attr_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Attribute ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Field' name='field' reporter:datatype='link'></field> 
-			<field reporter:label='Value' name='attr_value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='vaqr' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='vqarad' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE UPDATE_AUTHORITY_IMPORT_QUEUE DELETE_AUTHORITY_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_AUTHORITY_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_AUTHORITY_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='vandelay::authority_match' reporter:label='Queued Authority Record Match' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='vandelay.authority_match' id='vam'> 
-		<fields oils_persist:sequence='vandelay.authority_match_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Match ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Queued Record' name='queued_record' reporter:datatype='link'></field> 
-			<field reporter:label='Matched Attribute' name='matched_attr' reporter:datatype='link'></field> 
-			<field reporter:label='Evergreen Record' name='eg_record' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='queued_record' reltype='has_a' class='vqbr' key='id' map=''></link> 
-			<link field='eg_record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='matched_attr' reltype='has_a' class='vqbra' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE'></create> 
-				<retrieve global_required='true' permission='CREATE_AUTHORITY_IMPORT_QUEUE UPDATE_AUTHORITY_IMPORT_QUEUE DELETE_AUTHORITY_IMPORT_QUEUE'></retrieve> 
-				<update global_required='true' permission='UPDATE_AUTHORITY_IMPORT_QUEUE'></update> 
-				<delete global_required='true' permission='DELETE_AUTHORITY_IMPORT_QUEUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
- 
-	<class oils_obj:fieldmapper='actor::usr_org_unit_opt_in' reporter:label='User Sharing Opt-in' controller='open-ils.cstore' oils_persist:tablename='actor.usr_org_unit_opt_in' id='auoi'> 
-		<fields oils_persist:sequence='actor.usr_org_unit_opt_in_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Opt-in ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Workstation' name='opt_in_ws' reporter:datatype='link'></field> 
-			<field reporter:label='Staff Member' name='staff' reporter:datatype='link'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Allowed Org Unit' name='org_unit' reporter:datatype='link'></field> 
-			<field reporter:label='Opt-in Date/Time' name='opt_in_ts' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='opt_in_ws' reltype='has_a' class='aws' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-    <class oils_obj:fieldmapper='config::z3950_source' reporter:label='Z39.50 Source' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.z3950_source' id='czs'> 
-        <fields oils_persist:primary='name'> 
-            <field reporter:label='Z39.50 Source' name='name' reporter:datatype='id'></field> 
-            <field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-            <field reporter:label='Host' name='host' reporter:datatype='text'></field> 
-            <field reporter:label='Port' name='port' reporter:datatype='int'></field> 
-            <field reporter:label='DB' name='db' reporter:datatype='text'></field> 
-            <field reporter:label='Record Format' name='record_format' reporter:datatype='text'></field> 
-            <field reporter:label='Transmission Format' name='transmission_format' reporter:datatype='text'></field> 
-            <field reporter:label='Auth' name='auth' reporter:datatype='bool'></field> 
-            <field reporter:label='Attrs' name='attrs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-        </fields> 
-        <links> 
-            <link field='attrs' reltype='has_many' class='cza' key='source' map=''></link> 
-        </links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_Z3950_SOURCE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_Z3950_SOURCE'></update> 
-                <delete global_required='true' permission='ADMIN_Z3950_SOURCE'></delete> 
-            </actions> 
-        </permacrud> 
-    </class> 
- 
-    <class oils_obj:fieldmapper='config::z3950_attr' reporter:label='Z39.50 Attribute' controller='open-ils.cstore' oils_persist:tablename='config.z3950_attr' id='cza'> 
-        <fields oils_persist:sequence='config.z3950_attr_id_seq' oils_persist:primary='id'> 
-            <field reporter:label='Z39.50 Attribute ID' name='id' reporter:datatype='id'></field> 
-            <field reporter:label='Z39.50 Source' name='source' reporter:datatype='link'></field> 
-            <field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-            <field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-            <field reporter:label='Code' name='code' reporter:datatype='int'></field> 
-            <field reporter:label='Format' name='format' reporter:datatype='int'></field> 
-            <field reporter:label='Truncation' name='truncation' reporter:datatype='int'></field> 
-        </fields> 
-        <links> 
-            <link field='source' reltype='has_a' class='czs' key='name' map=''></link> 
-        </links> 
-    </class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::event_output' reporter:label='Event Output' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.event_output' id='ateo'> 
-		<fields oils_persist:sequence='action_trigger.event_output_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Output ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Create Date/Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Data' name='data' reporter:datatype='text'></field> 
-			<field reporter:label='Is Error' name='is_error' reporter:datatype='bool'></field> 
-			<field reporter:label='Events' name='events' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Events' name='error_events' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-            <link field='events' reltype='has_many' class='atev' key='template_output' map=''></link> 
-            <link field='error_events' reltype='has_many' class='atev' key='error_output' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<retrieve></retrieve> 
-				<delete global_required='true' permission='ADMIN_TRIGGER_TEMPLATE_OUTPUT DELETE_TRIGGER_TEMPLATE_OUTPUT'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::hook' reporter:label='Trigger Hook Point' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.hook' id='ath'> 
-		<fields oils_persist:primary='key'> 
-			<field reporter:label='Hook Key' name='key' reporter:datatype='text'></field> 
-			<field reporter:label='Core Type' name='core_type' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Passive' name='passive' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_TRIGGER_HOOK CREATE_TRIGGER_HOOK'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_TRIGGER_HOOK UPDATE_TRIGGER_HOOK'></update> 
-				<delete global_required='true' permission='ADMIN_TRIGGER_HOOK DELETE_TRIGGER_HOOK'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::collector' reporter:label='Trigger Environment Collector' controller='open-ils.cstore' oils_persist:tablename='action_trigger.collector' id='atcol'> 
-		<fields oils_persist:primary='module'> 
-			<field reporter:label='Module Name' name='module' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::validator' reporter:label='Trigger Condition Validator' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.validator' id='atval'> 
-		<fields oils_persist:primary='module'> 
-			<field reporter:label='Module Name' name='module' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_TRIGGER_VALIDATOR CREATE_TRIGGER_VALIDATOR'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_TRIGGER_VALIDATOR UPDATE_TRIGGER_VALIDATOR'></update> 
-				<delete global_required='true' permission='ADMIN_TRIGGER_VALIDATOR DELETE_TRIGGER_VALIDATOR'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::reactor' reporter:label='Trigger Event Reactor' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.reactor' id='atreact'> 
-		<fields oils_persist:primary='module'> 
-			<field reporter:label='Module Name' name='module' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_TRIGGER_REACTOR CREATE_TRIGGER_REACTOR'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_TRIGGER_REACTOR UPDATE_TRIGGER_REACTOR'></update> 
-				<delete global_required='true' permission='ADMIN_TRIGGER_REACTOR DELETE_TRIGGER_REACTOR'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::cleanup' reporter:label='Trigger Event Cleanup' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.cleanup' id='atclean'> 
-		<fields oils_persist:primary='module'> 
-			<field reporter:label='Module Name' name='module' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_TRIGGER_CLEANUP CREATE_TRIGGER_CLEANUP'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_TRIGGER_CLEANUP UPDATE_TRIGGER_CLEANUP'></update> 
-				<delete global_required='true' permission='ADMIN_TRIGGER_CLEANUP DELETE_TRIGGER_CLEANUP'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::environment' reporter:label='Trigger Event Environment Entry' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.environment' id='atenv'> 
-		<fields oils_persist:sequence='action_trigger.environment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Event Definition' name='event_def' reporter:datatype='link'></field> 
-			<field reporter:label='Field Path' name='path' reporter:datatype='text'></field> 
-			<field reporter:label='Collector' name='collector' reporter:datatype='link'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='event_def' reltype='has_a' class='atevdef' key='id' map=''></link> 
-			<link field='collector' reltype='has_a' class='atcol' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create permission='ADMIN_TRIGGER_EVENT_DEF CREATE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </create> 
-				<retrieve permission='ADMIN_TRIGGER_EVENT_DEF VIEW_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </retrieve> 
-				<update permission='ADMIN_TRIGGER_EVENT_DEF UPDATE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </update> 
-				<delete permission='ADMIN_TRIGGER_EVENT_DEF DELETE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::event_definition' reporter:label='Trigger Event Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.event_definition' id='atevdef'> 
-		<fields oils_persist:sequence='action_trigger.event_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Enabled' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Hook' name='hook' reporter:datatype='link'></field> 
-			<field reporter:label='Validator' name='validator' reporter:datatype='link'></field> 
-			<field reporter:label='Reactor' name='reactor' reporter:datatype='link'></field> 
-			<field reporter:label='Success Cleanup' name='cleanup_success' reporter:datatype='link'></field> 
-			<field reporter:label='Failure Cleanup' name='cleanup_failure' reporter:datatype='link'></field> 
-			<field reporter:label='Processing Delay' name='delay' reporter:datatype='interval'></field> 
-			<field reporter:label='Max Event Validity Delay' name='max_delay' reporter:datatype='interval'></field> 
-			<field reporter:label='Processing Delay Context Field' name='delay_field' reporter:datatype='text'></field> 
-			<field reporter:label='Processing Group Context Field' name='group_field' reporter:datatype='text'></field> 
-			<field reporter:label='Template' name='template' reporter:datatype='text'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Environmet Entries' name='env' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Parameters' name='params' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='hook' reltype='has_a' class='ath' key='key' map=''></link> 
-			<link field='validator' reltype='has_a' class='atval' key='module' map=''></link> 
-			<link field='reactor' reltype='has_a' class='atreact' key='module' map=''></link> 
-			<link field='cleanup_success' reltype='has_a' class='atclean' key='module' map=''></link> 
-			<link field='cleanup_failure' reltype='has_a' class='atclean' key='module' map=''></link> 
-			<link field='env' reltype='has_many' class='atenv' key='event_def' map=''></link> 
-			<link field='params' reltype='has_many' class='atevparam' key='event_def' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owner' permission='ADMIN_TRIGGER_EVENT_DEF CREATE_TRIGGER_EVENT_DEF'></create> 
-				<retrieve context_field='owner' permission='ADMIN_TRIGGER_EVENT_DEF VIEW_TRIGGER_EVENT_DEF'></retrieve> 
-				<update context_field='owner' permission='ADMIN_TRIGGER_EVENT_DEF UPDATE_TRIGGER_EVENT_DEF'></update> 
-				<delete context_field='owner' permission='ADMIN_TRIGGER_EVENT_DEF DELETE_TRIGGER_EVENT_DEF'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::event' reporter:label='Trigger Event Entry' controller='open-ils.cstore' oils_persist:tablename='action_trigger.event' id='atev'> 
-		<fields oils_persist:sequence='action_trigger.event_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Event ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Target ID' name='target' reporter:datatype='int'></field> 
-			<field reporter:label='Event Definition' name='event_def' reporter:datatype='link'></field> 
-			<field reporter:label='Add Time' name='add_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Run Time' name='run_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Start Time' name='start_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Update Time' name='update_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Complete Time' name='complete_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Template Output' name='template_output' reporter:datatype='link'></field> 
-			<field reporter:label='Error Output' name='error_output' reporter:datatype='text'></field> 
-			<field reporter:label='Update Process' name='update_process' reporter:datatype='int'></field> 
-		</fields> 
-		<links> 
-			<link field='event_def' reltype='has_a' class='atevdef' key='id' map=''></link> 
-			<link field='template_output' reltype='has_a' class='ateo' key='id' map=''></link> 
-			<link field='error_output' reltype='has_a' class='ateo' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action_trigger::event_param' reporter:label='Trigger Event Parameter' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action_trigger.event_params' id='atevparam'> 
-		<fields oils_persist:sequence='action_trigger.event_params_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Event ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Event Definition' name='event_def' reporter:datatype='link'></field> 
-			<field reporter:label='Parameter Name' name='param' reporter:datatype='text'></field> 
-			<field reporter:label='Parameter Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='event_def' reltype='has_a' class='atevdef' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create permission='ADMIN_TRIGGER_EVENT_DEF CREATE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </create> 
-				<retrieve permission='ADMIN_TRIGGER_EVENT_DEF VIEW_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </retrieve> 
-				<update permission='ADMIN_TRIGGER_EVENT_DEF UPDATE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </update> 
-				<delete permission='ADMIN_TRIGGER_EVENT_DEF DELETE_TRIGGER_EVENT_DEF'> 
-                    <context field='owner' link='event_def'></context> 
-                </delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='actor::workstation' reporter:label='Workstation' controller='open-ils.cstore' oils_persist:tablename='actor.workstation' id='aws'> 
-		<fields oils_persist:sequence='actor.workstation_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Workstation ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Workstation Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::circ_modifier' reporter:label='Circulation Modifier' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.circ_modifier' id='ccm'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='SIP2 Media Type' name='sip2_media_type' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Magnetic Media' name='magnetic_media' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_CIRC_MOD'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_CIRC_MOD'></update> 
-                <delete global_required='true' permission='ADMIN_CIRC_MOD'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='Copy Bucket Type' oils_persist:tablename='container.copy_bucket_type' oils_obj:fieldmapper='container::copy_bucket_type' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='ccpbt'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_COPY_BTYPE'></create> 
-                <retrieve global_required='true' permission='CREATE_COPY_BTYPE UPDATE_COPY_BTYPE DELETE_COPY_BTYPE'></retrieve> 
-                <update global_required='true' permission='UPDATE_COPY_BTYPE'></update> 
-                <delete global_required='true' permission='DELETE_COPY_BTYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='Call Number Bucket Type' oils_persist:tablename='container.call_number_bucket_type' oils_obj:fieldmapper='container::call_number_bucket_type' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='ccnbt'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_CN_BTYPE'></create> 
-                <retrieve global_required='true' permission='CREATE_CN_BTYPE UPDATE_CN_BTYPE DELETE_CN_BTYPE'></retrieve> 
-                <update global_required='true' permission='UPDATE_CN_BTYPE'></update> 
-                <delete global_required='true' permission='DELETE_CN_BTYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='Bibliographic Record Bucket Type' oils_persist:tablename='container.biblio_record_entry_bucket_type' oils_obj:fieldmapper='container::biblio_record_entry_bucket_type' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cbrebt'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_BIB_BTYPE'></create> 
-                <retrieve global_required='true' permission='CREATE_BIB_BTYPE UPDATE_BIB_BTYPE DELETE_BIB_BTYPE'></retrieve> 
-                <update global_required='true' permission='UPDATE_BIB_BTYPE'></update> 
-                <delete global_required='true' permission='DELETE_BIB_BTYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='User Bucket Type' oils_persist:tablename='container.user_bucket_type' oils_obj:fieldmapper='container::user_bucket_type' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cubt'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_USER_BTYPE'></create> 
-                <retrieve global_required='true' permission='CREATE_USER_BTYPE UPDATE_USER_BTYPE DELETE_USER_BTYPE'></retrieve> 
-                <update global_required='true' permission='UPDATE_USER_BTYPE'></update> 
-                <delete global_required='true' permission='DELETE_USER_BTYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='Videorecording Format' oils_persist:tablename='config.videorecording_format_map' oils_obj:fieldmapper='config::videorecording_format_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cvrfm'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Code' name='code' reporter:datatype='id' reporter:selector='value'></field> 
-			<field reporter:label='Format' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_MARC_CODE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_MARC_CODE'></update> 
-                <delete global_required='true' permission='ADMIN_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::hold_matrix_matchpoint' reporter:label='Hold Matrix Matchpoint' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.hold_matrix_matchpoint' id='chmm'> 
-		<fields oils_persist:sequence='config.hold_matrix_matchpoint_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Matchpoint ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Active?' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='User Home Library' name='user_home_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Request Library' name='request_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Pickup Library' name='pickup_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Owning Library' name='item_owning_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Item Circ Library' name='item_circ_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='User Permission Group' name='usr_grp' reporter:datatype='link'></field> 
-			<field reporter:label='Requestor Permission Group' name='requestor_grp' reporter:datatype='link'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='MARC Type' name='marc_type' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='MARC Form' name='marc_form' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Videorecording Format' name='marc_vr_format' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Reference?' name='ref_flag' reporter:datatype='bool'></field> 
-			<field reporter:label='Holdable?' name='holdable' reporter:datatype='bool'></field> 
-			<field reporter:label='Range is from Owning Lib?' name='distance_is_from_owner' reporter:datatype='bool'></field> 
-			<field reporter:label='Transit Range' name='transit_range' reporter:datatype='link'></field> 
-			<field reporter:label='Max Holds' name='max_holds' reporter:datatype='int'></field> 
-			<field reporter:label='Max includes Frozen' name='include_frozen_holds' reporter:datatype='bool'></field> 
-			<field reporter:label='Copy Age Hold Protection Rule' name='age_hold_protect_rule' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='user_home_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='request_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='pickup_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='item_owning_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='item_circ_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='usr_grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='requestor_grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='circ_modifier' reltype='has_a' class='ccm' key='code' map=''></link> 
-			<link field='marc_type' reltype='has_a' class='citm' key='code' map=''></link> 
-			<link field='marc_form' reltype='has_a' class='cifm' key='code' map=''></link> 
-			<link field='marc_vr_format' reltype='has_a' class='cvrfm' key='code' map=''></link> 
-			<link field='age_hold_protect_rule' reltype='has_a' class='crahp' key='id' map=''></link> 
-            <link field='transit_range' reltype='has_a' class='aout' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_HOLD_MATRIX_MATCHPOINT'></create> 
-                <retrieve global_required='true' permission='ADMIN_HOLD_MATRIX_MATCHPOINT VIEW_HOLD_MATRIX_MATCHPOINT'></retrieve> 
-                <update global_required='true' permission='ADMIN_HOLD_MATRIX_MATCHPOINT'></update> 
-                <delete global_required='true' permission='ADMIN_HOLD_MATRIX_MATCHPOINT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::circ_matrix_matchpoint' reporter:label='Circulation Matrix Matchpoint' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.circ_matrix_matchpoint' id='ccmm'> 
-		<fields oils_persist:sequence='config.circ_matrix_matchpoint_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Matchpoint ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Active?' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Org Unit' name='org_unit' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Permission Group' name='grp' reporter:datatype='link'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='MARC Type' name='marc_type' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='MARC Form' name='marc_form' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Videorecording Format' name='marc_vr_format' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Reference?' name='ref_flag' reporter:datatype='bool'></field> 
-			<field reporter:label='User Age: Lower Bound' name='usr_age_lower_bound' reporter:datatype='text'></field> 
-			<field reporter:label='User Age: Upper Bound' name='usr_age_upper_bound' reporter:datatype='text'></field> 
-			<field reporter:label='Circulate?' name='circulate' reporter:datatype='bool'></field> 
-			<field reporter:label='Duration Rule' name='duration_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Recurring Fine Rule' name='recurring_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Script Test' name='script_test' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='circ_modifier' reltype='has_a' class='ccm' key='code' map=''></link> 
-			<link field='marc_type' reltype='has_a' class='citm' key='code' map=''></link> 
-			<link field='marc_form' reltype='has_a' class='cifm' key='code' map=''></link> 
-			<link field='marc_vr_format' reltype='has_a' class='cvrfm' key='code' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='id' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='id' map=''></link> 
-			<link field='recurring_fine_rule' reltype='has_a' class='crrf' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='org_unit' permission='ADMIN_CIRC_MATRIX_MATCHPOINT'></create> 
-                <retrieve context_field='org_unit' permission='ADMIN_CIRC_MATRIX_MATCHPOINT VIEW_CIRC_MATRIX_MATCHPOINT'></retrieve> 
-                <update context_field='org_unit' permission='ADMIN_CIRC_MATRIX_MATCHPOINT'></update> 
-                <delete context_field='org_unit' permission='ADMIN_CIRC_MATRIX_MATCHPOINT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::circ_matrix_circ_mod_test' reporter:label='Circulation Matrix Circulation Modifier Subtest' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.circ_matrix_circ_mod_test' id='ccmcmt'> 
-		<fields oils_persist:sequence='config.circ_matrix_circ_mod_test_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Test ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Matchpoint ID' name='matchpoint' reporter:datatype='link'></field> 
-			<field reporter:label='Items Out' name='items_out' reporter:datatype='int'></field> 
-		</fields> 
-		<links> 
-			<link field='matchpoint' reltype='has_a' class='ccmm' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context field='org_unit' link='matchpoint'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context field='org_unit' link='matchpoint'></context> 
-                </update> 
-                <delete permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context field='org_unit' link='matchpoint'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::circ_matrix_circ_mod_test_map' reporter:label='Circulation Matrix Circulation Modifier Subtest Circulation Modifier Set' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.circ_matrix_circ_mod_test_map' id='ccmcmtm'> 
-		<fields oils_persist:sequence='config.circ_matrix_circ_mod_test_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Circulation Modifier Subtest ID' name='circ_mod_test' reporter:datatype='link'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_mod' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='circ_mod_test' reltype='has_a' class='ccmcmt' key='id' map=''></link> 
-			<link field='circ_mod' reltype='has_a' class='ccm' key='code' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context jump='matchpoint' field='org_unit' link='circ_mod_test'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context jump='matchpoint' field='org_unit' link='circ_mod_test'></context> 
-                </update> 
-                <delete permission='ADMIN_CIRC_MATRIX_MATCHPOINT'> 
-                    <context jump='matchpoint' field='org_unit' link='circ_mod_test'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::identification_type' reporter:label='Identification Type' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.identification_type' id='cit'> 
-		<fields oils_persist:sequence='config.identification_type_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Identification ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Identification Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_IDENT_TYPE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_IDENT_TYPE'></update> 
-                <delete global_required='true' permission='ADMIN_IDENT_TYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='action::survey_question' reporter:label='User Survey Question' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action.survey_question' id='asvq'> 
-		<fields oils_persist:sequence='action.survey_question_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Answers' name='answers' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Responses' name='responses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Question ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Question' name='question' reporter:datatype='text'></field> 
-			<field reporter:label='Survey' name='survey' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='survey' reltype='has_a' class='asv' key='id' map=''></link> 
-			<link field='responses' reltype='has_many' class='asvr' key='question' map=''></link> 
-			<link field='answers' reltype='has_many' class='asva' key='question' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </update> 
-                <delete permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Billable Transaction Summary' oils_persist:tablename='money.materialized_billable_xact_summary' oils_obj:fieldmapper='money::billable_transaction_summary' controller='open-ils.cstore' id='mbts' oils_persist:readonly='true'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field reporter:label='Balance Owed' name='balance_owed' reporter:datatype='money'></field> 
-			<field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Last Billing Note' name='last_billing_note' reporter:datatype='text'></field> 
-			<field reporter:label='Last Billing Timestamp' name='last_billing_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Billing Type' name='last_billing_type' reporter:datatype='text'></field> 
-			<field reporter:label='Last Payment Note' name='last_payment_note' reporter:datatype='text'></field> 
-			<field reporter:label='Last Payment Timestamp' name='last_payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Payment Type' name='last_payment_type' reporter:datatype='text'></field> 
-			<field reporter:label='Total Owed' name='total_owed' reporter:datatype='money'></field> 
-			<field reporter:label='Total Paid' name='total_paid' reporter:datatype='money'></field> 
-			<field reporter:label='Billed User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Start Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Type' name='xact_type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::usr_note' reporter:label='User Note' controller='open-ils.cstore' oils_persist:tablename='actor.usr_note' id='aun'> 
-		<fields oils_persist:sequence='actor.usr_note_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Creating Staff' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Note ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Is OPAC Visible?' name='pub' reporter:datatype='bool'></field> 
-			<field reporter:label='Note Title' name='title' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Note Content' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::usr_password_reset' reporter:label='User password reset requests' controller='open-ils.cstore' oils_persist:tablename='actor.usr_password_reset' id='aupr'> 
-		<fields oils_persist:sequence='actor.usr_password_reset_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Request ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='UUID' name='uuid' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Request Time' name='request_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Was Reset?' name='has_been_reset' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id'></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::user_setting' reporter:label='User Setting' controller='open-ils.cstore' oils_persist:tablename='actor.usr_setting' id='aus'> 
-		<fields oils_persist:sequence='actor.usr_setting_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Setting ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::author_field_entry' reporter:label='Author Field Entry' controller='open-ils.cstore' oils_persist:tablename='metabib.author_field_entry' id='mafe'> 
-		<fields oils_persist:sequence='metabib.author_field_entry_id_seq' oils_persist:primary='id'> 
-			<field name='field' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='In House Use' oils_persist:tablename='action.in_house_use' reporter:core='true' oils_obj:fieldmapper='action::in_house_use' controller='open-ils.cstore' id='aihu'> 
-		<fields oils_persist:sequence='action.in_house_use_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Use ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Item' name='item' reporter:datatype='int'></field> 
-			<field reporter:label='Using Library' name='org_unit' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Recording Staff' name='staff' reporter:datatype='link'></field> 
-			<field reporter:label='Use Date/Time' name='use_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='item' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Non-catalogued In House Use' oils_persist:tablename='action.non_cat_in_house_use' reporter:core='true' oils_obj:fieldmapper='action::non_cat_in_house_use' controller='open-ils.cstore' id='ancihu'> 
-		<fields oils_persist:sequence='action.non_cat_in_house_use_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Use ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Item Type' name='item_type' reporter:datatype='link'></field> 
-			<field reporter:label='Using Library' name='org_unit' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Recording Staff' name='staff' reporter:datatype='link'></field> 
-			<field reporter:label='Use Date/Time' name='use_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='item_type' reltype='has_a' class='cnct' key='id' map=''></link> 
-			<link field='staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Copy Transit' oils_persist:tablename='action.transit_copy' reporter:core='true' oils_obj:fieldmapper='action::transit_copy' controller='open-ils.cstore open-ils.pcrud' id='atc'> 
-		<fields oils_persist:sequence='action.transit_copy_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Pretransit Copy Status' name='copy_status' reporter:datatype='bool'></field> 
-			<field reporter:label='Destination' name='dest' reporter:datatype='link'></field> 
-			<field reporter:label='Receive Date/Time' name='dest_recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Is Persistent? (unused)' name='persistant_transfer' reporter:datatype='bool'></field> 
-			<field reporter:label='Previous Hop (unused)' name='prev_hop' reporter:datatype='link'></field> 
-			<field reporter:label='Source' name='source' reporter:datatype='link'></field> 
-			<field reporter:label='Send Date/Time' name='source_send_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transited Copy' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Hold Transit' name='hold_transit_copy' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='hold_transit_copy' reltype='might_have' class='ahtc' key='id' map=''></link> 
-			<link field='source' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_status' reltype='has_a' class='ccs' key='id' map=''></link> 
-			<link field='dest' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='TRANSIT_COPY'> 
-                    <context field='circ_lib' link='target_copy'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update context_field='dest source' permission='UPDATE_TRANSIT'></update> 
-                <delete context_field='dest source' permission='DELETE_TRANSIT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='action::survey_response' reporter:label='Survey Response' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action.survey_response' id='asvr'> 
-		<fields oils_persist:sequence='action.survey_response_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Answer' name='answer' reporter:datatype='link'></field> 
-			<field reporter:label='Answer Date/Time' name='answer_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Effective Answer Date/Time' name='effective_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Answer ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Question' name='question' reporter:datatype='link'></field> 
-			<field reporter:label='Response Group ID' name='response_group_id' reporter:datatype='int'></field> 
-			<field reporter:label='Survey' name='survey' reporter:datatype='link'></field> 
-			<field reporter:label='Responding User' name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='question' reltype='has_a' class='asvq' key='id' map=''></link> 
-			<link field='survey' reltype='has_a' class='asv' key='id' map=''></link> 
-			<link field='answer' reltype='has_a' class='asva' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </update> 
-                <delete permission='ADMIN_SURVEY'> 
-                    <context field='owner' link='survey'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='container::copy_bucket_item' reporter:label='Copy Bucket Item' controller='open-ils.cstore' oils_persist:tablename='container.copy_bucket_item' id='ccbi'> 
-		<fields oils_persist:sequence='container.copy_bucket_item_id_seq' oils_persist:primary='id'> 
-			<field name='bucket'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='target_copy' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='pos' reporter:datatype='int'></field> 
-			<field name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='bucket' reltype='has_a' class='ccb' key='id' map=''></link> 
-            <link field='notes' reltype='has_many' class='ccbin' key='item' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::copy_bucket_item_note' reporter:label='Copy Bucket Item Note' controller='open-ils.cstore' oils_persist:tablename='container.copy_bucket_item_note' id='ccbin'> 
-		<fields oils_persist:sequence='container.copy_bucket_item_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='item' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='item' reltype='has_a' class='ccbi' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='authority::record_entry' reporter:label='Authority Record Entry' controller='open-ils.cstore' oils_persist:tablename='authority.record_entry' id='are'> 
-		<fields oils_persist:sequence='authority.record_entry_id_seq' oils_persist:primary='id'> 
-			<field name='active' reporter:datatype='bool'></field> 
-			<field name='arn_source'></field> 
-			<field name='arn_value'></field> 
-			<field name='create_date' reporter:datatype='timestamp'></field> 
-			<field name='creator'></field> 
-			<field name='deleted' reporter:datatype='bool'></field> 
-			<field name='edit_date' reporter:datatype='timestamp'></field> 
-			<field name='editor'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='last_xact_id'></field> 
-			<field name='marc'></field> 
-			<field name='source'></field> 
-			<field name='fixed_fields' oils_persist:virtual='true'></field> 
-			<field name='notes' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='notes' reltype='has_many' class='arn' key='record' map=''></link> 
-			<link field='fixed_fields' reltype='might_have' class='ard' key='record' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='authority::record_descriptor' reporter:label='Authority Record Descriptor' controller='open-ils.cstore' oils_persist:tablename='authority.rec_descriptor' id='ard'> 
-		<fields oils_persist:sequence='authority.rec_descriptor_id_seq' oils_persist:primary='id'> 
-			<field name='char_encoding'></field> 
-			<field name='id'></field> 
-			<field name='record'></field> 
-			<field name='record_status'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='are' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Language Map' oils_persist:tablename='config.language_map' oils_obj:fieldmapper='config::language_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='clm'> 
-		<fields oils_persist:sequence='' oils_persist:primary='code'> 
-			<field reporter:label='Language Code' name='code' reporter:datatype='text' reporter:selector='value'></field> 
-			<field reporter:label='Language' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_MARC_CODE'></create> 
-                <retrieve global_required='true' permission='CREATE_MARC_CODE UPDATE_MARC_CODE DELETE_MARC_CODE'></retrieve> 
-                <update global_required='true' permission='UPDATE_MARC_CODE'></update> 
-                <delete global_required='true' permission='DELETE_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::credit_card_payment' reporter:label='Credit Card Payment' controller='open-ils.cstore' oils_persist:tablename='money.credit_card_payment' id='mccp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field name='accepting_usr'></field> 
-			<field name='amount' reporter:datatype='money'></field> 
-			<field name='amount_collected' reporter:datatype='money'></field> 
-			<field name='approval_code' reporter:datatype='text'></field> 
-			<field name='cash_drawer' reporter:datatype='link'></field> 
-			<field name='cc_number' reporter:datatype='text'></field> 
-			<field name='cc_type' reporter:datatype='text'></field> 
-			<field name='expire_month' reporter:datatype='int'></field> 
-			<field name='expire_year' reporter:datatype='int'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-			<field name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field name='xact' reporter:datatype='link'></field> 
-			<field name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='cash_drawer' reltype='has_a' class='aws' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::xml_transform' reporter:label='XML/XSLT Transform Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.xml_transform' id='cxt'> 
-		<fields oils_persist:primary='name'> 
-			<field name='field_class'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Namespace URI' name='namespace_uri' reporter:datatype='text'></field> 
-			<field reporter:label='Namespace Prefix' name='prefix' reporter:datatype='text'></field> 
-			<field reporter:label='XSLT' name='xslt' reporter:datatype='text'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_XML_TRANSFORM'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_XML_TRANSFORM'></update> 
-                <delete global_required='true' permission='DELETE_XML_TRANSFORM'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='config::metabib_field' reporter:label='Metabib Field' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.metabib_field' id='cmf'> 
-		<fields oils_persist:sequence='config.metabib_field_id_seq' oils_persist:primary='id'> 
-			<field name='field_class'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='xpath' reporter:datatype='text'></field> 
-			<field name='weight' reporter:datatype='int'></field> 
-			<field name='format' reporter:datatype='link'></field> 
-			<field name='search_field' reporter:datatype='bool'></field> 
-			<field name='facet_field' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_METABIB_FIELD'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_METABIB_FIELD'></update> 
-                <delete global_required='true' permission='DELETE_METABIB_FIELD'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Audience Map' oils_persist:tablename='config.audience_map' oils_obj:fieldmapper='config::audience_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cam'> 
-		<fields oils_persist:sequence='' oils_persist:primary='code'> 
-			<field reporter:label='Audience Code' name='code' reporter:datatype='text' reporter:selector='value'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Audience' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_MARC_CODE'></create> 
-                <retrieve global_required='true' permission='CREATE_MARC_CODE UPDATE_MARC_CODE DELETE_MARC_CODE'></retrieve> 
-                <update global_required='true' permission='UPDATE_MARC_CODE'></update> 
-                <delete global_required='true' permission='DELETE_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Item Form Map' oils_persist:tablename='config.item_form_map' oils_obj:fieldmapper='config::item_form_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cifm'> 
-		<fields oils_persist:sequence='' oils_persist:primary='code'> 
-			<field reporter:label='Item Form Code' name='code' reporter:datatype='text' reporter:selector='value'></field> 
-			<field reporter:label='Item Form' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_MARC_CODE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_MARC_CODE'></update> 
-                <delete global_required='true' permission='ADMIN_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::call_number' reporter:label='Call Number/Volume' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='asset.call_number' id='acn'> 
-		<fields oils_persist:sequence='asset.call_number_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Copies' name='copies' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Create Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Creating User' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field> 
-			<field reporter:label='Last Edit Date/Time' name='edit_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Editing User' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Call Number/Volume ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Call Number Label' name='label' reporter:datatype='text'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Bib Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='URI Maps' name='uri_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='URIs' name='uris' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='notes' reltype='has_many' class='acnn' key='call_number' map=''></link> 
-			<link field='copies' reltype='has_many' class='acp' key='call_number' map=''></link> 
-			<link field='uris' reltype='has_many' class='auricnm' key='call_number' map='uri'></link> 
-			<link field='uri_maps' reltype='has_many' class='auricnm' key='call_number' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owning_lib' permission='CREATE_VOLUME'></create> 
-                <retrieve></retrieve> 
-                <update context_field='owning_lib' permission='UPDATE_VOLUME'></update> 
-                <delete context_field='owning_lib' permission='DELETE_VOLUME'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::uri' reporter:label='Electronic Access URI' controller='open-ils.cstore' oils_persist:tablename='asset.uri' id='auri'> 
-		<fields oils_persist:sequence='asset.uri_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='URI ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='URI' name='href' reporter:datatype='text'></field> 
-			<field reporter:label='Label' name='label' reporter:datatype='text'></field> 
-			<field reporter:label='Use Information' name='use_restriction' reporter:datatype='text'></field> 
-			<field reporter:label='Active' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Call Number Maps' name='call_number_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Call Numbers' name='call_numbers' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='call_numbers' reltype='has_many' class='auricnm' key='uri' map='call_number'></link> 
-			<link field='call_number_maps' reltype='has_many' class='auricnm' key='uri' map=''></link> 
-        </links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::uri_call_number_map' reporter:label='Electronic Access URI to Call Number Map' controller='open-ils.cstore' oils_persist:tablename='asset.uri_call_number_map' id='auricnm'> 
-		<fields oils_persist:sequence='asset.uri_call_number_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='URI' name='uri' reporter:datatype='int'></field> 
-			<field reporter:label='Call Number' name='call_number' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='uri' reltype='has_a' class='auri' key='id' map=''></link> 
-			<link field='call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::standing' reporter:label='Standing Penalty' controller='open-ils.cstore' oils_persist:tablename='config.standing' id='cst'> 
-		<fields oils_persist:sequence='config.standing_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='value' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::open_user_summary' reporter:label='Open User Summary' controller='open-ils.cstore' oils_persist:tablename='money.open_usr_summary' id='mous'> 
-		<fields oils_persist:sequence='' oils_persist:primary='usr'> 
-			<field name='balance_owed' reporter:datatype='money'></field> 
-			<field name='total_owed' reporter:datatype='money'></field> 
-			<field name='total_paid' reporter:datatype='money'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::collections_tracker' reporter:label='Collections Tracker' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='money.collections_tracker' id='mct'> 
-		<fields oils_persist:sequence='money.collections_tracker_id_seq' oils_persist:primary='id'> 
-			<field name='collector'></field> 
-			<field name='enter_time' reporter:datatype='timestamp'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='location' reporter:datatype='link'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='collector' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='location' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='location' permission='money.collections_tracker.create'></create> 
-                <retrieve context_field='location' permission='money.collections_tracker.create'></retrieve> 
-                <delete context_field='location' permission='money.collections_tracker.create'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Bibliographic Record' oils_persist:tablename='biblio.record_entry' reporter:core='true' oils_obj:fieldmapper='biblio::record_entry' controller='open-ils.cstore open-ils.pcrud' id='bre'> 
-		<fields oils_persist:sequence='biblio.record_entry_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Call Numbers' name='call_numbers' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Fixed Field Entry' name='fixed_fields' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Is Active?' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Record Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Record Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Is Deleted?' name='deleted' reporter:datatype='bool'></field> 
-			<field reporter:label='Last Edit Data/Time' name='edit_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Editing User' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Fingerprint' name='fingerprint' reporter:datatype='text'></field> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Last Transaction ID' name='last_xact_id' reporter:datatype='text'></field> 
-			<field reporter:label='MARC21Slim' name='marc' reporter:datatype='text'></field> 
-			<field reporter:label='Overall Quality' name='quality' reporter:datatype='int'></field> 
-			<field reporter:label='Record Source' name='source' reporter:datatype='link'></field> 
-			<field reporter:label='TCN Source' name='tcn_source' reporter:datatype='text'></field> 
-			<field reporter:label='TCN Value' name='tcn_value' reporter:datatype='text'></field> 
-			<field reporter:label='Metarecord' name='metarecord' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Language Code' name='language' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Non-MARC Record Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Indexed Keyword Field Entries' name='keyword_field_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Indexed Subject Field Entries' name='subject_field_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Indexed Title Field Entries' name='title_field_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Indexed Author Field Entries' name='author_field_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Indexed Series Field Entries' name='series_field_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Flattened MARC Fields ' name='full_record_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Simple Record Extracts ' name='simple_record' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='simple_record' reltype='might_have' class='rmsr' key='id' map=''></link> 
-			<link field='metarecord' reltype='might_have' class='mmrsm' key='source' map='metarecord'></link> 
-			<link field='call_numbers' reltype='has_many' class='acn' key='record' map=''></link> 
-			<link field='keyword_field_entries' reltype='has_many' class='mkfe' key='source' map=''></link> 
-			<link field='fixed_fields' reltype='might_have' class='mrd' key='record' map=''></link> 
-			<link field='language' reltype='might_have' class='mrd' key='record' map='item_lang'></link> 
-			<link field='subject_field_entries' reltype='has_many' class='msfe' key='source' map=''></link> 
-			<link field='title_field_entries' reltype='has_many' class='mtfe' key='source' map=''></link> 
-			<link field='notes' reltype='has_many' class='bren' key='record' map=''></link> 
-			<link field='author_field_entries' reltype='has_many' class='mafe' key='source' map=''></link> 
-			<link field='series_field_entries' reltype='has_many' class='msefe' key='source' map=''></link> 
-			<link field='full_record_entries' reltype='has_many' class='mfr' key='record' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_MARC IMPORT_MARC'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_MARC'></update> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_unit::hours_of_operation' reporter:label='Hours of Operation' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.hours_of_operation' id='aouhoo'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field name='dow_0_close'></field> 
-			<field name='dow_0_open'></field> 
-			<field name='dow_1_close'></field> 
-			<field name='dow_1_open'></field> 
-			<field name='dow_2_close'></field> 
-			<field name='dow_2_open'></field> 
-			<field name='dow_3_close'></field> 
-			<field name='dow_3_open'></field> 
-			<field name='dow_4_close'></field> 
-			<field name='dow_4_open'></field> 
-			<field name='dow_5_close'></field> 
-			<field name='dow_5_open'></field> 
-			<field name='dow_6_close'></field> 
-			<field name='dow_6_open'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='org_unit' reporter:datatype='org_unit' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='might_have' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='id' permission='CREATE_HOURS_OF_OPERATION'></create> 
-                <retrieve></retrieve> 
-                <update context_field='id' permission='UPDATE_HOURS_OF_OPERATION'></update> 
-                <delete context_field='id' permission='DELETE_HOURS_OF_OPERATION'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_unit::closed_date' reporter:label='Closed Dates' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.org_unit_closed' id='aoucd'> 
-		<fields oils_persist:sequence='actor.org_unit_closed_id_seq' oils_persist:primary='id'> 
-			<field name='close_end' reporter:datatype='timestamp'></field> 
-			<field name='close_start' reporter:datatype='timestamp'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='org_unit' reporter:datatype='org_unit'></field> 
-			<field name='reason' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='org_unit' permission='CREATE_ORG_UNIT_CLOSING'></create> 
-                <retrieve></retrieve> 
-                <update context_field='org_unit' permission='UPDATE_ORG_UNIT_CLOSING'></update> 
-                <delete context_field='org_unit' permission='DELETE_ORG_UNIT_CLOSING'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='config::rules::circ_duration' reporter:label='Circulation Duration Rule' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.rule_circ_duration' id='crcd'> 
-		<fields oils_persist:sequence='config.rule_circ_duration_id_seq' oils_persist:primary='id'> 
-			<field name='extended' reporter:datatype='interval'></field> 
-			<field name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field name='max_renewals' reporter:datatype='int'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='normal' reporter:datatype='interval'></field> 
-			<field name='shrt' reporter:datatype='interval'></field> 
-		</fields> 
-		<links> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_CIRC_DURATION'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_CIRC_DURATION'></update> 
-                <delete global_required='true' permission='DELETE_CIRC_DURATION'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::open_billable_transaction_summary' reporter:label='Open Billable Transaction Summary' controller='open-ils.cstore' oils_persist:tablename='money.open_billable_xact_summary' id='mobts'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field name='balance_owed' reporter:datatype='money'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='last_billing_note' reporter:datatype='text'></field> 
-			<field name='last_billing_ts' reporter:datatype='timestamp'></field> 
-			<field name='last_billing_type' reporter:datatype='text'></field> 
-			<field name='last_payment_note' reporter:datatype='text'></field> 
-			<field name='last_payment_ts' reporter:datatype='timestamp'></field> 
-			<field name='last_payment_type' reporter:datatype='text'></field> 
-			<field name='total_owed' reporter:datatype='money'></field> 
-			<field name='total_paid' reporter:datatype='money'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-			<field name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field name='xact_start' reporter:datatype='timestamp'></field> 
-			<field name='xact_type' reporter:datatype='text'></field> 
-			<field name='xact' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='grocery' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='circulation' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='billing_location' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='xact' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='circulation' reltype='might_have' class='circ' key='id' map=''></link> 
-			<link field='grocery' reltype='might_have' class='mg' key='id' map=''></link> 
-			<link field='billing_location' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='ILS User' oils_persist:tablename='actor.usr' reporter:core='true' oils_obj:fieldmapper='actor::user' controller='open-ils.cstore' id='au'> 
-		<fields oils_persist:sequence='actor.usr_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='All Addresses' name='addresses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='All Library Cards' name='cards' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='All Circulations' name='checkouts' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='All Hold Requests' name='hold_requests' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='All Permissions' name='permissions' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='All User Settings' name='settings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Standing Penalties' name='standing_penalties' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Statistical Category Entries' name='stat_cat_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Survey Responses' name='survey_responses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='ws_ou' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='wsid' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Active' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field> 
-			<field reporter:label='Barred' name='barred' reporter:datatype='bool'></field> 
-			<field reporter:label='Physical Address' name='billing_address' reporter:datatype='link'></field> 
-			<field reporter:label='Current Library Card' name='card' reporter:datatype='link'></field> 
-			<field reporter:label='Claims-returned Count' name='claims_returned_count' reporter:datatype='int'></field> 
-			<field reporter:label='Record Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='User Credit Balance' name='credit_forward_balance' reporter:datatype='money'></field> 
-			<field reporter:label='Daytime Phone' name='day_phone' reporter:datatype='text'></field> 
-			<field reporter:label='Date of Birth' name='dob' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Email Address' name='email' reporter:datatype='text'></field> 
-			<field reporter:label='Evening Phone' name='evening_phone' reporter:datatype='text'></field> 
-			<field reporter:label='Privilege Expiration Date' name='expire_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Name' name='family_name' reporter:datatype='text'></field> 
-			<field reporter:label='First Name' name='first_given_name' reporter:datatype='text'></field> 
-			<field reporter:label='Home Library' name='home_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='User ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Primary Identification Type' name='ident_type' reporter:datatype='link'></field> 
-			<field reporter:label='Secondary Identification Type' name='ident_type2' reporter:datatype='link'></field> 
-			<field reporter:label='Primary Identification' name='ident_value' reporter:datatype='text'></field> 
-			<field reporter:label='Secondary Identification' name='ident_value2' reporter:datatype='text'></field> 
-			<field name='last_xact_id' reporter:datatype='text'></field> 
-			<field reporter:label='Mailing Address' name='mailing_address' reporter:datatype='link'></field> 
-			<field reporter:label='Is Group Lead Account' name='master_account' reporter:datatype='bool'></field> 
-			<field reporter:label='Internet Access Level' name='net_access_level' reporter:datatype='link'></field> 
-			<field reporter:label='Other Phone' name='other_phone' reporter:datatype='text'></field> 
-			<field reporter:label='Password' name='passwd' reporter:datatype='text'></field> 
-			<field reporter:label='Photo URL' name='photo_url' reporter:datatype='text'></field> 
-			<field reporter:label='Prefix' name='prefix' reporter:datatype='text'></field> 
-			<field reporter:label='Main (Profile) Permission Group' name='profile' reporter:datatype='link'></field> 
-			<field reporter:label='Middle Name' name='second_given_name' reporter:datatype='text'></field> 
-			<field reporter:label='Standing (unused)' name='standing' reporter:datatype='link'></field> 
-			<field reporter:label='Suffix/Title' name='suffix' reporter:datatype='text'></field> 
-			<field reporter:label='Is Super User' name='super_user' reporter:datatype='bool'></field> 
-			<field reporter:label='Family Linkage or other Group' name='usrgroup' reporter:datatype='int'></field> 
-			<field reporter:label='OPAC/Staff Client User Name' name='usrname' reporter:datatype='text'></field> 
-			<field reporter:label='OPAC/Staff Client Holds Alias' name='alias' reporter:datatype='text'></field> 
-			<field reporter:label='Juvenile' name='juvenile' reporter:datatype='bool'></field> 
-			<field reporter:label='Additional Permission Groups' name='groups' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field> 
-			<field reporter:label='User Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Demographic Info' name='demographic' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billable Transactions' name='billable_transactions' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Money Summary' name='money_summary' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Open Billable Transactions' name='open_billable_transactions_summary' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Checkins' name='checkins' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulations Performed as Staff' name='performed_circulations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Reservations' name='reservations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='demographic' reltype='might_have' class='rud' key='id' map=''></link> 
-			<link field='net_access_level' reltype='has_a' class='cnal' key='id' map=''></link> 
-			<link field='profile' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='ident_type' reltype='has_a' class='cit' key='id' map=''></link> 
-			<link field='billing_address' reltype='has_a' class='aua' key='id' map=''></link> 
-			<link field='mailing_address' reltype='has_a' class='aua' key='id' map=''></link> 
-			<link field='home_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='standing' reltype='has_a' class='cst' key='id' map=''></link> 
-			<link field='card' reltype='has_a' class='ac' key='id' map=''></link> 
-			<link field='ident_type2' reltype='has_a' class='cit' key='id' map=''></link> 
-			<link field='stat_cat_entries' reltype='has_many' class='actscecm' key='target_usr' map=''></link> 
-			<link field='groups' reltype='has_many' class='pugm' key='usr' map='grp'></link> 
-			<link field='usrgroup' reltype='has_many' class='au' key='usrgroup' map=''></link> 
-			<link field='checkouts' reltype='has_many' class='circ' key='usr' map=''></link> 
-			<link field='hold_requests' reltype='has_many' class='circ' key='usr' map=''></link> 
-			<link field='permissions' reltype='has_many' class='pupm' key='usr' map='perm'></link> 
-			<link field='settings' reltype='has_many' class='aus' key='usr' map=''></link> 
-			<link reporter:label='Billable Transactions' map='' reltype='has_many' field='billable_transactions' key='usr' class='mbt'></link> 
-			<link field='open_billable_transactions_summary' reltype='has_many' class='mobts' key='usr' map=''></link> 
-			<link field='money_summary' reltype='might_have' class='mus' key='usr' map=''></link> 
-			<link field='standing_penalties' reltype='has_many' class='ausp' key='usr' map=''></link> 
-			<link field='addresses' reltype='has_many' class='aua' key='usr' map=''></link> 
-			<link field='survey_responses' reltype='has_many' class='asvr' key='usr' map=''></link> 
-			<link field='notes' reltype='has_many' class='aun' key='usr' map=''></link> 
-			<link reporter:label='Check-ins Performed as Staff' map='' reltype='has_many' field='checkins' key='checkin_staff' class='circ'></link> 
-			<link field='cards' reltype='has_many' class='ac' key='usr' map=''></link> 
-			<link reporter:label='Circulations Performed as Staff' map='' reltype='has_many' field='performed_circulations' key='circ_staff' class='circ'></link> 
-			<link field='reservations' reltype='has_many' class='bresv' key='usr' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_unit_setting' reporter:label='Organizational Unit Setting' controller='open-ils.cstore' oils_persist:tablename='actor.org_unit_setting' id='aous'> 
-		<fields oils_persist:sequence='actor.org_unit_setting_id_seq' oils_persist:primary='id'> 
-			<field name='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='org_unit' reporter:datatype='org_unit'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::copy_note' reporter:label='Copy Note' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='asset.copy_note' id='acpn'> 
-		<fields oils_persist:sequence='asset.copy_note_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Note Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Note Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Note ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Copy' name='owning_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Is OPAC Visible?' name='pub' reporter:datatype='bool'></field> 
-			<field reporter:label='Note Title' name='title' reporter:datatype='text'></field> 
-			<field reporter:label='Note Content' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owning_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='CREATE_COPY_NOTE'> 
-                    <context field='circ_lib' link='owning_copy'></context> 
-                </create> 
-                <retrieve permission='VIEW_COPY_NOTES'> 
-                    <context field='circ_lib' link='owning_copy'></context> 
-                </retrieve> 
-                <update permission='UPDATE_COPY_NOTE'> 
-                    <context field='circ_lib' link='owning_copy'></context> 
-                </update> 
-                <delete permission='DELETE_COPY_NOTE'> 
-                    <context field='circ_lib' link='owning_copy'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::full_rec' reporter:label='Flattened MARC Fields' controller='open-ils.cstore' oils_persist:tablename='metabib.full_rec' id='mfr'> 
-		<fields oils_persist:sequence='metabib.full_rec_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Field ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Indicator 1' name='ind1' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Indicator 2' name='ind2' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Bib Record Entry' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Subfield' name='subfield' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Tag' name='tag' reporter:datatype='text'></field> 
-			<field reporter:label='Normalized Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::metarecord' reporter:label='Metarecord' controller='open-ils.cstore' oils_persist:tablename='metabib.metarecord' id='mmr'> 
-		<fields oils_persist:sequence='metabib.metarecord_id_seq' oils_persist:primary='id'> 
-			<field name='fingerprint' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='master_record' reporter:datatype='link'></field> 
-			<field name='mods' reporter:datatype='text'></field> 
-			<field name='source_records' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='master_record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='source_records' reltype='has_many' class='mmrsm' key='metarecord' map='source'></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::net_access_level' reporter:label='Net Access Level' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.net_access_level' id='cnal'> 
-		<fields oils_persist:sequence='config.net_access_level_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_NET_ACCESS_LEVEL'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_NET_ACCESS_LEVEL'></update> 
-                <delete global_required='true' permission='DELETE_NET_ACCESS_LEVEL'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::perm_list' reporter:label='Permission List' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='permission.perm_list' id='ppl'> 
-		<fields oils_persist:sequence='permission.perm_list_id_seq' oils_persist:primary='id'> 
-			<field name='code' reporter:datatype='text'></field> 
-			<field name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field name='id' reporter:datatype='id' reporter:selector='code'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_PERM'></create> 
-                <retrieve global_required='true' permission='CREATE_PERM UPDATE_PERM DELETE_PERM'></retrieve> 
-                <update global_required='true' permission='UPDATE_PERM'></update> 
-                <delete global_required='true' permission='DELETE_PERM'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Metarecord Source Map' oils_persist:tablename='metabib.metarecord_source_map' oils_obj:fieldmapper='metabib::metarecord_source_map' controller='open-ils.cstore' oils_persist:field_safe='true' id='mmrsm'> 
-		<fields oils_persist:sequence='metabib.metarecord_source_map_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='metarecord' reporter:datatype='link'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='metarecord' reltype='has_a' class='mmr' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::keyword_field_entry' reporter:label='Keyword Field Entry' controller='open-ils.cstore' oils_persist:tablename='metabib.keyword_field_entry' id='mkfe'> 
-		<fields oils_persist:sequence='metabib.keyword_field_entry_id_seq' oils_persist:primary='id'> 
-			<field name='field' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::cash_payment' reporter:label='Cash Payment' controller='open-ils.cstore' oils_persist:tablename='money.cash_payment' id='mcp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field name='accepting_usr' reporter:datatype='link'></field> 
-			<field name='amount' reporter:datatype='money'></field> 
-			<field name='amount_collected' reporter:datatype='money'></field> 
-			<field name='cash_drawer' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-			<field name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field name='xact' reporter:datatype='link'></field> 
-			<field name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='cash_drawer' reltype='has_a' class='aws' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::forgive_payment' reporter:label='Forgive Payment' controller='open-ils.cstore' oils_persist:tablename='money.forgive_payment' id='mfp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field name='accepting_usr' reporter:datatype='link'></field> 
-			<field name='amount' reporter:datatype='money'></field> 
-			<field name='amount_collected' reporter:datatype='money'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-			<field name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field name='xact' reporter:datatype='link'></field> 
-			<field name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::record_descriptor' reporter:label='Basic Record Descriptor' controller='open-ils.cstore' oils_persist:tablename='metabib.rec_descriptor' id='mrd'> 
-		<fields oils_persist:sequence='metabib.rec_descriptor_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Audn' name='audience' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='BLvl' name='bib_level' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Cat Form' name='cat_form' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Character Encoding' name='char_encoding' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Ctrl' name='control_type' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='ELvl' name='enc_level' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Descriptor ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Form' name='item_form' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Lang' name='item_lang' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Type' name='item_type' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='LitF' name='lit_form' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Pub Status' name='pub_status' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Bib Record Entry' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='TMat' name='type_mat' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Video Recording Format' name='vr_format' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Date1' name='date1' reporter:datatype='text' oils_persist:primitive='string'></field> 
-			<field reporter:label='Date2' name='date2' reporter:datatype='text' oils_persist:primitive='string'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='item_lang' reltype='has_a' class='clm' key='code' map=''></link> 
-			<link field='item_type' reltype='has_a' class='citm' key='code' map=''></link> 
-			<link field='bib_level' reltype='has_a' class='cblvl' key='code' map=''></link> 
-			<link field='item_form' reltype='has_a' class='cifm' key='code' map=''></link> 
-			<link field='audience' reltype='has_a' class='cam' key='code' map=''></link> 
-			<link field='lit_form' reltype='has_a' class='clfm' key='code' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='config::standing_penalty' reporter:label='Standing Penalty' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.standing_penalty' id='csp'> 
-		<fields oils_persist:sequence='config.standing_penalty_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field name='block_list' reporter:datatype='text'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_STANDING_PENALTY'></create> 
-                <retrieve global_required='true' permission='ADMIN_STANDING_PENALTY VIEW_STANDING_PENALTY'></retrieve> 
-                <update global_required='true' permission='ADMIN_STANDING_PENALTY'></update> 
-                <delete global_required='true' permission='ADMIN_STANDING_PENALTY'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::grp_penalty_threshold' reporter:label='Group Penalty Threshold' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='permission.grp_penalty_threshold' id='pgpt'> 
-		<fields oils_persist:sequence='permission.grp_penalty_threshold_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Group' name='grp' reporter:datatype='link'></field> 
-			<field reporter:label='Penalty' name='penalty' reporter:datatype='link'></field> 
-			<field reporter:label='Threshold' name='threshold' reporter:datatype='float'></field> 
-			<field reporter:label='Org Unit' name='org_unit' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='penalty' reltype='has_a' class='csp' key='id' map=''></link> 
-			<link field='grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='org_unit' permission='ADMIN_GROUP_PENALTY_THRESHOLD'></create> 
-                <retrieve context_field='org_unit' permission='VIEW_GROUP_PENALTY_THRESHOLD ADMIN_GROUP_PENALTY_THRESHOLD'></retrieve> 
-                <update context_field='org_unit' permission='ADMIN_GROUP_PENALTY_THRESHOLD'></update> 
-                <delete context_field='org_unit' permission='ADMIN_GROUP_PENALTY_THRESHOLD'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Copy Status' oils_persist:tablename='config.copy_status' oils_obj:fieldmapper='config::copy_status' controller='open-ils.cstore open-ils.pcrud' id='ccs' oils_persist:restrict_primary='100'> 
-		<fields oils_persist:sequence='config.copy_status_id_seq' oils_persist:primary='id'> 
-			<field name='holdable' reporter:datatype='bool'></field> 
-			<field name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field name='opac_visible' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_COPY_STATUS'></create> 
-                <retrieve global_required='true' permission='CREATE_COPY_STATUS UPDATE_COPY_STATUS DELETE_COPY_STATUS'></retrieve> 
-                <update global_required='true' permission='UPDATE_COPY_STATUS'></update> 
-                <delete global_required='true' permission='DELETE_COPY_STATUS'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='User Standing Penalty' oils_persist:tablename='actor.usr_standing_penalty' oils_obj:fieldmapper='actor::user_standing_penalty' controller='open-ils.cstore open-ils.pcrud' id='ausp' oils_persist:restrict_primary='100'> 
-		<fields oils_persist:sequence='actor.usr_standing_penalty_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Set Date' name='set_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Staff' name='staff' reporter:datatype='link'></field> 
-			<field reporter:label='Standing Penalty' name='standing_penalty' reporter:datatype='link'></field> 
-			<field reporter:label='Org Unit' name='org_unit' reporter:datatype='link'></field> 
-			<field reporter:label='Stop Date' name='stop_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='standing_penalty' reltype='has_a' class='csp' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create permission='UPDATE_USER'><context field='home_ou' link='usr'></context></create> 
-				<retrieve permission='VIEW_USER'><context field='home_ou' link='usr'></context></retrieve> 
-				<update permission='UPDATE_USER'><context field='home_ou' link='usr'></context></update> 
-				<delete permission='UPDATE_USER'><context field='home_ou' link='usr'></context></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::user_address' reporter:label='User Address' controller='open-ils.cstore' oils_persist:tablename='actor.usr_address' id='aua'> 
-		<fields oils_persist:sequence='actor.usr_address_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Type' name='address_type' reporter:datatype='text'></field> 
-			<field reporter:label='City' name='city' reporter:datatype='text'></field> 
-			<field reporter:label='Country' name='country' reporter:datatype='text'></field> 
-			<field reporter:label='County' name='county' reporter:datatype='text'></field> 
-			<field reporter:label='Address ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Postal Code' name='post_code' reporter:datatype='text'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Street (1)' name='street1' reporter:datatype='text'></field> 
-			<field reporter:label='Street (2)' name='street2' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Valid Address?' name='valid' reporter:datatype='bool'></field> 
-			<field reporter:label='Within City Limits?' name='within_city_limits' reporter:datatype='bool'></field> 
-			<field reporter:label='Replaces' name='replaces' reporter:datatype='link'></field> 
-			<field reporter:label='Pending' name='pending' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='replaces' reltype='has_a' class='aua' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::call_number_note' reporter:label='Call Number Note' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='asset.call_number_note' id='acnn'> 
-		<fields oils_persist:sequence='asset.call_number_note_id_seq' oils_persist:primary='id'> 
-			<field name='call_number'></field> 
-			<field name='create_date' reporter:datatype='timestamp'></field> 
-			<field name='creator' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='title' reporter:datatype='text'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='CREATE_VOLUME_NOTE'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </create> 
-                <retrieve permission='VIEW_VOLUME_NOTES'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </retrieve> 
-                <update permission='UPDATE_VOLUME_NOTE'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </update> 
-                <delete permission='DELETE_VOLUME_NOTE'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='authority::record_note' reporter:label='Authority Record Note' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='authority.record_note' id='arn'> 
-		<fields oils_persist:sequence='authority.record_note_id_seq' oils_persist:primary='id'> 
-			<field name='create_date' reporter:datatype='timestamp'></field> 
-			<field name='creator' reporter:datatype='link'></field> 
-			<field name='edit_date' reporter:datatype='timestamp'></field> 
-			<field name='editor' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='record' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='are' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_AUTHORITY_RECORD_NOTE'></create> 
-                <retrieve global_required='true' permission='VIEW_AUTHORITY_RECORD_NOTES'></retrieve> 
-                <update global_required='true' permission='UPDATE_AUTHORITY_RECORD_NOTE'></update> 
-                <delete global_required='true' permission='DELETE_AUTHORITY_RECORD_NOTE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Circulation' oils_persist:tablename='action.circulation' reporter:core='true' oils_obj:fieldmapper='action::circulation' controller='open-ils.cstore' id='circ'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Check In Library' name='checkin_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Check In Staff' name='checkin_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Check In Date/Time' name='checkin_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulating Staff' name='circ_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Desk Renewal' name='desk_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Due Date/Time' name='due_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulation Duration' name='duration' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ Duration Rule' name='duration_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='OPAC Renewal' name='opac_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Phone Renewal' name='phone_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Recurring Fine Amount' name='recuring_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Recurring Fine Rule' name='recuring_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Remaining Renewals' name='renewal_remaining' reporter:datatype='int'></field> 
-			<field reporter:label='Fine Stop Reason' name='stop_fines' reporter:datatype='text'></field> 
-			<field reporter:label='Fine Stop Date/Time' name='stop_fines_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Item' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Patron' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Check Out Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Record Creation Date/Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Transaction Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Base Transaction' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='circ_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='checkin_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='checkin_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link> 
-			<link field='recuring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link> 
-			<link field='circ_type' reltype='might_have' class='rcirct' key='id' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Combined Aged and Active Circulations' oils_persist:tablename='action.all_circulation' reporter:core='true' oils_obj:fieldmapper='action::all_circulation' controller='open-ils.cstore' id='combcirc' oils_persist:readonly='true'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Check In Library' name='checkin_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Check In Staff' name='checkin_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Check In Date/Time' name='checkin_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulating Staff' name='circ_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Desk Renewal' name='desk_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Due Date/Time' name='due_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulation Duration' name='duration' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ Duration Rule' name='duration_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='OPAC Renewal' name='opac_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Phone Renewal' name='phone_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Recurring Fine Amount' name='recuring_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Recurring Fine Rule' name='recuring_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Remaining Renewals' name='renewal_remaining' reporter:datatype='int'></field> 
-			<field reporter:label='Fine Stop Reason' name='stop_fines' reporter:datatype='text'></field> 
-			<field reporter:label='Fine Stop Date/Time' name='stop_fines_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Item' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Patron ZIP' name='usr_post_code' reporter:datatype='text'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Check Out Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Record Creation Date/Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Transaction Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Base Transaction' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Patron Home Library' name='usr_home_ou' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Profile Group' name='usr_profile' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Birth Year' name='usr_birth_year' reporter:datatype='int'></field> 
-			<field reporter:label='Call Number' name='copy_call_number' reporter:datatype='link'></field> 
-			<field reporter:label='Shelving Location' name='copy_location' reporter:datatype='link'></field> 
-			<field reporter:label='Copy Owning Library' name='copy_owning_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Copy Circulating Library' name='copy_circ_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Bib Record' name='copy_bib_record' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='circ_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='checkin_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='checkin_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link> 
-			<link field='recuring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link> 
-			<link field='circ_type' reltype='might_have' class='rcirct' key='id' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-			<link field='copy_call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-			<link field='copy_location' reltype='has_a' class='acpl' key='id' map=''></link> 
-			<link field='copy_owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_bib_record' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Aged (patronless) Circulation' oils_persist:tablename='action.aged_circulation' reporter:core='true' oils_obj:fieldmapper='action::aged_circulation' controller='open-ils.cstore' id='acirc'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Check In Library' name='checkin_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Check In Staff' name='checkin_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Check In Date/Time' name='checkin_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulating Staff' name='circ_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Desk Renewal' name='desk_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Due Date/Time' name='due_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulation Duration' name='duration' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ Duration Rule' name='duration_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='OPAC Renewal' name='opac_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Phone Renewal' name='phone_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Recurring Fine Amount' name='recuring_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Recurring Fine Rule' name='recuring_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Remaining Renewals' name='renewal_remaining' reporter:datatype='int'></field> 
-			<field reporter:label='Fine Stop Reason' name='stop_fines' reporter:datatype='text'></field> 
-			<field reporter:label='Fine Stop Date/Time' name='stop_fines_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Item' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Patron ZIP' name='usr_post_code' reporter:datatype='text'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Check Out Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Record Creation Date/Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Transaction Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Base Transaction' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Patron Home Library' name='usr_home_ou' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Profile Group' name='usr_profile' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Birth Year' name='usr_birth_year' reporter:datatype='int'></field> 
-			<field reporter:label='Call Number' name='copy_call_number' reporter:datatype='link'></field> 
-			<field reporter:label='Shelving Location' name='copy_location' reporter:datatype='link'></field> 
-			<field reporter:label='Copy Owning Library' name='copy_owning_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Copy Circulating Library' name='copy_circ_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Bib Record' name='copy_bib_record' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='circ_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='checkin_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='checkin_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link> 
-			<link field='recuring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link> 
-			<link field='circ_type' reltype='might_have' class='rcirct' key='id' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-			<link field='copy_call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-			<link field='copy_location' reltype='has_a' class='acpl' key='id' map=''></link> 
-			<link field='copy_owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_bib_record' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='booking::resource_type' reporter:label='Resource Type' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.resource_type' id='brt'> 
-		<fields oils_persist:sequence='booking.resource_type_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Resource Type ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Resource Type Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Fine Amount' name='fine_amount' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Catalog Item' name='catalog_item' reporter:datatype='bool'></field> 
-			<field reporter:label='Bibliographic Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Transferable' name='transferable' reporter:datatype='bool'></field> 
-			<field reporter:label='Inter-booking and Inter-circulation Interval' name='elbow_room' reporter:datatype='interval'></field> 
-			<field reporter:label='Resources' name='resources' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resource Attributes' name='resource_attrs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Target Resource Types' name='tgt_rsrc_types' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='resources' reltype='has_many' class='brsrc' key='type' map=''></link> 
-			<link field='resource_attrs' reltype='has_many' class='bra' key='type' map=''></link> 
-			<link field='tgt_rsrc_types' reltype='has_many' class='bresv' key='type' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESOURCE_TYPE'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESOURCE_TYPE'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESOURCE_TYPE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='booking::resource' reporter:label='Resource' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.resource' id='brsrc'> 
-		<fields oils_persist:sequence='booking.resource_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Resource ID' name='id' reporter:datatype='id' reporter:selector='barcode'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Resource Type' name='type' reporter:datatype='link'></field> 
-			<field reporter:label='Overbook' name='overbook' reporter:datatype='bool'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Is Deposit Required' name='deposit' reporter:datatype='bool'></field> 
-			<field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='money'></field> 
-			<field reporter:label='User Fee' name='user_fee' reporter:datatype='money'></field> 
-			<field reporter:label='Resource Attribute Maps' name='attr_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Reservation Target Resources' name='tgt_rsrcs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Reservation Current Resources' name='curr_rsrcs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Catalog Item' name='catalog_item' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='type' reltype='has_a' class='brt' key='id' map=''></link> 
-			<link field='attr_maps' reltype='has_many' class='bram' key='resource' map=''></link> 
-			<link field='tgt_rsrcs' reltype='has_many' class='bresv' key='targeted_resource' map=''></link> 
-			<link field='curr_rsrcs' reltype='has_many' class='bresv' key='current_resource' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESOURCE'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESOURCE'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESOURCE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	
-	<class oils_obj:fieldmapper='booking::resource_attr' reporter:label='Resource Attribute' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.resource_attr' id='bra'> 
-		<fields oils_persist:sequence='booking.resource_attr_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Resource Attribute ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Resource Attribute Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Resource Type' name='resource_type' reporter:datatype='link'></field> 
-			<field reporter:label='Is Required' name='required' reporter:datatype='bool'></field> 
-			<field reporter:label='Valid Values' name='valid_values' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resource Attribute Maps' name='attr_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='resource_type' reltype='has_a' class='brt' key='id' map=''></link> 
-			<link field='valid_values' reltype='has_many' class='brav' key='attr' map=''></link> 
-			<link field='attr_maps' reltype='has_many' class='bram' key='attr' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	
-	<class oils_obj:fieldmapper='booking::resource_attr_value' reporter:label='Resource Attribute Value' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.resource_attr_value' id='brav'> 
-		<fields oils_persist:sequence='booking.resource_attr_value_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Resource Attribute Value ID' name='id' reporter:datatype='id' reporter:selector='valid_value'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Resource Attribute' name='attr' reporter:datatype='link'></field> 
-			<field reporter:label='Valid Value' name='valid_value' reporter:datatype='text'></field> 
-			<field reporter:label='Resource Attribute Maps' name='attr_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resource Attribute Value Maps' name='attr_val_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='attr' reltype='has_a' class='bra' key='id' map=''></link> 
-			<link field='attr_maps' reltype='has_many' class='bram' key='id' map=''></link> 
-			<link field='attr_val_maps' reltype='has_many' class='bravm' key='attr_value' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_VALUE'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_VALUE'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_VALUE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	
-	<class oils_obj:fieldmapper='booking::resource_attr_map' reporter:label='Resource Attribute Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.resource_attr_map' id='bram'> 
-		<fields oils_persist:sequence='booking.resource_attr_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Resource Attribute Map ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Resource' name='resource' reporter:datatype='link'></field> 
-			<field reporter:label='Resource Attribute' name='resource_attr' reporter:datatype='link'></field> 
-			<field reporter:label='Attribute Value' name='value' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='resource' reltype='has_a' class='brsrc' key='id' map=''></link> 
-			<link field='resource_attr' reltype='has_a' class='bra' key='id' map=''></link> 
-			<link field='value' reltype='has_a' class='brav' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_MAP'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_MAP'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESOURCE_ATTR_MAP'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	
-	<class oils_obj:fieldmapper='booking::reservation' reporter:label='Reservation' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.reservation' id='bresv'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Start Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Unrecovered Debt' name='unrecovered' reporter:datatype='bool'></field> 
-			<field reporter:label='Billing Line Items' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Line Items' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Summary' name='summary' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Request Time' name='request_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Start Time' name='start_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='End Time' name='end_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Capture Time' name='capture_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Cancel Time' name='cancel_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Pickup Time' name='pickup_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Return Time' name='return_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Booking Interval' name='booking_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Fine Amount' name='fine_amount' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Target Resource Type' name='target_resource_type' reporter:datatype='link'></field> 
-			<field reporter:label='Target Resource' name='target_resource' reporter:datatype='link'></field> 
-			<field reporter:label='Current Resource' name='current_resource' reporter:datatype='link'></field> 
-			<field reporter:label='Request Library' name='request_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Pickup Library' name='pickup_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Capture Staff' name='capture_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Attribute Value Maps' name='attr_val_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-			<link field='summary' reltype='might_have' class='mbts' key='id' map=''></link> 
-			<link field='target_resource_type' reltype='has_a' class='brt' key='id' map=''></link> 
-			<link field='target_resource' reltype='has_a' class='brsrc' key='id' map=''></link> 
-			<link field='current_resource' reltype='has_a' class='brsrc' key='id' map=''></link> 
-			<link field='request_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='pickup_lib' reltype='might_have' class='aou' key='id' map=''></link> 
-			<link field='capture_staff' reltype='might_have' class='au' key='id' map=''></link> 
-			<link field='attr_val_maps' reltype='has_many' class='bravm' key='reservation' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESERVATION'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESERVATION'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESERVATION'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	
-	<class oils_obj:fieldmapper='booking::reservation_attr_value_map' reporter:label='Reservation Attribute Value Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='booking.reservation_attr_value_map' id='bravm'> 
-		<fields oils_persist:sequence='booking.reservation_attr_value_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Reservation Attribute Value Map' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Reservation' name='reservation' reporter:datatype='link'></field> 
-			<field reporter:label='Attribute Map' name='attr_value' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='reservation' reltype='has_a' class='bresv' key='id' map=''></link> 
-			<link field='attr_value' reltype='has_a' class='brav' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_BOOKING_RESERVATION_ATTR_MAP'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_BOOKING_RESERVATION_ATTR_MAP'></update> 
-				<delete global_required='true' permission='ADMIN_BOOKING_RESERVATION_ATTR_MAP'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='container::call_number_bucket_item' reporter:label='Call Number Bucket Item' controller='open-ils.cstore' oils_persist:tablename='container.call_number_bucket_item' id='ccnbi'> 
-		<fields oils_persist:sequence='container.call_number_bucket_item_id_seq' oils_persist:primary='id'> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='target_call_number' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='pos' reporter:datatype='int'></field> 
-			<field name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='target_call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-			<link field='bucket' reltype='has_a' class='ccnb' key='id' map=''></link> 
-            <link field='notes' reltype='has_many' class='ccnbin' key='item' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::call_number_bucket_item_note' reporter:label='Call Number Bucket Item Note' controller='open-ils.cstore' oils_persist:tablename='container.call_number_bucket_item_note' id='ccnbin'> 
-		<fields oils_persist:sequence='container.call_number_bucket_item_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='item' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='item' reltype='has_a' class='ccnbi' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::biblio_record_entry_bucket' reporter:label='Bibliographic Record Entry Bucket' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket' id='cbreb'> 
-		<fields oils_persist:sequence='container.biblio_record_entry_bucket_id_seq' oils_persist:primary='id'> 
-			<field name='items' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='btype' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='items' reltype='has_many' class='cbrebi' key='bucket' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::biblio_record_entry_bucket_note' reporter:label='Bibliographic Record Entry Bucket Note' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_note' id='cbrebn'> 
-		<fields oils_persist:sequence='container.biblio_record_entry_bucket_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='bucket' reltype='has_a' class='cbreb' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='action::hold_copy_map' reporter:label='Hold Copy Map' controller='open-ils.cstore' oils_persist:tablename='action.hold_copy_map' id='ahcm'> 
-		<fields oils_persist:sequence='action.hold_copy_map_id_seq' oils_persist:primary='id'> 
-			<field name='hold' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='target_copy' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='hold' reltype='has_a' class='ahr' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='action::hold_notification' reporter:label='Hold Notification' controller='open-ils.cstore' oils_persist:tablename='action.hold_notification' id='ahn'> 
-		<fields oils_persist:sequence='action.hold_notification_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Hold' name='hold' reporter:datatype='link'></field> 
-			<field reporter:label='Notification ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Notification Method' name='method' reporter:datatype='text'></field> 
-			<field reporter:label='Notification Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Notifying Staff' name='notify_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Notification Date/Time' name='notify_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='hold' reltype='has_a' class='ahr' key='id' map=''></link> 
-			<link field='notify_staff' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::copy_location' reporter:label='Copy/Shelving Location' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='asset.copy_location' id='acpl'> 
-		<fields oils_persist:sequence='asset.copy_location_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Can Circulate?' name='circulate' reporter:datatype='bool'></field> 
-			<field reporter:label='Is Holdable?' name='holdable' reporter:datatype='bool'></field> 
-			<field reporter:label='Hold Capture Requires Verification' name='hold_verify' reporter:datatype='bool'></field> 
-			<field reporter:label='Location ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Is OPAC Visible?' name='opac_visible' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Org Unit' name='owning_lib' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='distribution_formula_entries' reltype='has_many' class='acqdfe' key='location' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owning_lib' permission='CREATE_COPY_LOCATION'></create> 
-                <retrieve></retrieve> 
-                <update context_field='owning_lib' permission='UPDATE_COPY_LOCATION'></update> 
-                <delete context_field='owning_lib' permission='DELETE_COPY_LOCATION'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::virtual_record' reporter:label='Serial Virtual Record' controller='open-ils.cstore' id='svr' oils_persist:virtual='true'> 
-		<fields> 
-			<field name='id' oils_persist:virtual='true'></field> 
-			<field name='location' oils_persist:virtual='true'></field> 
-			<field name='owning_lib' oils_persist:virtual='true'></field> 
-			<field name='holdings' oils_persist:virtual='true'></field> 
-			<field name='current_holdings' oils_persist:virtual='true'></field> 
-			<field name='supplements' oils_persist:virtual='true'></field> 
-			<field name='current_supplements' oils_persist:virtual='true'></field> 
-			<field name='indexes' oils_persist:virtual='true'></field> 
-			<field name='current_indexes' oils_persist:virtual='true'></field> 
-			<field name='online' oils_persist:virtual='true'></field> 
-			<field name='missing' oils_persist:virtual='true'></field> 
-			<field name='incomplete' oils_persist:virtual='true'></field> 
-		</fields> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::record_entry' reporter:label='Serial Record Entry' controller='open-ils.pcrud open-ils.cstore' oils_persist:tablename='serial.record_entry' id='sre'> 
-		<fields oils_persist:sequence='serial.record_entry_id_seq' oils_persist:primary='id'> 
-			<field name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Bib Record' name='record' reporter:datatype='link'></field> 
-			<field name='create_date' reporter:datatype='timestamp'></field> 
-			<field name='creator'></field> 
-			<field name='deleted' reporter:datatype='bool'></field> 
-			<field name='edit_date' reporter:datatype='timestamp'></field> 
-			<field name='editor'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='last_xact_id'></field> 
-			<field name='marc'></field> 
-			<field name='source'></field> 
-			<field reporter:label='Owning Org Unit' name='owning_lib' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owning_lib' permission='CREATE_MFHD_RECORD'></create> 
-				<retrieve></retrieve> 
-				<update context_field='owning_lib' permission='UPDATE_MFHD_RECORD'></update> 
-				<delete context_field='owning_lib' permission='DELETE_MFHD_RECORD'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::subscription' reporter:label='Subscription' controller='open-ils.cstore' oils_persist:tablename='serial.subscription' id='ssub'> 
-		<fields oils_persist:sequence='serial.subscription_id_seq' oils_persist:primary='id'> 
-			<field name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Call Number' name='call_number' reporter:datatype='link'></field> 
-			<field reporter:label='URI' name='uri' reporter:datatype='link'></field> 
-			<field reporter:label='Start date' name='start_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='End date' name='end_date' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='call_number' reltype='might_have' class='acn' key='id' map=''></link> 
-			<link field='uri' reltype='might_have' class='auri' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::binding_unit' reporter:label='Binding Unit' controller='open-ils.cstore' oils_persist:tablename='serial.binding_unit' id='sbu'> 
-		<fields oils_persist:sequence='serial.binding_unit_id_seq' oils_persist:primary='id'> 
-			<field name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Subscription' name='subscription' reporter:datatype='link'></field> 
-			<field reporter:label='Label' name='label'></field> 
-		</fields> 
-		<links> 
-			<link field='subscription' reltype='has_a' class='ssub' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::issuance' reporter:label='Issuance' controller='open-ils.cstore' oils_persist:tablename='serial.issuance' id='siss'> 
-		<fields oils_persist:sequence='serial.issuance_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='subscription' reporter:datatype='link'></field> 
-			<field name='target_copy' reporter:datatype='link'></field> 
-			<field name='location' reporter:datatype='link'></field> 
-			<field name='binding_unit' reporter:datatype='link'></field> 
-			<field name='label'></field> 
-		</fields> 
-		<links> 
-			<link field='subscription' reltype='has_a' class='ssub' key='id' map=''></link> 
-			<link field='target_copy' reltype='might_have' class='acp' key='id' map=''></link> 
-			<link field='location' reltype='might_have' class='acpl' key='id' map=''></link> 
-			<link field='binding_unit' reltype='might_have' class='sbu' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::bib_summary' reporter:label='Bib Summary' controller='open-ils.cstore' oils_persist:tablename='serial.bib_summary' id='sbsum'> 
-		<fields oils_persist:sequence='serial.bib_summary_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='subscription' reporter:datatype='link'></field> 
-			<field name='generated_coverage' reporter:datatype='text'></field> 
-			<field name='textual_holdings' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='subscription' reltype='has_a' class='ssub' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::sup_summary' reporter:label='Supplemental Issue Summary' controller='open-ils.cstore' oils_persist:tablename='serial.sup_summary' id='sssum'> 
-		<fields oils_persist:sequence='serial.sup_summary_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='subscription' reporter:datatype='link'></field> 
-			<field name='generated_coverage' reporter:datatype='text'></field> 
-			<field name='textual_holdings' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='subscription' reltype='has_a' class='ssub' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='serial::index_summary' reporter:label='Index Summary' controller='open-ils.cstore' oils_persist:tablename='serial.index_summary' id='sisum'> 
-		<fields oils_persist:sequence='serial.index_summary_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='subscription' reporter:datatype='link'></field> 
-			<field name='generated_coverage' reporter:datatype='text'></field> 
-			<field name='textual_holdings' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='subscription' reltype='has_a' class='ssub' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='asset::stat_cat_entry_copy_map' reporter:label='Statistical Category Entry Copy Map' controller='open-ils.cstore' oils_persist:tablename='asset.stat_cat_entry_copy_map' id='ascecm'> 
-		<fields oils_persist:sequence='asset.stat_cat_entry_copy_map_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='owning_copy' reporter:datatype='link'></field> 
-			<field name='stat_cat' reporter:datatype='link'></field> 
-			<field name='stat_cat_entry' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='owning_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='stat_cat_entry' reltype='has_a' class='asce' key='id' map=''></link> 
-			<link field='stat_cat' reltype='has_a' class='asc' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Item Type Map' oils_persist:tablename='config.item_type_map' oils_obj:fieldmapper='config::item_type_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='citm'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Item Type Code' name='code' reporter:datatype='text' reporter:selector='value'></field> 
-			<field reporter:label='Item Type' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_MARC_CODE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_MARC_CODE'></update> 
-                <delete global_required='true' permission='ADMIN_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Bib Level Map' oils_persist:tablename='config.bib_level_map' oils_obj:fieldmapper='config::bib_level_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='cblvl'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Bib Level Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Bib Level' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_MARC_CODE'></create> 
-                <retrieve global_required='true' permission='CREATE_MARC_CODE UPDATE_MARC_CODE DELETE_MARC_CODE'></retrieve> 
-                <update global_required='true' permission='UPDATE_MARC_CODE'></update> 
-                <delete global_required='true' permission='DELETE_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='search::relevance_adjustment' reporter:label='Relevance Adjustment' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='search.relevance_adjustment' id='sra'> 
-		<fields oils_persist:sequence='search.relevance_adjustment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Active' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Index Field' name='field' reporter:datatype='link'></field> 
-			<field reporter:label='Bump Type' name='bump_type' reporter:datatype='text'></field> 
-			<field reporter:label='Multiplier' name='multiplier' reporter:datatype='number'></field> 
-		</fields> 
-		<links> 
-            <link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-        </links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_RELEVANCE_ADJUSTMENT'></create> 
-                <retrieve global_required='true' permission='CREATE_RELEVANCE_ADJUSTMENT UPDATE_RELEVANCE_ADJUSTMENT DELETE_RELEVANCE_ADJUSTMENT'></retrieve> 
-                <update global_required='true' permission='UPDATE_RELEVANCE_ADJUSTMENT'></update> 
-                <delete global_required='true' permission='DELETE_RELEVANCE_ADJUSTMENT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_lasso' reporter:label='Org Lasso' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.org_lasso' id='lasso'> 
-		<fields oils_persist:sequence='actor.org_lasso_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_LASSO'></create> 
-                <retrieve global_required='true' permission='CREATE_LASSO UPDATE_LASSO DELETE_LASSO'></retrieve> 
-                <update global_required='true' permission='UPDATE_LASSO'></update> 
-                <delete global_required='true' permission='DELETE_LASSO'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_lasso_map' reporter:label='Org Lasso Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.org_lasso_map' id='lmap'> 
-		<fields oils_persist:sequence='actor.org_lasso_map_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='lasso' reporter:datatype='link'></field> 
-			<field name='org_unit' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='lasso' reltype='has_a' class='lasso' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_LASSO_MAP'></create> 
-                <retrieve global_required='true' permission='CREATE_LASSO_MAP UPDATE_LASSO_MAP DELETE_LASSO_MAP'></retrieve> 
-                <update global_required='true' permission='UPDATE_LASSO_MAP'></update> 
-                <delete global_required='true' permission='DELETE_LASSO_MAP'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_unit_proximity' reporter:label='Org Unit Proximity' controller='open-ils.cstore' oils_persist:tablename='actor.org_unit_proximity' id='aoup'> 
-		<fields oils_persist:sequence='actor.org_unit_proximity_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='from_org' reporter:datatype='org_unit'></field> 
-			<field name='to_org' reporter:datatype='org_unit'></field> 
-			<field name='prox' reporter:datatype='int'></field> 
-		</fields> 
-		<links> 
-			<link field='from_org' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='to_org' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Search Result' oils_persist:tablename='search.search_result' oils_obj:fieldmapper='search::search_result' controller='open-ils.cstore' id='ssr' oils_persist:readonly='true'> 
-		<fields oils_persist:sequence='actor.org_unit_proximity_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Relevance' name='rel' reporter:datatype='float'></field> 
-			<field reporter:label='Record' name='record' reporter:datatype='link'></field> 
-			<field reporter:label='Total Results' name='total' reporter:datatype='int'></field> 
-			<field reporter:label='Checked' name='checked' reporter:datatype='int'></field> 
-			<field reporter:label='Visible' name='visible' reporter:datatype='int'></field> 
-			<field reporter:label='Deleted' name='deleted' reporter:datatype='int'></field> 
-			<field reporter:label='Excluded' name='excluded' reporter:datatype='int'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
-	<class oils_obj:fieldmapper='action::survey' reporter:label='Survey' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action.survey' id='asv'> 
-		<fields oils_persist:sequence='action.survey_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Questions' name='questions' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Responses' name='responses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text'></field> 
-			<field reporter:label='Survey End Date/Time' name='end_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Survey ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='OPAC Survey?' name='opac' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Poll Style?' name='poll' reporter:datatype='bool'></field> 
-			<field reporter:label='Is Required?' name='required' reporter:datatype='bool'></field> 
-			<field reporter:label='Survey Start Date/Time' name='start_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Display in User Summary' name='usr_summary' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='responses' reltype='has_many' class='asvr' key='survey' map=''></link> 
-			<link field='questions' reltype='has_many' class='asvq' key='survey' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='ADMIN_SURVEY'></create> 
-                <retrieve></retrieve> 
-                <update context_field='owner' permission='ADMIN_SURVEY'></update> 
-                <delete context_field='owner' permission='ADMIN_SURVEY'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_address' reporter:label='Org Address' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.org_address' id='aoa'> 
-		<fields oils_persist:sequence='actor.org_address_id_seq' oils_persist:primary='id'> 
-			<field name='address_type' reporter:datatype='text'></field> 
-			<field name='city' reporter:datatype='text'></field> 
-			<field name='country' reporter:datatype='text'></field> 
-			<field name='county' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='org_unit' reporter:datatype='org_unit'></field> 
-			<field name='post_code' reporter:datatype='text'></field> 
-			<field name='state' reporter:datatype='text'></field> 
-			<field name='street1' reporter:datatype='text'></field> 
-			<field name='street2' reporter:datatype='text'></field> 
-			<field name='valid' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='org_unit' permission='CREATE_ORG_ADDRESS'></create> 
-                <retrieve></retrieve> 
-                <update context_field='org_unit' permission='UPDATE_ORG_ADDRESS'></update> 
-                <delete context_field='org_unit' permission='DELETE_ORG_ADDRESS'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Hold Request' oils_persist:tablename='action.hold_request' reporter:core='true' oils_obj:fieldmapper='action::hold_request' controller='open-ils.cstore' id='ahr'> 
-		<fields oils_persist:sequence='action.hold_request_id_seq' oils_persist:primary='id'> 
-			<field name='status' oils_persist:virtual='true'></field> 
-			<field reporter:label='Transit' name='transit' oils_persist:virtual='true'></field> 
-			<field reporter:label='Capture Date/Time' name='capture_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Currently Targeted Copy' name='current_copy'></field> 
-			<field reporter:label='Notify by Email?' name='email_notify' reporter:datatype='bool'></field> 
-			<field reporter:label='Hold Expire Date/Time' name='expire_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Fulfilling Library' name='fulfillment_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Fulfilling Staff' name='fulfillment_staff'></field> 
-			<field reporter:label='Fulfillment Date/Time' name='fulfillment_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Hold Type' name='hold_type' reporter:datatype='text'></field> 
-			<field reporter:label='Holdable Formats (for M-type hold)' name='holdable_formats' reporter:datatype='text'></field> 
-			<field reporter:label='Hold ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Notifications Phone Number' name='phone_notify' reporter:datatype='text'></field> 
-			<field reporter:label='Pickup Library' name='pickup_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Last Targeting Date/Time' name='prev_check_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Requesting Library' name='request_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Request Date/Time' name='request_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Requesting User' name='requestor' reporter:datatype='link'></field> 
-			<field reporter:label='Item Selection Depth' name='selection_depth'></field> 
-			<field reporter:label='Selection Locus' name='selection_ou' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Target Object ID' name='target' reporter:datatype='link'></field> 
-			<field reporter:label='Hold User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Hold Cancel Date/Time' name='cancel_time' reporter:datatype='timestamp'></field> 
-			<field name='notify_time' reporter:datatype='timestamp' oils_persist:virtual='true'></field> 
-			<field name='notify_count' reporter:datatype='int' oils_persist:virtual='true'></field> 
-			<field reporter:label='Notifications' name='notifications' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Bib Record link' name='bib_rec' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Eligible Copies' name='eligible_copies' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Currently Frozen' name='frozen' reporter:datatype='bool'></field> 
-			<field reporter:label='Thaw Date (if frozen)' name='thaw_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Shelf Time' name='shelf_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Cancelation cause' name='cancel_cause' reporter:datatype='link'></field> 
-			<field reporter:label='Cancelation note' name='cancel_note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='fulfillment_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='fulfillment_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='pickup_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='selection_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='requestor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='current_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='request_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='transit' reltype='might_have' class='ahtc' key='hold' map=''></link> 
-			<link field='notifications' reltype='has_many' class='ahn' key='hold' map=''></link> 
-			<link field='eligible_copies' reltype='has_many' class='ahcm' key='hold' map='target_copy'></link> 
-			<link field='bib_rec' reltype='might_have' class='rhrr' key='id' map=''></link> 
-			<link field='cancel_cause' reltype='might_have' class='ahrcc' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Organizational Unit' oils_persist:tablename='actor.org_unit' oils_obj:fieldmapper='actor::org_unit' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='aou'> 
-		<fields oils_persist:sequence='actor.org_unit_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Subordinate Organizational Units' name='children' reporter:datatype='org_unit' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Address' name='billing_address' reporter:datatype='link'></field> 
-			<field reporter:label='Holds Receiving Address' name='holds_address' reporter:datatype='link'></field> 
-			<field reporter:label='Organizational Unit ID' name='id' reporter:datatype='org_unit' reporter:selector='shortname'></field> 
-			<field reporter:label='ILL Receiving Address' name='ill_address' reporter:datatype='link'></field> 
-			<field reporter:label='Mailing Address' name='mailing_address' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Organizational Unit Type' name='ou_type' reporter:datatype='link'></field> 
-			<field reporter:label='Parent Organizational Unit' name='parent_ou' reporter:datatype='link'></field> 
-			<field reporter:label='Short (Policy) Name' name='shortname' reporter:datatype='text'></field> 
-			<field reporter:label='Email Address' name='email' reporter:datatype='text'></field> 
-			<field reporter:label='Phone Number' name='phone' reporter:datatype='text'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-			<field reporter:label='Users' name='users' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Closed Dates' name='closed_dates' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulations' name='circulations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Settings' name='settings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Addresses' name='addresses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Checkins' name='checkins' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Workstations' name='workstations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Reservation Requests' name='resv_requests' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Reservation Pickups' name='resv_pickups' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resource Types' name='rsrc_types' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resources' name='resources' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Resource Attributes' name='rsrc_attrs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Attribute Values' name='attr_vals' reporter:datatype='link' oils_persist:virtual='true'></field> 
- 
-		</fields> 
-		<links> 
-			<link field='billing_address' reltype='has_a' class='aoa' key='id' map=''></link> 
-			<link field='holds_address' reltype='has_a' class='aoa' key='id' map=''></link> 
-			<link field='ou_type' reltype='has_a' class='aout' key='id' map=''></link> 
-			<link field='mailing_address' reltype='has_a' class='aoa' key='id' map=''></link> 
-			<link field='parent_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='ill_address' reltype='has_a' class='aoa' key='id' map=''></link> 
-			<link field='users' reltype='has_many' class='au' key='home_ou' map=''></link> 
-			<link field='closed_dates' reltype='has_many' class='aoucd' key='org_unit' map=''></link> 
-			<link field='children' reltype='has_many' class='aou' key='parent_ou' map=''></link> 
-			<link field='circulations' reltype='has_many' class='circ' key='circ_lib' map=''></link> 
-			<link field='settings' reltype='has_many' class='aous' key='org_unit' map=''></link> 
-			<link field='addresses' reltype='has_many' class='aoa' key='org_unit' map=''></link> 
-			<link field='checkins' reltype='has_many' class='circ' key='checkin_lib' map=''></link> 
-			<link field='workstations' reltype='has_many' class='aws' key='owning_lib' map=''></link> 
-			<link field='distribution_formulas' reltype='has_many' class='acqdf' key='owner' map=''></link> 
-			<link field='distribution_formula_entries' reltype='has_many' class='acqdfe' key='owning_lib' map=''></link> 
-			<link field='resv_requests' reltype='has_many' class='bresv' key='request_lib' map=''></link> 
-			<link field='resv_pickups' reltype='has_many' class='bresv' key='pickup_lib' map=''></link> 
-			<link field='rsrc_types' reltype='has_many' class='brt' key='owner' map=''></link> 
-			<link field='resources' reltype='has_many' class='brsrc' key='owner' map=''></link> 
-			<link field='rsrc_attrs' reltype='has_many' class='bra' key='owner' map=''></link> 
-			<link field='attr_vals' reltype='has_many' class='brav' key='owner' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='parent_ou' permission='CREATE_ORG_UNIT'></create> 
-                <retrieve permission='CREATE_ORG_UNIT UPDATE_ORG_UNIT DELETE_ORG_UNIT'> 
-                    <context field='id'></context> 
-                    <context field='parent_ou'></context> 
-				</retrieve> 
-                <update context_field='id' permission='UPDATE_ORG_UNIT'></update> 
-                <delete context_field='parent_ou' permission='DELETE_ORG_UNIT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='container::call_number_bucket' reporter:label='Call Number Bucket' controller='open-ils.cstore' oils_persist:tablename='container.call_number_bucket' id='ccnb'> 
-		<fields oils_persist:sequence='container.call_number_bucket_id_seq' oils_persist:primary='id'> 
-			<field name='items' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='btype' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='items' reltype='has_many' class='ccnbi' key='bucket' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::call_number_bucket_note' reporter:label='Call Number Bucket Note' controller='open-ils.cstore' oils_persist:tablename='container.call_number_bucket_note' id='ccnbn'> 
-		<fields oils_persist:sequence='container.call_number_bucket_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='bucket' reltype='has_a' class='ccnb' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::stat_cat' reporter:label='Asset Statistical Category' controller='open-ils.cstore' oils_persist:tablename='asset.stat_cat' id='asc'> 
-		<fields oils_persist:sequence='asset.stat_cat_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entries' name='entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Stat Cat ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='entries' reltype='has_many' class='asce' key='stat_cat' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::card' reporter:label='Library Card' controller='open-ils.cstore' oils_persist:tablename='actor.card' id='ac'> 
-		<fields oils_persist:sequence='actor.card_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='IsActive?' name='active' reporter:datatype='bool'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Card ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::stat_cat' reporter:label='User Statistical Category' controller='open-ils.cstore' oils_persist:tablename='actor.stat_cat' id='actsc'> 
-		<fields oils_persist:sequence='actor.stat_cat_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entries' name='entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Stat Cat ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-			<field reporter:label='Owning Library' name='owner' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='entries' reltype='has_many' class='actsce' key='stat_cat' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::series_field_entry' reporter:label='Series Field Entry' controller='open-ils.cstore' oils_persist:tablename='metabib.series_field_entry' id='msefe'> 
-		<fields oils_persist:sequence='metabib.series_field_entry_id_seq' oils_persist:primary='id'> 
-			<field name='field' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::user_bucket' reporter:label='User Bucket' controller='open-ils.cstore' oils_persist:tablename='container.user_bucket' id='cub'> 
-		<fields oils_persist:sequence='container.user_bucket_id_seq' oils_persist:primary='id'> 
-			<field name='items' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='btype' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='items' reltype='has_many' class='cubi' key='bucket' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::user_bucket_note' reporter:label='User Bucket Note' controller='open-ils.cstore' oils_persist:tablename='container.user_bucket_note' id='cubn'> 
-		<fields oils_persist:sequence='container.user_bucket_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='bucket' reltype='has_a' class='cub' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::credit_payment' reporter:label='House Credit Payment' controller='open-ils.cstore' oils_persist:tablename='money.credit_payment' id='mcrp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Accepting Staff Member' name='accepting_usr' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Amount Collected' name='amount_collected' reporter:datatype='money'></field> 
-			<field reporter:label='Pyament ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Payment Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Timestamp' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment link' name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='authority::full_rec' reporter:label='Full Authority Record' controller='open-ils.cstore' oils_persist:tablename='authority.full_rec' id='afr'> 
-		<fields oils_persist:sequence='authority.full_rec_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='ind1'></field> 
-			<field name='ind2'></field> 
-			<field name='record'></field> 
-			<field name='subfield'></field> 
-			<field name='tag'></field> 
-			<field name='value'></field> 
-		</fields> 
-		<links> 
-			<link field='record' reltype='has_a' class='are' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::non_cataloged_type' reporter:label='Non-catalogued Type' controller='open-ils.cstore' oils_persist:tablename='config.non_cataloged_type' id='cnct'> 
-		<fields oils_persist:sequence='config.non_cataloged_type_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Circulation Duration' name='circ_duration' reporter:datatype='interval'></field> 
-			<field reporter:label='Non-cat Type ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='In House?' name='in_house' reporter:datatype='bool'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-		</fields> 
-		<links> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::org_unit_type' reporter:label='Organizational Unit Type' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='actor.org_unit_type' id='aout'> 
-		<fields oils_persist:sequence='actor.org_unit_type_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Subordinate Types' name='children' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Can Have Users?' name='can_have_users' reporter:datatype='bool'></field> 
-			<field reporter:label='Can Have Volumes?' name='can_have_vols' reporter:datatype='bool'></field> 
-			<field reporter:label='Type Depth' name='depth' reporter:datatype='int'></field> 
-			<field reporter:label='Type ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Type Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='OPAC Label' name='opac_label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Parent Type' name='parent' reporter:datatype='link'></field> 
-			<field reporter:label='Org Units' name='org_units' reporter:datatype='org_unit' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='parent' reltype='has_a' class='aout' key='id' map=''></link> 
-			<link field='children' reltype='has_many' class='aout' key='parent' map=''></link> 
-			<link field='org_units' reltype='has_many' class='aou' key='ou_type' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_ORG_TYPE'></create> 
-                <retrieve global_required='true' permission='CREATE_ORG_UNIT UPDATE_ORG_UNIT DELETE_ORG_UNIT'></retrieve> 
-                <update global_required='true' permission='UPDATE_ORG_TYPE'></update> 
-                <delete global_required='true' permission='DELETE_ORG_TYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='biblio::record_note' reporter:label='Bib Record Note' controller='open-ils.cstore' oils_persist:tablename='biblio.record_note' id='bren'> 
-		<fields oils_persist:sequence='biblio.record_note_id_seq' oils_persist:primary='id'> 
-			<field name='create_date' reporter:datatype='timestamp'></field> 
-			<field name='creator' reporter:datatype='link'></field> 
-			<field name='edit_date' reporter:datatype='timestamp'></field> 
-			<field name='editor' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='record' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='record' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::user_circulation_summary' reporter:label='User Circulation Summary' controller='open-ils.cstore' oils_persist:tablename='money.usr_circulation_summary' id='mucs'> 
-		<fields oils_persist:sequence='' oils_persist:primary='usr'> 
-			<field name='balance_owed' reporter:datatype='money'></field> 
-			<field name='total_owed' reporter:datatype='money'></field> 
-			<field name='total_paid' reporter:datatype='money'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::grocery' reporter:label='Grocery Transaction' controller='open-ils.cstore' oils_persist:tablename='money.grocery' id='mg'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Billing Location' name='billing_location' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Timestamp' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Start Timestamp' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billable Transaction link' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='billing_location' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::bib_source' reporter:label='Bib Source' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.bib_source' id='cbs'> 
-		<fields oils_persist:sequence='config.bib_source_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id' reporter:selector='source'></field> 
-			<field name='quality' reporter:datatype='int'></field> 
-			<field name='source' reporter:datatype='text'></field> 
-			<field name='transcendant' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_BIB_SOURCE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='UPDATE_BIB_SOURCE'></update> 
-                <delete global_required='true' permission='DELETE_BIB_SOURCE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::billable_transaction' reporter:label='Billable Transaction' controller='open-ils.cstore' oils_persist:tablename='money.billable_xact' id='mbt'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Start Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Unrecovered Debt' name='unrecovered' reporter:datatype='bool'></field> 
-			<field reporter:label='Grocery Billing link' name='grocery' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulation Billing link' name='circulation' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Line Items' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Line Items' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Summary' name='summary' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='grocery' reltype='might_have' class='mg' key='id' map=''></link> 
-			<link field='circulation' reltype='might_have' class='circ' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-			<link field='summary' reltype='might_have' class='mbts' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::stat_cat_entry' reporter:label='User Stat Cat Entry' controller='open-ils.cstore' oils_persist:tablename='actor.stat_cat_entry' id='actsce'> 
-		<fields oils_persist:sequence='actor.stat_cat_entry_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Entry Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Stat Cat' name='stat_cat' reporter:datatype='link'></field> 
-			<field reporter:label='Entry Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='stat_cat' reltype='has_a' class='actsc' key='id' map=''></link> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::user_bucket_item' reporter:label='User Bucket Item' controller='open-ils.cstore' oils_persist:tablename='container.user_bucket_item' id='cubi'> 
-		<fields oils_persist:sequence='container.user_bucket_item_id_seq' oils_persist:primary='id'> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='target_user' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='pos' reporter:datatype='int'></field> 
-			<field name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='target_user' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='bucket' reltype='has_a' class='cub' key='id' map=''></link> 
-            <link field='notes' reltype='has_many' class='cubin' key='item' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::user_bucket_item_note' reporter:label='User Bucket Item Note' controller='open-ils.cstore' oils_persist:tablename='container.user_bucket_item_note' id='cubin'> 
-		<fields oils_persist:sequence='container.user_bucket_item_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='item' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='item' reltype='has_a' class='cubi' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::user_summary' reporter:label='User Summary' controller='open-ils.cstore' oils_persist:tablename='money.usr_summary' id='mus'> 
-		<fields oils_persist:sequence='' oils_persist:primary='usr'> 
-			<field name='balance_owed' reporter:datatype='money'></field> 
-			<field name='total_owed' reporter:datatype='money'></field> 
-			<field name='total_paid' reporter:datatype='money'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Literary Form' oils_persist:tablename='config.lit_form_map' oils_obj:fieldmapper='config::lit_form_map' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='clfm'> 
-		<fields oils_persist:sequence='' oils_persist:primary='code'> 
-			<field reporter:label='LitF Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='LitF Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='LitF Name' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_MARC_CODE'></create> 
-                <retrieve global_required='true' permission='CREATE_MARC_CODE UPDATE_MARC_CODE DELETE_MARC_CODE'></retrieve> 
-                <update global_required='true' permission='UPDATE_MARC_CODE'></update> 
-                <delete global_required='true' permission='DELETE_MARC_CODE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::work_payment' reporter:label='Work Payment' controller='open-ils.cstore' oils_persist:tablename='money.work_payment' id='mwp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Accepting Staff Member' name='accepting_usr' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Amount Collected' name='amount_collected' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Timestamp' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction ID' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Payment link' name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::goods_payment' reporter:label='Goods Payment' controller='open-ils.cstore' oils_persist:tablename='money.goods_payment' id='mgp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Accepting Staff Member' name='accepting_usr' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Amount Collected' name='amount_collected' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Timestamp' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction ID' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Payment link' name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='action::open_circulation' reporter:label='Open Circulation' controller='open-ils.cstore' oils_persist:tablename='action.open_circulation' id='aoc'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field name='checkin_lib' reporter:datatype='link'></field> 
-			<field name='checkin_staff' reporter:datatype='link'></field> 
-			<field name='checkin_time' reporter:datatype='timestamp'></field> 
-			<field name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field name='circ_staff' reporter:datatype='link'></field> 
-			<field name='desk_renewal' reporter:datatype='bool'></field> 
-			<field name='due_date' reporter:datatype='timestamp'></field> 
-			<field name='duration' reporter:datatype='interval'></field> 
-			<field name='duration_rule' reporter:datatype='link'></field> 
-			<field name='fine_interval' reporter:datatype='interval'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='max_fine' reporter:datatype='money'></field> 
-			<field name='max_fine_rule' reporter:datatype='link'></field> 
-			<field name='opac_renewal' reporter:datatype='bool'></field> 
-			<field name='phone_renewal' reporter:datatype='bool'></field> 
-			<field name='recuring_fine' reporter:datatype='money'></field> 
-			<field name='recuring_fine_rule' reporter:datatype='link'></field> 
-			<field name='renewal_remaining' reporter:datatype='int'></field> 
-			<field name='stop_fines' reporter:datatype='text'></field> 
-			<field name='stop_fines_time' reporter:datatype='timestamp'></field> 
-			<field name='target_copy' reporter:datatype='link'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-			<field name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field name='xact_start' reporter:datatype='timestamp'></field> 
-			<field name='circulation' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='circulation' reltype='might_have' class='circ' key='id' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link> 
-			<link field='recuring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::subject_field_entry' reporter:label='Subject Field Entry' controller='open-ils.cstore' oils_persist:tablename='metabib.subject_field_entry' id='msfe'> 
-		<fields oils_persist:sequence='metabib.subject_field_entry_id_seq' oils_persist:primary='id'> 
-			<field name='field' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='config::rules::recuring_fine' reporter:label='Recurring Fine Rule' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.rule_recuring_fine' id='crrf'> 
-		<fields oils_persist:sequence='config.rule_recuring_fine_id_seq' oils_persist:primary='id'> 
-			<field name='high' reporter:datatype='money'></field> 
-			<field name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field name='low' reporter:datatype='money'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='normal' reporter:datatype='money'></field> 
-			<field name='recurance_interval' reporter:datatype='interval'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_RECURING_FINE_RULE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_RECURING_FINE_RULE'></update> 
-                <delete global_required='true' permission='ADMIN_RECURING_FINE_RULE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::check_payment' reporter:label='Check Payment' controller='open-ils.cstore' oils_persist:tablename='money.check_payment' id='mckp'> 
-		<fields oils_persist:sequence='money.payment_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Accepting Staff Member' name='accepting_usr' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Amount Collected' name='amount_collected' reporter:datatype='money'></field> 
-			<field reporter:label='Workstation link' name='cash_drawer' reporter:datatype='link'></field> 
-			<field reporter:label='Check Number' name='check_number' reporter:datatype='int'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Timestamp' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction link' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Payment link' name='payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='payment' reltype='might_have' class='mp' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='cash_drawer' reltype='has_a' class='aws' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Item' oils_persist:tablename='asset.copy' reporter:core='true' oils_obj:fieldmapper='asset::copy' controller='open-ils.cstore open-ils.pcrud' id='acp'> 
-		<fields oils_persist:sequence='asset.copy_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Statistical Category Entries' name='stat_cat_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Age Hold Protection' name='age_protect' reporter:datatype='link'></field> 
-			<field reporter:label='Alert Message' name='alert_message' reporter:datatype='text'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Call Number/Volume' name='call_number' reporter:datatype='link'></field> 
-			<field reporter:label='Circulation Type (MARC)' name='circ_as_type' reporter:datatype='text'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulation Modifier' name='circ_modifier' reporter:datatype='link'></field> 
-			<field reporter:label='Can Circulate' name='circulate' reporter:datatype='bool'></field> 
-			<field reporter:label='Copy Number on Volume' name='copy_number' reporter:datatype='text'></field> 
-			<field reporter:label='Creation Date/Time' name='create_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Creating User' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Is Deleted' name='deleted' reporter:datatype='bool'></field> 
-			<field reporter:label='Is Deposit Required' name='deposit' reporter:datatype='bool'></field> 
-			<field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='money'></field> 
-			<field reporter:label='Precat Dummy Author' name='dummy_author' reporter:datatype='text'></field> 
-			<field reporter:label='Precat Dummy Title' name='dummy_title' reporter:datatype='text'></field> 
-			<field reporter:label='Last Edit Date/Time' name='edit_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Editing User' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Fine Level' name='fine_level' reporter:datatype='int'></field> 
-			<field reporter:label='Is Holdable' name='holdable' reporter:datatype='bool'></field> 
-			<field reporter:label='Copy ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Loan Duration' name='loan_duration' reporter:datatype='int'></field> 
-			<field reporter:label='Shelving Location' name='location' reporter:datatype='link'></field> 
-			<field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-			<field reporter:label='Price' name='price' reporter:datatype='money'></field> 
-			<field reporter:label='Is Reference' name='ref' reporter:datatype='bool'></field> 
-			<field reporter:label='Copy Status' name='status' reporter:datatype='link'></field> 
-			<field reporter:label='Copy Notes' name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Stat-Cat entry maps' name='stat_cat_entry_copy_maps' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulations' name='circulations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Total Circulations' name='total_circ_count' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Holds' name='holds' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='age_protect' reltype='has_a' class='crahp' key='id' map=''></link> 
-			<link field='call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-			<link field='location' reltype='has_a' class='acpl' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='status' reltype='has_a' class='ccs' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='holds' reltype='has_many' class='ahcm' key='target_copy' map='hold'></link> 
-			<link field='stat_cat_entry_copy_maps' reltype='has_many' class='ascecm' key='owning_copy' map=''></link> 
-			<link field='notes' reltype='has_many' class='acpn' key='owning_copy' map=''></link> 
-			<link field='stat_cat_entries' reltype='has_many' class='ascecm' key='owning_copy' map='stat_cat_entry'></link> 
-			<link field='circulations' reltype='has_many' class='circ' key='target_copy' map=''></link> 
-			<link field='total_circ_count' reltype='might_have' class='erfcc' key='id' map=''></link> 
-			<link field='circ_modifier' reltype='has_a' class='ccm' key='code' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='CREATE_COPY'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='UPDATE_COPY'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </update> 
-                <delete permission='DELETE_COPY'> 
-                    <context field='owning_lib' link='call_number'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='config::rules::age_hold_protect' reporter:label='Age Hold Protection Rule' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.rule_age_hold_protect' id='crahp'> 
-		<fields oils_persist:sequence='config.rule_age_hold_protect_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Item Age' name='age' reporter:datatype='interval'></field> 
-			<field reporter:label='Rule ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Rule Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Allowed Proximity' name='prox' reporter:datatype='int'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_AGE_PROTECT_RULE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_AGE_PROTECT_RULE'></update> 
-                <delete global_required='true' permission='ADMIN_AGE_PROTECT_RULE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='config::rules::max_fine' reporter:label='Max Fine Rule' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='config.rule_max_fine' id='crmf'> 
-		<fields oils_persist:sequence='config.rule_max_fine_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Max Fine Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Rule ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Rule Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Is Percent' name='is_percent' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_MAX_FINE_RULE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_MAX_FINE_RULE'></update> 
-                <delete global_required='true' permission='ADMIN_MAX_FINE_RULE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::grp_tree' reporter:label='Permission Group' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='permission.grp_tree' id='pgt'> 
-		<fields oils_persist:sequence='permission.grp_tree_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Child Groups' name='children' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Group ID' name='id' reporter:datatype='id' reporter:selector='name'></field> 
-			<field reporter:label='Group Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Parent Group' name='parent' reporter:datatype='link'></field> 
-			<field reporter:label='User Expiration Interval' name='perm_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Required Permission' name='application_perm' reporter:datatype='text'></field> 
-			<field reporter:label='Is User Group' name='usergroup' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='parent' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='children' reltype='has_many' class='pgt' key='parent' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_PERM'></create> 
-                <retrieve global_required='true' permission='STAFF_LOGIN'></retrieve> 
-                <update global_required='true' permission='UPDATE_PERM'></update> 
-                <delete global_required='true' permission='DELETE_PERM'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='action::survey_answer' reporter:label='Survey Answer' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='action.survey_answer' id='asva'> 
-		<fields oils_persist:sequence='action.survey_answer_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Responses using this Answer' name='responses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Answer Text' name='answer' reporter:datatype='text'></field> 
-			<field reporter:label='Answer ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Question' name='question' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='question' reltype='has_a' class='asvq' key='id' map=''></link> 
-			<link field='responses' reltype='has_many' class='asvr' key='answer' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_SURVEY'> 
-                    <context jump='survey' field='owner' link='question'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update permission='ADMIN_SURVEY'> 
-                    <context jump='survey' field='owner' link='question'></context> 
-                </update> 
-                <delete permission='ADMIN_SURVEY'> 
-                    <context jump='survey' field='owner' link='question'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Non-catalogued Circulation' oils_persist:tablename='action.non_cataloged_circulation' reporter:core='true' oils_obj:fieldmapper='action::non_cataloged_circulation' controller='open-ils.cstore' id='ancc'> 
-		<fields oils_persist:sequence='action.non_cataloged_circulation_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulation Date/Time' name='circ_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Non-cat Circulation ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Non-cat Item Type' name='item_type' reporter:datatype='link'></field> 
-			<field reporter:label='Patron' name='patron' reporter:datatype='link'></field> 
-			<field reporter:label='Circulating Staff' name='staff' reporter:datatype='link'></field> 
-			<field reporter:label='Virtual Due Date/Time' name='duedate' reporter:datatype='timestamp' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='item_type' reltype='has_a' class='cnct' key='id' map=''></link> 
-			<link field='staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='patron' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='money::open_user_circulation_summary' reporter:label='Open User Circulation Summary' controller='open-ils.cstore' oils_persist:tablename='money.open_usr_circulation_summary' id='moucs'> 
-		<fields oils_persist:sequence='' oils_persist:primary='usr'> 
-			<field name='balance_owed' reporter:datatype='money'></field> 
-			<field name='total_owed' reporter:datatype='money'></field> 
-			<field name='total_paid' reporter:datatype='money'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='action::unfulfilled_hold_list' reporter:label='Unfulfilled Hold Targets' controller='open-ils.cstore' oils_persist:tablename='action.unfulfilled_hold_list' id='aufh'> 
-		<fields oils_persist:sequence='action.unfulfilled_hold_list_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Non-fulfilling Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Non-fulfilling Copy' name='current_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Retargeting Date/Time' name='fail_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Hold' name='hold' reporter:datatype='link'></field> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-		</fields> 
-		<links> 
-			<link field='hold' reltype='has_a' class='ahr' key='id' map=''></link> 
-			<link field='current_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='metabib::title_field_entry' reporter:label='Title Field Entry' controller='open-ils.cstore' oils_persist:tablename='metabib.title_field_entry' id='mtfe'> 
-		<fields oils_persist:sequence='metabib.title_field_entry_id_seq' oils_persist:primary='id'> 
-			<field name='field' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='source' reporter:datatype='link'></field> 
-			<field name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='source' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='field' reltype='has_a' class='cmf' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='actor::stat_cat_entry_user_map' reporter:label='User Statistical Category Entry' controller='open-ils.cstore' oils_persist:tablename='actor.stat_cat_entry_usr_map' id='actscecm'> 
-		<fields oils_persist:sequence='actor.stat_cat_entry_usr_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Statistical Category' name='stat_cat' reporter:datatype='link'></field> 
-			<field reporter:label='Entry Text' name='stat_cat_entry' reporter:datatype='text'></field> 
-			<field reporter:label='User' name='target_usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='target_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='stat_cat' reltype='has_a' class='actsc' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::grp_perm_map' reporter:label='Group Permission Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='permission.grp_perm_map' id='pgpm'> 
-		<fields oils_persist:sequence='permission.grp_perm_map_id_seq' oils_persist:primary='id'> 
-			<field name='depth' reporter:datatype='int'></field> 
-			<field name='grantable' reporter:datatype='bool'></field> 
-			<field name='grp' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='perm' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='perm' reltype='has_a' class='ppl' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ASSIGN_GROUP_PERM'></create> 
-                <retrieve global_required='true' permission='ASSIGN_GROUP_PERM UPDATE_GROUP_PERM REMOVE_GROUP_PERM'></retrieve> 
-                <update global_required='true' permission='UPDATE_GROUP_PERM'></update> 
-                <delete global_required='true' permission='REMOVE_GROUP_PERM'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='container::copy_bucket' reporter:label='Copy Bucket' controller='open-ils.cstore' oils_persist:tablename='container.copy_bucket' id='ccb'> 
-		<fields oils_persist:sequence='container.copy_bucket_id_seq' oils_persist:primary='id'> 
-			<field name='items' oils_persist:virtual='true'></field> 
-			<field name='btype' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='pub' reporter:datatype='bool'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='items' reltype='has_many' class='ccbi' key='bucket' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::copy_bucket_note' reporter:label='Copy Bucket Note' controller='open-ils.cstore' oils_persist:tablename='container.copy_bucket_note' id='ccbn'> 
-		<fields oils_persist:sequence='container.copy_bucket_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='bucket' reltype='has_a' class='ccb' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::usr_work_ou_map' reporter:label='User Work Org Unit Map' controller='open-ils.cstore' oils_persist:tablename='permission.usr_work_ou_map' id='puwoum'> 
-		<fields oils_persist:sequence='permission.usr_work_ou_map_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='int'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-			<field name='work_ou' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='work_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::usr_perm_map' reporter:label='User Permission Map' controller='open-ils.cstore' oils_persist:tablename='permission.usr_perm_map' id='pupm'> 
-		<fields oils_persist:sequence='permission.usr_perm_map_id_seq' oils_persist:primary='id'> 
-			<field name='depth' reporter:datatype='int'></field> 
-			<field name='grantable' reporter:datatype='bool'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='perm' reporter:datatype='link'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='perm' reltype='has_a' class='ppl' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::usr_object_perm_map' reporter:label='User Object Permission Map' controller='open-ils.cstore' oils_persist:tablename='permission.usr_object_perm_map' id='puopm'> 
-		<fields oils_persist:sequence='permission.usr_object_perm_map_id_seq' oils_persist:primary='id'> 
-			<field name='object_id' reporter:datatype='text'></field> 
-			<field name='grantable' reporter:datatype='bool'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='perm' reporter:datatype='link'></field> 
-			<field name='usr' reporter:datatype='link'></field> 
-			<field name='object_type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='perm' reltype='has_a' class='ppl' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Payments: All' oils_persist:tablename='money.payment_view' reporter:core='true' oils_obj:fieldmapper='money::payment' controller='open-ils.cstore' id='mp'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Date/Time' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text'></field> 
-			<field reporter:label='Billable Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Voided?' name='voided' reporter:datatype='bool'></field> 
-			<field reporter:label='Cash Payment Detail' name='cash_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Card Payment Detail' name='credit_card_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Payment Detail' name='credit_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Check Payment Detail' name='check_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Work Payment Detail' name='work_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Forgive Payment Detail' name='forgive_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Goods Payment Detail' name='goods_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='cash_payment' reltype='might_have' class='mcp' key='id' map=''></link> 
-			<link field='credit_card_payment' reltype='might_have' class='mccp' key='id' map=''></link> 
-			<link field='credit_payment' reltype='might_have' class='mcrp' key='id' map=''></link> 
-			<link field='check_payment' reltype='might_have' class='mckp' key='id' map=''></link> 
-			<link field='work_payment' reltype='might_have' class='mwp' key='id' map=''></link> 
-			<link field='forgive_payment' reltype='might_have' class='mfp' key='id' map=''></link> 
-			<link field='goods_payment' reltype='might_have' class='mgp' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Payments: Brick-and-mortar' oils_persist:tablename='money.bnm_payment_view' reporter:core='true' oils_obj:fieldmapper='money::bnm_payment' controller='open-ils.cstore' id='mbp'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Date/Time' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text'></field> 
-			<field reporter:label='Billable Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Voided?' name='voided' reporter:datatype='bool'></field> 
-			<field reporter:label='Cash Payment Detail' name='cash_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Card Payment Detail' name='credit_card_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Payment Detail' name='credit_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Check Payment Detail' name='check_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Work Payment Detail' name='work_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Forgive Payment Detail' name='forgive_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Goods Payment Detail' name='goods_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='cash_payment' reltype='might_have' class='mcp' key='id' map=''></link> 
-			<link field='credit_card_payment' reltype='might_have' class='mccp' key='id' map=''></link> 
-			<link field='credit_payment' reltype='might_have' class='mcrp' key='id' map=''></link> 
-			<link field='check_payment' reltype='might_have' class='mckp' key='id' map=''></link> 
-			<link field='work_payment' reltype='might_have' class='mwp' key='id' map=''></link> 
-			<link field='forgive_payment' reltype='might_have' class='mfp' key='id' map=''></link> 
-			<link field='goods_payment' reltype='might_have' class='mgp' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Payments: Non-drawer Staff' oils_persist:tablename='money.non_drawer_payment_view' reporter:core='true' oils_obj:fieldmapper='money::non_drawer_payment' controller='open-ils.reporter' id='mndp'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Date/Time' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text'></field> 
-			<field reporter:label='Billable Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Voided?' name='voided' reporter:datatype='bool'></field> 
-			<field reporter:label='Work Payment Detail' name='work_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Forgive Payment Detail' name='forgive_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Goods Payment Detail' name='goods_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Payment Detail' name='credit_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='work_payment' reltype='might_have' class='mwp' key='id' map=''></link> 
-			<link field='forgive_payment' reltype='might_have' class='mfp' key='id' map=''></link> 
-			<link field='goods_payment' reltype='might_have' class='mgp' key='id' map=''></link> 
-			<link field='credit_payment' reltype='might_have' class='mcrp' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='Payments: Desk' oils_persist:tablename='money.desk_payment_view' reporter:core='true' oils_obj:fieldmapper='money::desk_payment' controller='open-ils.cstore' id='mdp'> 
-		<fields oils_persist:sequence='' oils_persist:primary='id'> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Payment ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Payment Date/Time' name='payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Payment Type' name='payment_type' reporter:datatype='text'></field> 
-			<field reporter:label='Billable Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Accepting User' name='accepting_usr'></field> 
-			<field reporter:label='Cash Drawer' name='cash_drawer' reporter:datatype='link'></field> 
-			<field reporter:label='Voided?' name='voided' reporter:datatype='bool'></field> 
-			<field reporter:label='Cash Payment' name='cash_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credit Card Payment' name='credit_card_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Check Payment' name='check_payment' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='cash_payment' reltype='might_have' class='mcp' key='id' map=''></link> 
-			<link field='credit_card_payment' reltype='might_have' class='mccp' key='id' map=''></link> 
-			<link field='check_payment' reltype='might_have' class='mckp' key='id' map=''></link> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-			<link field='accepting_usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='cash_drawer' reltype='has_a' class='aws' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::biblio_record_entry_bucket_item' reporter:label='Biblio Record Entry Bucket Item' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_item' id='cbrebi'> 
-		<fields oils_persist:sequence='container.biblio_record_entry_bucket_item_id_seq' oils_persist:primary='id'> 
-			<field name='bucket' reporter:datatype='link'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='target_biblio_record_entry' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='pos' reporter:datatype='int'></field> 
-			<field name='notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='target_biblio_record_entry' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='bucket' reltype='has_a' class='cbreb' key='id' map=''></link> 
-            <link field='notes' reltype='has_many' class='cbrebin' key='item' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='container::biblio_record_entry_bucket_item_note' reporter:label='Biblio Record Entry Bucket Item Note' controller='open-ils.cstore' oils_persist:tablename='container.biblio_record_entry_bucket_item_note' id='cbrebin'> 
-		<fields oils_persist:sequence='container.biblio_record_entry_bucket_item_note_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='item' reporter:datatype='link'></field> 
-			<field name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='item' reltype='has_a' class='cbrebi' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='asset::stat_cat_entry' reporter:label='Item Stat Cat Entry' controller='open-ils.cstore' oils_persist:tablename='asset.stat_cat_entry' id='asce'> 
-		<fields oils_persist:sequence='asset.stat_cat_entry_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='int'></field> 
-			<field reporter:label='Entry Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Stat Cat' name='stat_cat' reporter:datatype='link'></field> 
-			<field reporter:label='Value' name='value' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links> 
-			<link field='stat_cat' reltype='has_a' class='asc' key='id' map=''></link> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Hold Request Cancel Cause' oils_persist:tablename='action.hold_request_cancel_cause' oils_obj:fieldmapper='action::hold_request_cancel_cause' controller='open-ils.cstore open-ils.reporter-store open-ils.pcrud' id='ahrcc' oils_persist:restrict_primary='100'> 
-		<fields oils_persist:sequence='action.hold_request_cancel_cause_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Cause ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Cause Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_HOLD_CANCEL_CAUSE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_HOLD_CANCEL_CAUSE'></update> 
-                <delete global_required='true' permission='ADMIN_HOLD_CANCEL_CAUSE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
- 
-	<class reporter:label='Reservation Transit' oils_persist:tablename='action.reservation_transit_copy' reporter:core='true' oils_obj:fieldmapper='action::reservation_transit_copy' controller='open-ils.cstore open-ils.pcrud' id='artc'> 
-		<fields oils_persist:sequence='action.transit_copy_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Copy Status at Transit' name='copy_status' reporter:datatype='link'></field> 
-			<field reporter:label='Destination Library' name='dest' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Receive Date/Time' name='dest_recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Reservation requiring Transit' name='reservation' reporter:datatype='link'></field> 
-			<field reporter:label='Transit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Is Persistent?' name='persistant_transfer' reporter:datatype='bool'></field> 
-			<field reporter:label='Previous Stop' name='prev_hop' reporter:datatype='link'></field> 
-			<field reporter:label='Sending Library' name='source' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Send Date/Time' name='source_send_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transited Copy' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Base Transit' name='transit_copy' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='transit_copy' reltype='might_have' class='atc' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='brsrc' key='id' map=''></link> 
-			<link field='source' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_status' reltype='has_a' class='ccs' key='id' map=''></link> 
-			<link field='dest' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='reservation' reltype='has_a' class='bresv' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='TRANSIT_COPY'> 
-                    <context field='owner' link='target_copy'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update context_field='dest source' permission='UPDATE_TRANSIT'></update> 
-                <delete context_field='dest source' permission='DELETE_TRANSIT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Hold Transit' oils_persist:tablename='action.hold_transit_copy' reporter:core='true' oils_obj:fieldmapper='action::hold_transit_copy' controller='open-ils.cstore open-ils.pcrud' id='ahtc'> 
-		<fields oils_persist:sequence='action.transit_copy_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Copy Status at Transit' name='copy_status' reporter:datatype='link'></field> 
-			<field reporter:label='Destination Library' name='dest' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Receive Date/Time' name='dest_recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Hold requiring Transit' name='hold' reporter:datatype='link'></field> 
-			<field reporter:label='Transit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Is Persistent?' name='persistant_transfer' reporter:datatype='bool'></field> 
-			<field reporter:label='Previous Stop' name='prev_hop' reporter:datatype='link'></field> 
-			<field reporter:label='Sending Library' name='source' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Send Date/Time' name='source_send_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transited Copy' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Base Transit' name='transit_copy' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='transit_copy' reltype='might_have' class='atc' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='source' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_status' reltype='has_a' class='ccs' key='id' map=''></link> 
-			<link field='dest' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='hold' reltype='has_a' class='ahr' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='TRANSIT_COPY'> 
-                    <context field='circ_lib' link='target_copy'></context> 
-                </create> 
-                <retrieve></retrieve> 
-                <update context_field='dest source' permission='UPDATE_TRANSIT'></update> 
-                <delete context_field='dest source' permission='DELETE_TRANSIT'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='money::billing' reporter:label='Billing Line Item' controller='open-ils.cstore' oils_persist:tablename='money.billing' id='mb'> 
-		<fields oils_persist:sequence='money.billing_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Billing Timestamp' name='billing_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Legacy Billing Type' name='billing_type' reporter:datatype='text'></field> 
-			<field reporter:label='Billing ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Void Timestamp' name='void_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Voided?' name='voided' reporter:datatype='bool'></field> 
-			<field reporter:label='Voiding Staff Member' name='voider' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction' name='xact' reporter:datatype='link'></field> 
-			<field reporter:label='Type' name='btype' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='xact' reltype='has_a' class='mbt' key='id' map=''></link> 
-			<link field='voider' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='btype' reltype='has_a' class='cbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='permission::usr_grp_map' reporter:label='User Group Map' controller='open-ils.cstore' oils_persist:tablename='permission.usr_grp_map' id='pugm'> 
-		<fields oils_persist:sequence='permission.usr_grp_map_id_seq' oils_persist:primary='id'> 
-			<field name='grp'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='usr'></field> 
-		</fields> 
-		<links> 
-			<link field='grp' reltype='has_a' class='pgt' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class reporter:label='i18n Core' oils_persist:tablename='config.i18n_core' oils_obj:fieldmapper='config::i18n_core' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='i18n'> 
-		<fields oils_persist:sequence='config.i18n_core_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='fq_field' reporter:datatype='text'></field> 
-			<field name='identity_value' reporter:datatype='text'></field> 
-			<field name='translation' reporter:datatype='text'></field> 
-			<field name='string' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='translation' reltype='has_a' class='i18n_l' key='code' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_TRANSLATION'></create> 
-                <retrieve global_required='true' permission='CREATE_TRANSLATION UPDATE_TRANSLATION DELETE_TRANSLATION'></retrieve> 
-                <update global_required='true' permission='UPDATE_TRANSLATION'></update> 
-                <delete global_required='true' permission='DELETE_TRANSLATION'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='IDL Field Doc' oils_persist:tablename='config.idl_field_doc' oils_obj:fieldmapper='config::idl_field_doc' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='fdoc'> 
-		<fields oils_persist:sequence='config.idl_field_doc_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='fm_class' reporter:datatype='text'></field> 
-			<field name='field' reporter:datatype='text'></field> 
-			<field name='owner' reporter:datatype='org_unit'></field> 
-			<field name='string' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='ADMIN_FIELD_DOC'></create> 
-                <retrieve></retrieve> 
-                <update context_field='owner' permission='ADMIN_FIELD_DOC'></update> 
-                <delete context_field='owner' permission='ADMIN_FIELD_DOC'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Locale' oils_persist:tablename='config.i18n_locale' oils_obj:fieldmapper='config::i18n_locale' controller='open-ils.cstore open-ils.pcrud' oils_persist:field_safe='true' id='i18n_l'> 
-		<fields oils_persist:primary='code'> 
-			<field name='code' reporter:datatype='id'></field> 
-			<field name='marc_code' reporter:datatype='text'></field> 
-			<field name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='CREATE_LOCALE'></create> 
-                <retrieve global_required='true' permission='CREATE_LOCALE UPDATE_LOCALE DELETE_LOCALE'></retrieve> 
-                <update global_required='true' permission='UPDATE_LOCALE'></update> 
-                <delete global_required='true' permission='DELETE_LOCALE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class reporter:label='Billing Type' oils_persist:tablename='config.billing_type' oils_obj:fieldmapper='config::billing_type' controller='open-ils.cstore open-ils.pcrud' id='cbt' oils_persist:restrict_primary='100'> 
-		<fields oils_persist:sequence='config.billing_type_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Org Unit' name='owner' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Default Price' name='default_price' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='CREATE_BILLING_TYPE'></create> 
-                <retrieve context_field='owner' permission='VIEW_BILLING_TYPE CREATE_BILLING_TYPE UPDATE_BILLING_TYPE DELETE_BILLING_TYPE'></retrieve> 
-                <update context_field='owner' permission='UPDATE_BILLING_TYPE'></update> 
-                <delete context_field='owner' permission='DELETE_BILLING_TYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='acq::currency_type' reporter:label='Currency Type' controller='open-ils.cstore open-ils.reporter-store open-ils.pcrud' oils_persist:tablename='acq.currency_type' id='acqct'> 
-		<fields oils_persist:primary='code'> 
-			<field reporter:label='Currency Code' name='code' reporter:datatype='text' reporter:selector='label'></field> 
-			<field reporter:label='Currency Label' name='label' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		</fields> 
-		<links></links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create global_required='true' permission='ADMIN_CURRENCY_TYPE'></create> 
-                <retrieve></retrieve> 
-                <update global_required='true' permission='ADMIN_CURRENCY_TYPE'></update> 
-                <delete global_required='true' permission='ADMIN_CURRENCY_TYPE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::exchange_rate' reporter:label='Exchange Rate' controller='open-ils.cstore open-ils.pcrud open-ils.reporter-store' oils_persist:tablename='acq.exchange_rate' id='acqexr'> 
-		<fields oils_persist:sequence='acq.exchange_rate_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Exchange Rate ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='From Currency' name='from_currency' reporter:datatype='link'></field> 
-			<field reporter:label='To Currency' name='to_currency' reporter:datatype='link'></field> 
-			<field reporter:label='Ratio' name='ratio'></field> 
-		</fields> 
-		<links> 
-			<link field='from_currency' reltype='has_a' class='acqct' key='code' map=''></link> 
-			<link field='to_currency' reltype='has_a' class='acqct' key='code' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_CURRENCY_TYPE'></create> 
-				<retrieve></retrieve> 
-				<update global_required='true' permission='ADMIN_CURRENCY_TYPE'></update> 
-				<delete global_required='true' permission='ADMIN_CURRENCY_TYPE'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::provider' reporter:label='Provider' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.provider' id='acqpro'> 
-		<fields oils_persist:sequence='acq.provider_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Provider ID' name='id' reporter:datatype='id' reporter:selector='code'></field> 
-			<field reporter:label='Provider Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Currency' name='currency_type' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Holdings Tag' name='holding_tag' reporter:datatype='text'></field> 
-			<field reporter:label='Addresses' name='addresses' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='currency_type' reltype='has_a' class='acqct' key='code' map=''></link> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='addresses' reltype='has_many' class='acqpa' key='provider' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='ADMIN_PROVIDER'></create> 
-                <retrieve context_field='owner' permission='ADMIN_PROVIDER MANAGE_PROVIDER VIEW_PROVIDER'></retrieve> 
-                <update context_field='owner' permission='ADMIN_PROVIDER'></update> 
-                <delete context_field='owner' permission='ADMIN_PROVIDER'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::provider_address' reporter:label='Provider Address' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.provider_address' id='acqpa'> 
-		<fields oils_persist:sequence='acq.provider_address_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Address Type' name='address_type' reporter:datatype='text'></field> 
-			<field reporter:label='City' name='city' reporter:datatype='text'></field> 
-			<field reporter:label='Country' name='country' reporter:datatype='text'></field> 
-			<field reporter:label='County' name='county' reporter:datatype='text'></field> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-			<field reporter:label='Post Code' name='post_code' reporter:datatype='text'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Street 1' name='street1' reporter:datatype='text'></field> 
-			<field reporter:label='Street 2' name='street2' reporter:datatype='text'></field> 
-			<field reporter:label='Is Valid?' name='valid' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </create> 
-                <retrieve permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </retrieve> 
-                <update permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </update> 
-                <delete permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::provider_contact' reporter:label='Provider Contact' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.provider_contact' id='acqpc'> 
-		<fields oils_persist:sequence='acq.provider_contact_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Role' name='role' reporter:datatype='text'></field> 
-			<field reporter:label='Email' name='email' reporter:datatype='text'></field> 
-			<field reporter:label='Phone' name='phone' reporter:datatype='text'></field> 
-        </fields> 
-		<links> 
-			<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </create> 
-                <retrieve permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </retrieve> 
-                <update permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </update> 
-                <delete permission='ADMIN_PROVIDER'> 
-                    <context field='owner' link='provider'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-    </class> 
-	<class oils_obj:fieldmapper='acq::provider_contact_address' reporter:label='Provider Contact Address' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.provider_contact_address' id='acqpca'> 
-		<fields oils_persist:sequence='acq.provider_contact_address_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Type' name='address_type' reporter:datatype='text'></field> 
-			<field reporter:label='City' name='city' reporter:datatype='text'></field> 
-			<field reporter:label='Country' name='country' reporter:datatype='text'></field> 
-			<field reporter:label='County' name='county' reporter:datatype='text'></field> 
-			<field reporter:label='Address ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Postal Code' name='post_code' reporter:datatype='text'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Street (1)' name='street1' reporter:datatype='text'></field> 
-			<field reporter:label='Street (2)' name='street2' reporter:datatype='text'></field> 
-			<field reporter:label='Contact' name='contact' reporter:datatype='link'></field> 
-			<field reporter:label='Valid Address?' name='valid' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='contact' reltype='has_a' class='acqpc' key='id' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create permission='ADMIN_PROVIDER'> 
-                    <context jump='provider' field='owner' link='contact'></context> 
-                </create> 
-                <retrieve permission='ADMIN_PROVIDER'> 
-                    <context jump='provider' field='owner' link='contact'></context> 
-                </retrieve> 
-                <update permission='ADMIN_PROVIDER'> 
-                    <context jump='provider' field='owner' link='contact'></context> 
-                </update> 
-                <delete permission='ADMIN_PROVIDER'> 
-                    <context jump='provider' field='owner' link='contact'></context> 
-                </delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::fiscal_calendar' reporter:label='Fiscal Calendar' controller='open-ils.cstore' oils_persist:tablename='acq.fiscal_calendar' id='acqfc'> 
-		<fields oils_persist:sequence='acq.fiscal_calendar_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Fiscal Calendar ID' name='id' reporter:datatype='id' reporter:selector='id'></field> 
-			<field reporter:label='Fiscal Calendar Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Years' name='years' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-            <link field='years' reltype='has_many' class='acqfy' key='calendar' map=''></link> 
-		</links> 
-		
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></create> 
-				<retrieve global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></retrieve> 
-				<update global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></update> 
-				<delete global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::fiscal_year' reporter:label='Fiscal Year' controller='open-ils.cstore' oils_persist:tablename='acq.fiscal_year' id='acqfy'> 
-		<fields oils_persist:sequence='acq.fiscal_year_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Fiscal Year ID' name='id' reporter:datatype='id' reporter:selector='id'></field> 
-			<field reporter:label='Calendar' name='calendar' reporter:datatype='link'></field> 
-			<field reporter:label='Fiscal Year' name='year' reporter:datatype='int'></field> 
-			<field reporter:label='Year Begin' name='year_begin' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Year End' name='year_end' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='calendar' reltype='has_a' class='acqfc' key='id' map=''></link> 
-		</links> 
-		
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></create> 
-				<retrieve global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></retrieve> 
-				<update global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></update> 
-				<delete global_required='true' permission='ADMIN_ACQ_FISCAL_YEAR'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::funding_source' reporter:label='Funding Source' controller='open-ils.cstore open-ils.reporter-store open-ils.pcrud' oils_persist:tablename='acq.funding_source' id='acqfs'> 
-		<fields oils_persist:sequence='acq.funding_source_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Funding Source ID' name='id' reporter:datatype='id' reporter:selector='code'></field> 
-			<field reporter:label='Funding Source Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Currency' name='currency_type' reporter:datatype='link' oils_persist:primitive='string'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field name='summary' oils_persist:virtual='true'></field> 
-			<field reporter:label='Allocations' name='allocations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Credits' name='credits' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='currency_type' reltype='has_a' class='acqct' key='code' map=''></link> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='allocations' reltype='has_many' class='acqfa' key='funding_source' map=''></link> 
-            <link field='credits' reltype='has_many' class='acqfscred' key='funding_source' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='owner' permission='ADMIN_FUNDING_SOURCE'></create> 
-                <retrieve context_field='owner' permission='ADMIN_FUNDING_SOURCE MANAGE_FUNDING_SOURCE VIEW_FUNDING_SOURCE'></retrieve> 
-                <update context_field='owner' permission='ADMIN_FUNDING_SOURCE'></update> 
-                <delete context_field='owner' permission='ADMIN_FUNDING_SOURCE'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::funding_source_credit' reporter:label='Credit to Funding Source' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.funding_source_credit' id='acqfscred'> 
-		<fields oils_persist:sequence='acq.funding_source_credit_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Credit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Funding Source ID' name='funding_source' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='funding_source' reltype='has_a' class='acqfs' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::fund_debit' reporter:label='Debit From Fund' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.fund_debit' id='acqfdeb'> 
-		<fields oils_persist:sequence='acq.fund_debit_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Debit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Origin Amount' name='origin_amount' reporter:datatype='money'></field> 
-			<field reporter:label='Origin Currency' name='origin_currency_type' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Encumbrance' name='encumbrance' reporter:datatype='text'></field> 
-			<field reporter:label='Debit Type' name='debit_type' reporter:datatype='text'></field> 
-			<field reporter:label='Create Time' name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-			<link field='origin_currency_type' reltype='has_a' class='acqct' key='code' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::fund' reporter:label='Fund' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.fund' id='acqf'> 
-		<fields oils_persist:sequence='acq.fund_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Fund ID' name='id' reporter:datatype='id' reporter:selector='code'></field> 
-			<field reporter:label='Org Unit' name='org' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Year' name='year' reporter:datatype='int'></field> 
-			<field reporter:label='Currency Type' name='currency_type' reporter:datatype='link'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field name='summary' oils_persist:virtual='true'></field> 
-			<field reporter:label='Allocations' name='allocations' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Debits' name='debits' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Tags' name='tags' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='org' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='currency_type' reltype='has_a' class='acqct' key='code' map=''></link> 
-            <link field='allocations' reltype='has_many' class='acqfa' key='fund' map=''></link> 
-            <link field='debits' reltype='has_many' class='acqfdeb' key='fund' map=''></link> 
-            <link field='tags' reltype='has_many' class='acqftm' key='fund' map=''></link> 
-		</links> 
-        <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-            <actions> 
-                <create context_field='org' permission='ADMIN_ACQ_FUND'></create> 
-                <retrieve context_field='org' permission='ADMIN_ACQ_FUND VIEW_FUND MANAGE_FUND'></retrieve> 
-                <update context_field='org' permission='ADMIN_ACQ_FUND'></update> 
-                <delete context_field='org' permission='ADMIN_ACQ_FUND'></delete> 
-            </actions> 
-        </permacrud> 
-	</class> 
- 
-	<class reporter:label='Fund Allocation Total' oils_persist:tablename='acq.fund_allocation_total' oils_obj:fieldmapper='acq::fund_allocation_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfat' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Total Allocation Amount' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Total Debit from Fund' oils_persist:tablename='acq.fund_debit_total' oils_obj:fieldmapper='acq::fund_debit_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfdt' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Total Debit Amount' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Total Fund Encumbrance' oils_persist:tablename='acq.fund_encumbrance_total' oils_obj:fieldmapper='acq::fund_encumbrance_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfet' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Total Encumbrance Amount' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Total Spent from Fund' oils_persist:tablename='acq.fund_spent_total' oils_obj:fieldmapper='acq::fund_spent_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfst' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Total Spent Amount' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Fund Combined Balance' oils_persist:tablename='acq.fund_combined_balance' oils_obj:fieldmapper='acq::fund_combined_balance' controller='open-ils.cstore open-ils.reporter-store' id='acqfcb' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Balance after Spent and Encumbered' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Total Credit to Funding Source' oils_persist:tablename='acq.funding_source_credit_total' oils_obj:fieldmapper='acq::funding_source_credit_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfsrcct' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='funding_source'> 
-			<field reporter:label='Funding Source' name='funding_source' reporter:datatype='link'></field> 
-			<field reporter:label='Total Credits to Funding Source' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='funding_source' reltype='has_a' class='acqfs' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Total Allocation to Funding Source' oils_persist:tablename='acq.funding_source_allocation_total' oils_obj:fieldmapper='acq::funding_source_allocation_total' controller='open-ils.cstore open-ils.reporter-store' id='acqfsrcat' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='funding_source'> 
-			<field reporter:label='Funding Source' name='funding_source' reporter:datatype='link'></field> 
-			<field reporter:label='Total Allocated from Funding Source' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='funding_source' reltype='has_a' class='acqfs' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Funding Source Balance' oils_persist:tablename='acq.funding_source_balance' oils_obj:fieldmapper='acq::funding_source_balance' controller='open-ils.cstore open-ils.reporter-store' id='acqfsrcb' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='funding_source'> 
-			<field reporter:label='Funding Source' name='funding_source' reporter:datatype='link'></field> 
-			<field reporter:label='Balance Remaining' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='funding_source' reltype='has_a' class='acqfs' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Fund Spent Balance' oils_persist:tablename='acq.fund_spent_balance' oils_obj:fieldmapper='acq::fund_spent_balance' controller='open-ils.cstore open-ils.reporter-store' id='acqfsb' oils_persist:readonly='true'> 
-		<fields oils_persist:primary='fund'> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Balance after Spent' name='amount' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::fund_allocation' reporter:label='Fund Allocation' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.fund_allocation' id='acqfa'> 
-		<fields oils_persist:sequence='acq.fund_allocation_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Allocation ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fund' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Funding Source' name='funding_source' reporter:datatype='link'></field> 
-			<field reporter:label='Amount' name='amount' reporter:datatype='money'></field> 
-			<field reporter:label='Percent' name='percent' reporter:datatype='float'></field> 
-			<field reporter:label='Allocating User' name='allocator' reporter:datatype='link'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Create Time' name='create_time' reporter:datatype='timestamp'></field> 
-		</fields> 
-		<links> 
-			<link field='allocator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-			<link field='funding_source' reltype='has_a' class='acqfs' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::picklist' reporter:label='Pick List' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.picklist' id='acqpl'> 
-		<fields oils_persist:sequence='acq.picklist_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Picklist ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Org Unit' name='org_unit' reporter:datatype='link'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Creation Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Edit Time' name='edit_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Entries' name='entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Entry Count' name='entry_count' oils_persist:virtual='true'></field> 
-			<field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Editor' name='editor' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='org_unit' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='entries' reltype='has_many' class='jub' key='picklist' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::purchase_order' reporter:label='Purchase Order' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.purchase_order' id='acqpo'> 
-		<fields oils_persist:sequence='acq.purchase_order_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Purchase Order ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Creation Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Edit Time' name='edit_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Ordering Agency' name='ordering_agency' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Editor' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Order Date' name='order_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Line Items' name='lineitems' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Line Item Count' name='lineitem_count' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Amount Encumbered' name='amount_encumbered' reporter:datatype='float' oils_persist:virtual='true'></field> 
-			<field reporter:label='Amount Spent' name='amount_spent' reporter:datatype='float' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='default_fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-			<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-			<link field='lineitems' reltype='has_many' class='jub' key='purchase_order' map=''></link> 
-			<link field='ordering_agency' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='ordering_agency' permission='CREATE_PURCHASE_ORDER'></create> 
-				<retrieve context_field='ordering_agency' permission='CREATE_PURCHASE_ORDER VIEW_PURCHASE_ORDER'></retrieve> 
-				<update context_field='ordering_agency' permission='CREATE_PURCHASE_ORDER'></update> 
-				<delete context_field='ordering_agency' permission='CREATE_PURCHASE_ORDER'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::po_note' reporter:label='PO Note' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.po_note' id='acqpon'> 
-		<fields oils_persist:sequence='acq.po_note_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='PO Note ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Purchase Order' name='purchase_order' reporter:datatype='link'></field> 
-			<field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Creation Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Edit Time' name='edit_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Editor' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Vote Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='purchase_order' reltype='has_a' class='acqpo' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem' reporter:label='Line Item' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem' id='jub'> 
-		<fields oils_persist:sequence='acq.lineitem_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Lineitem ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Selecting User' name='selector' reporter:datatype='link'></field> 
-			<field reporter:label='Picklist' name='picklist' reporter:datatype='link'></field> 
-			<field reporter:label='Purchase Order' name='purchase_order' reporter:datatype='link'></field> 
-			<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-			<field reporter:label='Creation Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Edit Time' name='edit_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='MARC' name='marc' reporter:datatype='text'></field> 
-			<field reporter:label='Evergreen Bib ID' name='eg_bib_id' reporter:datatype='link'></field> 
-			<field reporter:label='Source Label' name='source_label' reporter:datatype='text'></field> 
-			<field reporter:label='Expected Receive Date' name='expected_recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='State' name='state' reporter:datatype='text'></field> 
-			<field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Editor' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Item Count' name='item_count' reporter:datatype='int' oils_persist:virtual='true'></field> 
-			<field reporter:label='Descriptive Attributes' name='attributes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Line Item Details' name='lineitem_details' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Line Item Notes' name='lineitem_notes' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='selector' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-			<link field='purchase_order' reltype='has_a' class='acqpo' key='id' map=''></link> 
-			<link field='picklist' reltype='has_a' class='acqpl' key='id' map=''></link> 
-			<link field='eg_bib_id' reltype='has_a' class='bre' key='id' map=''></link> 
-			<link field='attributes' reltype='has_many' class='acqlia' key='lineitem' map=''></link> 
-			<link field='lineitem_details' reltype='has_many' class='acqlid' key='lineitem' map=''></link> 
-			<link field='lineitem_notes' reltype='has_many' class='acqlin' key='lineitem' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_note' reporter:label='Line Item Note' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_note' id='acqlin'> 
-		<fields oils_persist:sequence='acq.lineitem_note_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='PO Line Item Note ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Line Item' name='lineitem' reporter:datatype='link'></field> 
-			<field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-			<field reporter:label='Creation Time' name='create_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Edit Time' name='edit_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Editor' name='editor' reporter:datatype='link'></field> 
-			<field reporter:label='Vote Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='editor' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='lineitem' reltype='has_a' class='jub' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_attr' reporter:label='Line Item Attribute' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_attr' id='acqlia'> 
-		<fields oils_persist:sequence='acq.lineitem_attr_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Attribute Value ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Lineitem' name='lineitem' reporter:datatype='link'></field> 
-			<field reporter:label='Type' name='attr_type' reporter:datatype='text'></field> 
-			<field reporter:label='Name' name='attr_name' reporter:datatype='text'></field> 
-			<field reporter:label='Value' name='attr_value' reporter:datatype='text'></field> 
-			<field reporter:label='Definition' name='definition' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='lineitem' reltype='has_a' class='jub' key='id' map=''></link> 
-			<link field='definition' reltype='has_a' class='acqliad' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_detail' reporter:label='Line Item Detail' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_detail' id='acqlid'> 
-		<fields oils_persist:sequence='acq.lineitem_detail_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Item Detail ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='PO Line Item' name='lineitem' reporter:datatype='link'></field> 
-			<field reporter:label='Evergreen Copy ID' name='eg_copy_id' reporter:datatype='link'></field> 
-			<field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='Call Number Label' name='cn_label' reporter:datatype='text'></field> 
-			<field reporter:label='Actual Receive Date' name='recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Fund' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Fund Debit' name='fund_debit' reporter:datatype='link'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Shelving Location' name='location' reporter:datatype='link'></field> 
-			<field reporter:label='Circ Modifier' name='circ_modifier' reporter:datatype='link'></field> 
-			<field reporter:label='Note' name='note' reporter:datatype='text'></field> 
-			<field reporter:label='Collection Code' name='collection_code' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='lineitem' reltype='has_a' class='jub' key='id' map=''></link> 
-			<link field='eg_copy_id' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-			<link field='fund_debit' reltype='has_a' class='acqfdeb' key='id' map=''></link> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='location' reltype='has_a' class='acpl' key='id' map=''></link> 
-			<link field='circ_modifier' reltype='has_a' class='ccm' key='code' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_attr_definition' reporter:label='Line Item Attribute Definition' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_attr_definition' id='acqliad'> 
-		<fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_marc_attr_definition' reporter:label='Line Item MARC Attribute Definition' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_marc_attr_definition' id='acqlimad'> 
-		<fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='XPath' name='xpath' reporter:datatype='text'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_generated_attr_definition' reporter:label='Line Item Generated Attribute Definition' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_generated_attr_definition' id='acqligad'> 
-		<fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='XPath' name='xpath' reporter:datatype='text'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
-	<class oils_obj:fieldmapper='acq::lineitem_usr_attr_definition' reporter:label='Line Item User Attribute Definition' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_usr_attr_definition' id='acqliuad'> 
-		<fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='User' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='acq::lineitem_provider_attr_definition' reporter:label='Line Item Provider Attribute Definition' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.lineitem_provider_attr_definition' id='acqlipad'> 
-	    <fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-		<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-		<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-		<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-		<field reporter:label='XPath' name='xpath' reporter:datatype='text'></field> 
-		<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-		<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-        <field reporter:label='Remove' name='remove' reporter:datatype='text'></field> 
- 
-	    </fields> 
-	    <links> 
-		<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-	    </links> 
-            <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-                <actions> 
-                    <create permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </create> 
-                    <retrieve permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </retrieve> 
-                    <update permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </update> 
-                    <delete permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </delete> 
-                </actions> 
-            </permacrud> 
-	</class> 
-        
-	<class oils_obj:fieldmapper='acq::provider_holding_subfield_map' reporter:label='Provider Holding Subfield Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.provider_holding_subfield_map' id='acqphsm'> 
-	    <fields oils_persist:sequence='acq.provider_holding_subfield_map_id_seq' oils_persist:primary='id'> 
-		<field reporter:label='ID' name='id' reporter:datatype='id'></field> 
-		<field reporter:label='Provider' name='provider' reporter:datatype='link'></field> 
-		<field reporter:label='Name' name='name' reporter:datatype='text'></field> 
-		<field reporter:label='Subfield' name='subfield' reporter:datatype='text'></field> 
-	    </fields> 
-	    <links> 
-		<link field='provider' reltype='has_a' class='acqpro' key='id' map=''></link> 
-	    </links> 
-            <permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-                <actions> 
-                    <create permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </create> 
-                    <retrieve permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </retrieve> 
-                    <update permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </update> 
-                    <delete permission='ADMIN_PROVIDER'> 
-                        <context field='owner' link='provider'></context> 
-                    </delete> 
-                </actions> 
-            </permacrud> 
-	</class> 
-        
-	<class oils_obj:fieldmapper='acq::lineitem_local_attr_definition' reporter:label='Line Item Local Attribute Definition' controller='open-ils.cstore open-ils.reporter-store' oils_persist:tablename='acq.lineitem_local_attr_definition' id='acqlilad'> 
-	    <fields oils_persist:sequence='acq.lineitem_attr_definition_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Definition ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Code' name='code' reporter:datatype='text'></field> 
-			<field reporter:label='Description' name='description' reporter:datatype='text' oils_persist:i18n='true'></field> 
-			<field reporter:label='Is Identifier?' name='ident' reporter:datatype='bool'></field> 
-		</fields> 
-		<links></links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='reporter::output_folder' reporter:label='Output Folder' controller='open-ils.reporter-store' oils_persist:tablename='reporter.output_folder' id='rof'> 
-		<fields oils_persist:sequence='reporter.output_folder_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='parent' reporter:datatype='link'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='shared' reporter:datatype='bool'></field> 
-			<field name='share_with' reporter:datatype='link'></field> 
-			<field name='children' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='outputs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='parent' reltype='has_a' class='rof' key='id' map=''></link> 
-			<link field='children' reltype='has_many' class='rof' key='parent' map=''></link> 
-			<link field='share_with' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='outputs' reltype='has_many' class='rs' key='folder' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::template_folder' reporter:label='Template Folder' controller='open-ils.reporter-store' oils_persist:tablename='reporter.template_folder' id='rtf'> 
-		<fields oils_persist:sequence='reporter.template_folder_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='parent' reporter:datatype='link'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='shared' reporter:datatype='bool'></field> 
-			<field name='share_with' reporter:datatype='link'></field> 
-			<field name='children' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='templates' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='parent' reltype='has_a' class='rtf' key='id' map=''></link> 
-			<link field='children' reltype='has_many' class='rtf' key='parent' map=''></link> 
-			<link field='share_with' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='templates' reltype='has_many' class='rt' key='folder' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::report_folder' reporter:label='Report Folder' controller='open-ils.reporter-store' oils_persist:tablename='reporter.report_folder' id='rrf'> 
-		<fields oils_persist:sequence='reporter.report_folder_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='parent' reporter:datatype='link'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='shared' reporter:datatype='bool'></field> 
-			<field name='share_with' reporter:datatype='link'></field> 
-			<field name='children' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field name='reports' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='parent' reltype='has_a' class='rrf' key='id' map=''></link> 
-			<link field='children' reltype='has_many' class='rrf' key='parent' map=''></link> 
-			<link field='share_with' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='reports' reltype='has_many' class='rr' key='folder' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::template' reporter:label='Template' controller='open-ils.reporter-store' oils_persist:tablename='reporter.template' id='rt'> 
-		<fields oils_persist:sequence='reporter.template_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='data' reporter:datatype='text'></field> 
-			<field name='folder' reporter:datatype='link'></field> 
-			<field name='description' reporter:datatype='text'></field> 
-			<field name='reports' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='folder' reltype='has_a' class='rtf' key='id' map=''></link> 
-			<link field='reports' reltype='has_many' class='rr' key='template' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::report' reporter:label='Report' controller='open-ils.reporter-store' oils_persist:tablename='reporter.report' id='rr'> 
-		<fields oils_persist:sequence='reporter.report_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='owner' reporter:datatype='link'></field> 
-			<field name='create_time' reporter:datatype='timestamp'></field> 
-			<field name='template' reporter:datatype='link'></field> 
-			<field name='data' reporter:datatype='link'></field> 
-			<field name='folder' reporter:datatype='link'></field> 
-			<field name='recur' reporter:datatype='bool'></field> 
-			<field name='recurance' reporter:datatype='interval'></field> 
-			<field name='name' reporter:datatype='text'></field> 
-			<field name='description' reporter:datatype='text'></field> 
-			<field name='runs' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='template' reltype='has_a' class='rt' key='id' map=''></link> 
-			<link field='folder' reltype='has_a' class='rrf' key='id' map=''></link> 
-			<link field='runs' reltype='has_many' class='rs' key='report' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::schedule' reporter:label='Schedule' controller='open-ils.reporter-store' oils_persist:tablename='reporter.schedule' id='rs'> 
-		<fields oils_persist:sequence='reporter.schedule_id_seq' oils_persist:primary='id'> 
-			<field name='id' reporter:datatype='id'></field> 
-			<field name='runner' reporter:datatype='link'></field> 
-			<field name='start_time' reporter:datatype='timestamp'></field> 
-			<field name='complete_time' reporter:datatype='timestamp'></field> 
-			<field name='run_time' reporter:datatype='timestamp'></field> 
-			<field name='email' reporter:datatype='text'></field> 
-			<field name='excel_format' reporter:datatype='bool'></field> 
-			<field name='csv_format' reporter:datatype='bool'></field> 
-			<field name='html_format' reporter:datatype='bool'></field> 
-			<field name='error_code' reporter:datatype='int'></field> 
-			<field name='error_text' reporter:datatype='text'></field> 
-			<field name='report' reporter:datatype='link'></field> 
-			<field name='folder' reporter:datatype='link'></field> 
-			<field name='chart_pie' reporter:datatype='bool'></field> 
-			<field name='chart_bar' reporter:datatype='bool'></field> 
-			<field name='chart_line' reporter:datatype='bool'></field> 
-		</fields> 
-		<links> 
-			<link field='runner' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='report' reltype='has_a' class='rr' key='id' map=''></link> 
-			<link field='folder' reltype='has_a' class='rof' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::materialized_simple_record' reporter:label='Fast Simple Record Extracts' controller='open-ils.reporter-store' oils_persist:tablename='reporter.materialized_simple_record' id='rmsr'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fingerprint' name='fingerprint' reporter:datatype='text'></field> 
-			<field reporter:label='Overall Record Quality' name='quality' reporter:datatype='int'></field> 
-			<field reporter:label='TCN Source' name='tcn_source' reporter:datatype='text'></field> 
-			<field reporter:label='TCN Value' name='tcn_value' reporter:datatype='text'></field> 
-			<field reporter:label='Title Proper (normalized)' name='title' reporter:datatype='text'></field> 
-			<field reporter:label='Author (normalized)' name='author' reporter:datatype='text'></field> 
-			<field reporter:label='Publisher (normalized)' name='publisher' reporter:datatype='text'></field> 
-			<field reporter:label='Publication Year (normalized)' name='pubdate' reporter:datatype='int'></field> 
-			<field reporter:label='ISBN' name='isbn' reporter:datatype='text'></field> 
-			<field reporter:label='ISSN' name='issn' reporter:datatype='text'></field> 
-			<field reporter:label='Full Bibliographic record' name='biblio_record' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='biblio_record' reltype='might_have' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::super_simple_record' reporter:label='Simple Record Extracts' controller='open-ils.reporter-store' oils_persist:tablename='reporter.super_simple_record' id='rssr'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fingerprint' name='fingerprint' reporter:datatype='text'></field> 
-			<field reporter:label='Overall Record Quality' name='quality' reporter:datatype='int'></field> 
-			<field reporter:label='TCN Source' name='tcn_source' reporter:datatype='text'></field> 
-			<field reporter:label='TCN Value' name='tcn_value' reporter:datatype='text'></field> 
-			<field reporter:label='Title Proper (normalized)' name='title' reporter:datatype='text'></field> 
-			<field reporter:label='Author (normalized)' name='author' reporter:datatype='text'></field> 
-			<field reporter:label='Publisher (normalized)' name='publisher' reporter:datatype='text'></field> 
-			<field reporter:label='Publication Year (normalized)' name='pubdate' reporter:datatype='int'></field> 
-			<field reporter:label='ISBN' name='isbn' reporter:datatype='text'></field> 
-			<field reporter:label='ISSN' name='issn' reporter:datatype='text'></field> 
-			<field reporter:label='Full Bibliographic record' name='biblio_record' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='biblio_record' reltype='might_have' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::simple_record' reporter:label='Simple Record' controller='open-ils.reporter-store' oils_persist:tablename='reporter.simple_record' id='rsr'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Record ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Metarecord' name='metarecord' reporter:datatype='link'></field> 
-			<field reporter:label='Fingerprint' name='fingerprint'></field> 
-			<field reporter:label='Overall Record Quality' name='quality' reporter:datatype='int'></field> 
-			<field reporter:label='TCN Source' name='tcn_source' reporter:datatype='text'></field> 
-			<field reporter:label='TCN Value' name='tcn_value' reporter:datatype='text'></field> 
-			<field reporter:label='Title Proper (normalized)' name='title' reporter:datatype='text'></field> 
-			<field reporter:label='Uniform Title (normalized)' name='uniform_title' reporter:datatype='text'></field> 
-			<field reporter:label='Author (normalized)' name='author' reporter:datatype='text'></field> 
-			<field reporter:label='Publisher (normalized)' name='publisher' reporter:datatype='text'></field> 
-			<field reporter:label='Publication Year (normalized)' name='pubdate' reporter:datatype='int'></field> 
-			<field reporter:label='Series Title (normalized)' name='series_title' reporter:datatype='text'></field> 
-			<field reporter:label='Series Statement (normalized)' name='series_statement' reporter:datatype='text'></field> 
-			<field reporter:label='Summary (normalized)' name='summary' reporter:datatype='text'></field> 
-			<field reporter:label='ISBN' name='isbn' reporter:datatype='text'></field> 
-			<field reporter:label='ISSN' name='issn' reporter:datatype='text'></field> 
-			<field reporter:label='Topic Subjects (normalized)' name='topic_subject' reporter:datatype='text'></field> 
-			<field reporter:label='Geographic Subjects (normalized)' name='geographic_subject' reporter:datatype='text'></field> 
-			<field reporter:label='Genres (normalized)' name='genre' reporter:datatype='text'></field> 
-			<field reporter:label='Personal Name Subjects (normalized)' name='name_subject' reporter:datatype='text'></field> 
-			<field reporter:label='Corporate Name Subjects (normalized)' name='corporate_subject' reporter:datatype='text'></field> 
-			<field reporter:label='External URI List (normalized)' name='external_uri' reporter:datatype='text'></field> 
-			<field reporter:label='Full Bibliographic record' name='biblio_record' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='metarecord' reltype='has_a' class='mmr' key='id' map=''></link> 
-			<link field='biblio_record' reltype='might_have' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::user_demographic' reporter:label='User Demographics' controller='open-ils.reporter-store open-ils.cstore' oils_persist:tablename='reporter.demographic' id='rud'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='User ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Date of Birth' name='dob' reporter:datatype='timestamp'></field> 
-			<field reporter:label='General Demographic Division' name='general_division' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='might_have' class='au' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::circulation_type' reporter:label='Circulation Type' controller='open-ils.reporter-store open-ils.cstore' oils_persist:tablename='reporter.circ_type' id='rcirct'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Circulation ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Circulation Type' name='type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='might_have' class='circ' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::hold_request_record' reporter:label='Hold Request Record' controller='open-ils.reporter-store' oils_persist:tablename='reporter.hold_request_record' id='rhrr'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Hold ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Hold Target' name='target' reporter:datatype='int'></field> 
-			<field reporter:label='Hold Request Type' name='hold_type' reporter:datatype='text'></field> 
-			<field reporter:label='Target Bib Record' name='bib_record' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='might_have' class='ahr' key='id' map=''></link> 
-			<link field='bib_record' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::xact_billing_totals' reporter:label='Transaction Billing Totals' controller='open-ils.reporter-store' oils_persist:tablename='reporter.xact_billing_totals' id='rxbt'> 
-		<fields oils_persist:primary='xact'> 
-			<field reporter:label='Transaction ID' name='xact' reporter:datatype='int'></field> 
-			<field reporter:label='Unvoided Billing Amount' name='unvoided' reporter:datatype='int'></field> 
-			<field reporter:label='Voided Billing Amount' name='voided' reporter:datatype='money'></field> 
-			<field reporter:label='Total Billing Amount' name='total' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='xact' reltype='might_have' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='reporter::xact_paid_totals' reporter:label='Transaction Paid Totals' controller='open-ils.reporter-store' oils_persist:tablename='reporter.xact_paid_totals' id='rxpt'> 
-		<fields oils_persist:primary='xact'> 
-			<field reporter:label='Transaction ID' name='xact' reporter:datatype='int'></field> 
-			<field reporter:label='Unvoided Paid Amount' name='unvoided' reporter:datatype='int'></field> 
-			<field reporter:label='Voided (Returned) Paid Amount' name='voided' reporter:datatype='money'></field> 
-			<field reporter:label='Total Paid Amount' name='total' reporter:datatype='money'></field> 
-		</fields> 
-		<links> 
-			<link field='xact' reltype='might_have' class='mbt' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='extend_reporter::global_bibs_by_holding_update' reporter:label='Bib IDs by Holding Add/Delete Time (OCLC batch update)' controller='open-ils.reporter-store' oils_persist:tablename='extend_reporter.global_bibs_by_holding_update' id='ergbhu'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Bib ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Update Time' name='holding_update' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Update Type' name='update_type' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='has_a' class='bre' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='extend_reporter::full_circ_count' reporter:label='Total Circulation Count, Including Legacy' controller='open-ils.reporter-store' oils_persist:tablename='extend_reporter.full_circ_count' id='erfcc'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Copy ID' name='id' reporter:datatype='int'></field> 
-			<field reporter:label='Total Circulation Count' name='circ_count' reporter:datatype='int'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='has_a' class='acp' key='id' map=''></link> 
-		</links> 
-	</class> 
-	<class oils_obj:fieldmapper='acq::distribution_formula' reporter:label='Distribution Formula' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.distribution_formula' id='acqdf'> 
-		<fields oils_persist:sequence='acq.distribution_formula_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Formula ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Formula Owner' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Formula Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Skip Count' name='skip_count' reporter:datatype='int'></field> 
-			<field reporter:label='Entries' name='entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='entries' reltype='has_many' class='acqdfe' key='formula' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owner' permission='ADMIN_ACQ_DISTRIB_FORMULA'></create> 
-				<retrieve context_field='owner' permission='ADMIN_ACQ_DISTRIB_FORMULA'></retrieve> 
-				<update context_field='owner' permission='ADMIN_ACQ_DISTRIB_FORMULA'></update> 
-				<delete context_field='owner' permission='ADMIN_ACQ_DISTRIB_FORMULA'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='acq::distribution_formula_entry' reporter:label='Distribution Formula Entry' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.distribution_formula_entry' id='acqdfe'> 
-		<fields oils_persist:sequence='acq.distribution_formula_entry_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Formula ID' name='formula' reporter:datatype='link'></field> 
-			<field reporter:label='Position' name='position' reporter:datatype='int'></field> 
-			<field reporter:label='Item Count' name='item_count' reporter:datatype='int'></field> 
-			<field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Location' name='location' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='formula' reltype='has_a' class='acqdf' key='id' map=''></link> 
-			<link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='location' reltype='has_a' class='acpl' key='id' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create permission='ADMIN_ACQ_DISTRIB_FORMULA'> 
-					<context field='owner' link='formula'></context> 
-				</create> 
-				<retrieve permission='ADMIN_ACQ_DISTRIB_FORMULA'> 
-					<context field='owner' link='formula'></context> 
-				</retrieve> 
-				<update permission='ADMIN_ACQ_DISTRIB_FORMULA'> 
-					<context field='owner' link='formula'></context> 
-				</update> 
-				<delete permission='ADMIN_ACQ_DISTRIB_FORMULA'> 
-					<context field='owner' link='formula'></context> 
-				</delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
- 
-	
-	
-	
-	<class reporter:label='Classic Circulation View' oils_persist:tablename='reporter.classic_current_circ' reporter:core='true' oils_obj:fieldmapper='reporter::classic_current_circ' controller='open-ils.reporter-store' id='rccc'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Circulation' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Library Circulation Location Short (Policy) Name' name='circ_lib' reporter:datatype='text'></field> 
-			<field reporter:label='Library Circulation Location Link' name='circ_lib_id' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulation Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text'></field> 
-			<field reporter:label='Copy Link' name='copy_id' reporter:datatype='link'></field> 
-			<field reporter:label='Circ Modifier' name='circ_modifier' reporter:datatype='text'></field> 
-			<field reporter:label='Owning Library Short (Policy) Name' name='owning_lib_name' reporter:datatype='text'></field> 
-			<field reporter:label='Item Language' name='language' reporter:datatype='text'></field> 
-			<field reporter:label='Literary Form' name='lit_form' reporter:datatype='text'></field> 
-			<field reporter:label='MARC Form' name='item_form' reporter:datatype='text'></field> 
-			<field reporter:label='MARC Type' name='item_type' reporter:datatype='text'></field> 
-			<field reporter:label='Shelving Location' name='shelving_location' reporter:datatype='text'></field> 
-			<field reporter:label='Patron Profile Group' name='profile_group' reporter:datatype='text'></field> 
-			<field reporter:label='Patron Age Demographic' name='demographic_general_division' reporter:datatype='text'></field> 
-			<field reporter:label='Call Number Link' name='call_number' reporter:datatype='link'></field> 
-			<field reporter:label='Call Number Label' name='call_number_label' reporter:datatype='text'></field> 
-			<field reporter:label='Call Number Dewey/Prefix' name='dewey' reporter:datatype='text'></field> 
-			<field reporter:label='Patron Link' name='patron_id' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Home Library Link' name='patron_home_lib' reporter:datatype='link'></field> 
-			<field reporter:label='Patron Home Library Short (Policy) Name' name='patron_home_lib_shortname' reporter:datatype='text'></field> 
-			<field reporter:label='Patron County' name='patron_county' reporter:datatype='text'></field> 
-			<field reporter:label='Patron City' name='patron_city' reporter:datatype='text'></field> 
-			<field reporter:label='Patron ZIP Code' name='patron_zip' reporter:datatype='text'></field> 
-			<field reporter:label='Legacy CAT1 Link' name='stat_cat_1' reporter:datatype='link'></field> 
-			<field reporter:label='Legacy CAT2 Link' name='stat_cat_2' reporter:datatype='link'></field> 
-			<field reporter:label='Dewey Range - Tens' name='dewey_range_tens' reporter:datatype='text'></field> 
-			<field reporter:label='Dewey Range - Hundreds' name='dewey_range_hundreds' reporter:datatype='text'></field> 
-			<field reporter:label='Dewey Block - Tens' name='dewey_block_tens' reporter:datatype='text'></field> 
-			<field reporter:label='Dewey Block - Hundreds' name='dewey_block_hundreds' reporter:datatype='text'></field> 
-			<field reporter:label='Legacy CAT1 Value' name='stat_cat_1_value' reporter:datatype='text'></field> 
-			<field reporter:label='Legacy CAT2 Value' name='stat_cat_2_value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='id' reltype='has_a' class='circ' key='id' map=''></link> 
-			<link field='copy_id' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='patron_id' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib_id' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='call_number' reltype='has_a' class='acn' key='id' map=''></link> 
-			<link field='patron_home_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='stat_cat_1' reltype='has_a' class='rsce1' key='id' map=''></link> 
-			<link field='stat_cat_2' reltype='has_a' class='rsce2' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='reporter::legacy_cat1' reporter:label='CAT1 Entry' controller='open-ils.reporter-store open-ils.cstore' oils_persist:tablename='reporter.legacy_cat1' id='rsce1'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id' reporter:selector='value'></field> 
-			<field reporter:label='Entry Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Entry Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class oils_obj:fieldmapper='reporter::legacy_cat2' reporter:label='CAT2 Entry' controller='open-ils.reporter-store open-ils.cstore' oils_persist:tablename='reporter.legacy_cat2' id='rsce2'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Entry ID' name='id' reporter:datatype='id' reporter:selector='value'></field> 
-			<field reporter:label='Entry Owner' name='owner' reporter:datatype='link'></field> 
-			<field reporter:label='Entry Value' name='value' reporter:datatype='text'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Classic Open Transaction Summary' oils_persist:tablename='reporter.classic_current_billing_summary' reporter:core='true' oils_obj:fieldmapper='reporter::classic_current_billing_summary' controller='open-ils.reporter-store' id='rccbs'> 
-		<fields oils_persist:primary='id'> 
-			<field reporter:label='Transaction ID' name='id' reporter:datatype='id'></field> 
- 
-			<field reporter:label='Billing Location Short (Policy) Name' name='billing_location_shortname' reporter:datatype='text'></field> 
-			<field reporter:label='Billing Location Name' name='billing_location_name' reporter:datatype='text'></field> 
-			<field reporter:label='Billing Location Link' name='billing_location' reporter:datatype='org_unit'></field> 
- 
-			<field reporter:label='User Home Library Short (Policy) Name' name='usr_home_ou_shortname' reporter:datatype='text'></field> 
-			<field reporter:label='User Home Library Name' name='usr_home_ou_name' reporter:datatype='text'></field> 
-			<field reporter:label='User Home Library Link' name='usr_home_ou' reporter:datatype='org_unit'></field> 
- 
-			<field reporter:label='User Barcode' name='barcode' reporter:datatype='text'></field> 
-			<field reporter:label='User Link' name='usr' reporter:datatype='link'></field> 
- 
-			<field reporter:label='Transaction Start Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction End Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Type' name='xact_type' reporter:datatype='text'></field> 
- 
-			<field reporter:label='Total Paid' name='total_paid' reporter:datatype='money'></field> 
-			<field reporter:label='Total Billed' name='total_owed' reporter:datatype='money'></field> 
- 
-			<field reporter:label='Last Payment Date/Time' name='last_payment_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Payment Note' name='last_payment_note' reporter:datatype='text'></field> 
-			<field reporter:label='Last Payment Type' name='last_payment_type' reporter:datatype='text'></field> 
- 
-			<field reporter:label='Last Billing Date/Time' name='last_billing_ts' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Last Billing Note' name='last_billing_note' reporter:datatype='text'></field> 
-			<field reporter:label='Last Billing Type' name='last_billing_type' reporter:datatype='text'></field> 
- 
-			<field reporter:label='User Age Demographic' name='demographic_general_division' reporter:datatype='text'></field> 
-			<field reporter:label='User County' name='patron_county' reporter:datatype='text'></field> 
-			<field reporter:label='User City' name='patron_city' reporter:datatype='text'></field> 
-			<field reporter:label='User ZIP Code' name='patron_zip' reporter:datatype='text'></field> 
- 
-			<field reporter:label='Balance Owed' name='balance_owed' reporter:datatype='money'></field> 
-			<field reporter:label='User Profile Group' name='profile_group' reporter:datatype='text'></field> 
- 
-		</fields> 
-		<links> 
-			<link field='id' reltype='has_a' class='mbt' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='billing_location' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='usr_home_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Inter-system Copy Transit' reporter:core='true' oils_obj:fieldmapper='action::intersystem_transit_copy' controller='open-ils.reporter-store' id='iatc' oils_persist:readonly='true'> 
-		<oils_persist:source_definition> 
- 
-			SELECT	t.*
-			  FROM	action.transit_copy t
-				JOIN actor.org_unit AS s ON (t.source = s.id)
-				JOIN actor.org_unit AS d ON (t.dest = d.id)
-			  WHERE	s.parent_ou &lt;&gt; d.parent_ou
- 
-		</oils_persist:source_definition> 
-		<fields oils_persist:sequence='action.transit_copy_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Pretransit Copy Status' name='copy_status' reporter:datatype='bool'></field> 
-			<field reporter:label='Destination' name='dest' reporter:datatype='link'></field> 
-			<field reporter:label='Receive Date/Time' name='dest_recv_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transit ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Is Persistent? (unused)' name='persistant_transfer' reporter:datatype='bool'></field> 
-			<field reporter:label='Previous Hop (unused)' name='prev_hop' reporter:datatype='link'></field> 
-			<field reporter:label='Source' name='source' reporter:datatype='link'></field> 
-			<field reporter:label='Send Date/Time' name='source_send_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transited Copy' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Hold Transit' name='hold_transit_copy' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='hold_transit_copy' reltype='might_have' class='ahtc' key='id' map=''></link> 
-			<link field='source' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='copy_status' reltype='has_a' class='ccs' key='id' map=''></link> 
-			<link field='dest' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-		</links> 
-	</class> 
- 
-	<class reporter:label='Overdue Circulation' oils_persist:tablename='reporter.overdue_circs' reporter:core='true' oils_obj:fieldmapper='reporter::overdue_circs' controller='open-ils.reporter-store' id='rodcirc'> 
-		<fields oils_persist:sequence='money.billable_xact_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Check In Library' name='checkin_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Check In Staff' name='checkin_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Check In Date/Time' name='checkin_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Circulating Staff' name='circ_staff' reporter:datatype='link'></field> 
-			<field reporter:label='Desk Renewal' name='desk_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Due Date/Time' name='due_date' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulation Duration' name='duration' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ Duration Rule' name='duration_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Fine Interval' name='fine_interval' reporter:datatype='interval'></field> 
-			<field reporter:label='Circ ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Max Fine Amount' name='max_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Max Fine Rule' name='max_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='OPAC Renewal' name='opac_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Phone Renewal' name='phone_renewal' reporter:datatype='bool'></field> 
-			<field reporter:label='Recurring Fine Amount' name='recuring_fine' reporter:datatype='money'></field> 
-			<field reporter:label='Recurring Fine Rule' name='recuring_fine_rule' reporter:datatype='link'></field> 
-			<field reporter:label='Remaining Renewals' name='renewal_remaining' reporter:datatype='int'></field> 
-			<field reporter:label='Fine Stop Reason' name='stop_fines' reporter:datatype='text'></field> 
-			<field reporter:label='Fine Stop Date/Time' name='stop_fines_time' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Circulating Item' name='target_copy' reporter:datatype='link'></field> 
-			<field reporter:label='Patron' name='usr' reporter:datatype='link'></field> 
-			<field reporter:label='Transaction Finish Date/Time' name='xact_finish' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Check Out Date/Time' name='xact_start' reporter:datatype='timestamp'></field> 
-			<field reporter:label='Transaction Billings' name='billings' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Transaction Payments' name='payments' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Base Transaction' name='billable_transaction' reporter:datatype='link' oils_persist:virtual='true'></field> 
-			<field reporter:label='Circulation Type' name='circ_type' reporter:datatype='text' oils_persist:virtual='true'></field> 
-			<field reporter:label='Billing Totals' name='billing_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-			<field reporter:label='Payment Totals' name='payment_total' reporter:datatype='money' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='billable_transaction' reltype='might_have' class='mbt' key='id' map=''></link> 
-			<link field='circ_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='checkin_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='target_copy' reltype='has_a' class='acp' key='id' map=''></link> 
-			<link field='checkin_staff' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='usr' reltype='has_a' class='au' key='id' map=''></link> 
-			<link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='payments' reltype='has_many' class='mp' key='xact' map=''></link> 
-			<link field='billings' reltype='has_many' class='mb' key='xact' map=''></link> 
-			<link field='duration_rule' reltype='has_a' class='crcd' key='name' map=''></link> 
-			<link field='max_fine_rule' reltype='has_a' class='crmf' key='name' map=''></link> 
-			<link field='recuring_fine_rule' reltype='has_a' class='crrf' key='name' map=''></link> 
-			<link field='circ_type' reltype='might_have' class='rcirct' key='id' map=''></link> 
-			<link field='billing_total' reltype='might_have' class='rxbt' key='xact' map=''></link> 
-			<link field='payment_total' reltype='might_have' class='rxpt' key='xact' map=''></link> 
-		</links> 
-	</class> 
- 
-    <class reporter:label='Classic Item List' oils_persist:tablename='reporter.classic_item_list' reporter:core='true' oils_obj:fieldmapper='reporter::classic_item_list' controller='open-ils.reporter-store' id='rocit'> 
-        <fields oils_persist:primary='id'> 
-            <field reporter:label='Title' name='title' reporter:datatype='text'></field> 
-            <field reporter:label='Author' name='author' reporter:datatype='text'></field> 
-            <field reporter:label='Pubdate' name='pubdate' reporter:datatype='text'></field> 
-            <field reporter:label='Copy ID' name='id' reporter:datatype='id'></field> 
-            <field reporter:label='Price' name='price' reporter:datatype='money'></field> 
-            <field reporter:label='Barcode' name='barcode' reporter:datatype='text'></field> 
-            <field reporter:label='Callnumber Label' name='call_number_label' reporter:datatype='text'></field> 
-            <field reporter:label='Dewy Tens' name='dewey_block_tens' reporter:datatype='text'></field> 
-            <field reporter:label='Dewy Hundreds' name='dewey_block_hundreds' reporter:datatype='text'></field> 
-            <field reporter:label='Use Count' name='use_count' reporter:datatype='int'></field> 
-            <field reporter:label='Circ Modifier' name='circ_modifier' reporter:datatype='text'></field> 
-            <field reporter:label='Shelving Location Name' name='shelving_location' reporter:datatype='text'></field> 
-            <field reporter:label='Legacy Stat Cat 1' name='stat_cat_1' reporter:datatype='text'></field> 
-            <field reporter:label='Legacy Stat Cat 2' name='stat_cat_2' reporter:datatype='text'></field> 
-            <field reporter:label='Legacy Stat Cat 1 Value' name='stat_cat_1_value' reporter:datatype='text'></field> 
-            <field reporter:label='Legacy Stat Cat 2 Value' name='stat_cat_2_value' reporter:datatype='text'></field> 
-            <field reporter:label='Edit Date' name='edit_date' reporter:datatype='timestamp'></field> 
-            <field reporter:label='Create Date' name='create_date' reporter:datatype='timestamp'></field> 
-            <field reporter:label='Owning Lib Name' name='owning_lib_name' reporter:datatype='text'></field> 
-            <field reporter:label='Circ Lib Name' name='circ_lib_name' reporter:datatype='text'></field> 
-            <field reporter:label='Owning Lib' name='owning_lib' reporter:datatype='link'></field> 
-            <field reporter:label='Circ Lib' name='circ_lib' reporter:datatype='link'></field> 
-            <field reporter:label='Creator' name='creator' reporter:datatype='link'></field> 
-            <field reporter:label='Age Protection' name='age_protect' reporter:datatype='link'></field> 
-            <field reporter:label='OPAC Visible' name='opac_visible' reporter:datatype='bool'></field> 
-            <field reporter:label='Reference' name='ref' reporter:datatype='bool'></field> 
-            <field reporter:label='Deposit Amount' name='deposit_amount' reporter:datatype='text'></field> 
-            <field reporter:label='Deleted' name='deleted' reporter:datatype='bool'></field> 
-            <field reporter:label='TCN' name='tcn_value' reporter:datatype='text'></field> 
-            <field reporter:label='Status' name='status' reporter:datatype='link'></field> 
-            <field reporter:label='Stop Fines Reason' name='stop_fines' reporter:datatype='text'></field> 
-            <field reporter:label='Due Date' name='due_date' reporter:datatype='timestamp'></field> 
-            <field reporter:label='Patron Barcode' name='patron_barcode' reporter:datatype='text'></field> 
-            <field reporter:label='Patron Name' name='patron_name' reporter:datatype='text'></field> 
-        </fields> 
-        <links> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='creator' reltype='has_a' class='au' key='id' map=''></link> 
-            <link field='age_protect' reltype='has_a' class='crahp' key='id' map=''></link> 
-            <link field='status' reltype='has_a' class='ccs' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Billing by Owning Library' oils_persist:tablename='money.open_circ_balance_by_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_circ_balance_by_owning_lib' controller='open-ils.reporter-store' id='rmocbbol'> 
-        <fields oils_persist:primary='id'> 
-            <field reporter:label='Circulation ID' name='id' reporter:datatype='link'></field> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Type' name='billing_type' reporter:datatype='text'></field> 
-            <field reporter:label='Total Billed' name='billed' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='id' reltype='has_a' class='circ' key='id' map=''></link> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Balance by Owning Library' oils_persist:tablename='money.open_balance_by_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_balance_by_owning_lib' controller='open-ils.reporter-store' id='rmobbol'> 
-        <fields oils_persist:primary='owning_lib'> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Types' name='billing_types' reporter:datatype='text'></field> 
-            <field reporter:label='Balance' name='balance' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Billing by Circulating Library and Owning Library' oils_persist:tablename='money.open_circ_balance_by_circ_and_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_circ_balance_by_circ_and_owning_lib' controller='open-ils.reporter-store' id='rmocbbcol'> 
-        <fields oils_persist:primary='id'> 
-            <field reporter:label='Circulation ID' name='id' reporter:datatype='link'></field> 
-            <field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Type' name='billing_type' reporter:datatype='text'></field> 
-            <field reporter:label='Total Billed' name='billed' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='id' reltype='has_a' class='circ' key='id' map=''></link> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Balance by Circulating Library and Owning Library' oils_persist:tablename='money.open_balance_by_circ_and_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_balance_by_circ_and_owning_lib' controller='open-ils.reporter-store' id='rmobbcol'> 
-        <fields oils_persist:primary='circ_lib'> 
-            <field reporter:label='Circulating Library' name='circ_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Types' name='billing_types' reporter:datatype='text'></field> 
-            <field reporter:label='Balance' name='balance' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='circ_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Billing by User Home Library and Owning Library' oils_persist:tablename='money.open_circ_balance_by_usr_home_and_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_circ_balance_by_usr_home_and_owning_lib' controller='open-ils.reporter-store' id='rmocbbhol'> 
-        <fields oils_persist:primary='id'> 
-            <field reporter:label='Circulation ID' name='id' reporter:datatype='link'></field> 
-            <field reporter:label='User Home Library' name='home_ou' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Type' name='billing_type' reporter:datatype='text'></field> 
-            <field reporter:label='Total Billed' name='billed' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='id' reltype='has_a' class='circ' key='id' map=''></link> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='home_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
- 
-    <class reporter:label='Open Circulation Balance by User Home Library and Owning Library' oils_persist:tablename='money.open_balance_by_usr_home_and_owning_lib' reporter:core='true' oils_obj:fieldmapper='reporter::money::open_balance_by_usr_home_and_owning_lib' controller='open-ils.reporter-store' id='rmobbhol'> 
-        <fields oils_persist:primary='home_ou'> 
-            <field reporter:label='User Home Library' name='home_ou' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Owning Library' name='owning_lib' reporter:datatype='org_unit'></field> 
-            <field reporter:label='Billing Types' name='billing_types' reporter:datatype='text'></field> 
-            <field reporter:label='Balance' name='balance' reporter:datatype='money'></field> 
-        </fields> 
-        <links> 
-            <link field='owning_lib' reltype='has_a' class='aou' key='id' map=''></link> 
-            <link field='home_ou' reltype='has_a' class='aou' key='id' map=''></link> 
-        </links> 
-    </class> 
-	<class oils_obj:fieldmapper='acq::fund_tag' reporter:label='Fund Tag' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.fund_tag' id='acqft'> 
-		<fields oils_persist:sequence='acq.fund_tag_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Fund Tag ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fund Tag Owner' name='owner' reporter:datatype='org_unit'></field> 
-			<field reporter:label='Fund Tag Name' name='name' reporter:datatype='text'></field> 
-			<field reporter:label='Map Entries' name='map_entries' reporter:datatype='link' oils_persist:virtual='true'></field> 
-		</fields> 
-		<links> 
-			<link field='owner' reltype='has_a' class='aou' key='id' map=''></link> 
-			<link field='map_entries' reltype='has_many' class='acqftm' key='fund' map=''></link> 
-		</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-			<actions> 
-				<create context_field='owner' permission='ADMIN_ACQ_FUND_TAG'></create> 
-				<retrieve context_field='owner' permission='ADMIN_ACQ_FUND_TAG ADMIN_ACQ_FUND VIEW_FUND MANAGE_FUND'></retrieve> 
-				<update context_field='owner' permission='ADMIN_ACQ_FUND_TAG'></update> 
-			<delete context_field='owner' permission='ADMIN_ACQ_FUND_TAG'></delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
-	<class oils_obj:fieldmapper='acq::fund_tag_map' reporter:label='Fund Tag Map' controller='open-ils.cstore open-ils.pcrud' oils_persist:tablename='acq.fund_tag_map' id='acqftm'> 
-		<fields oils_persist:sequence='acq.fund_tag_map_id_seq' oils_persist:primary='id'> 
-			<field reporter:label='Map Entry ID' name='id' reporter:datatype='id'></field> 
-			<field reporter:label='Fund ID' name='fund' reporter:datatype='link'></field> 
-			<field reporter:label='Tag ID' name='tag' reporter:datatype='link'></field> 
-		</fields> 
-		<links> 
-			<link field='fund' reltype='has_a' class='acqf' key='id' map=''></link> 
-			<link field='tag' reltype='has_a' class='acqft' key='id' map=''></link> 
-			</links> 
-		<permacrud xmlns='http://open-ils.org/spec/opensrf/IDL/permacrud/v1'> 
-    		<actions> 
-				<create permission='ADMIN_ACQ_FUND_TAG'> 
-					<context field='owner' link='tag'></context> 
-				</create> 
-				<retrieve permission='ADMIN_ACQ_FUND_TAG ADMIN_ACQ_FUND VIEW_FUND MANAGE_FUND'> 
-					<context field='owner' link='tag'></context> 
-				</retrieve> 
-				<update permission='ADMIN_ACQ_FUND_TAG'> 
-					<context field='owner' link='tag'></context> 
-				</update> 
-				<delete permission='ADMIN_ACQ_FUND_TAG'> 
-					<context field='owner' link='tag'></context> 
-				</delete> 
-			</actions> 
-		</permacrud> 
-	</class> 
- 
-	
- 
-</IDL>
\ No newline at end of file

Modified: servres/trunk/conifer/libsystems/evergreen/item_status.py
===================================================================
--- servres/trunk/conifer/libsystems/evergreen/item_status.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/libsystems/evergreen/item_status.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -27,16 +27,10 @@
             item_id = m and m.group(1) or None
             if item_id:
                 marc_url = ("%s/opac/extras/unapi?"
-                            "id=tag:concat.ca,9999:biblio-record_entry/"
+                            "id=tag:concat.ca,9999:biblio-record_entry/" # FIMXE, concat.ca reference!
                             "%s/-&format=marcxml-full" % (support.BASE, item_id))
             xml = unicode(urllib2.urlopen(marc_url).read(), 'utf-8')
         return xml
 
 if __name__ == '__main__':
-    EG_BASE = 'http://%s/' % settings.EVERGREEN_GATEWAY_SERVER
-    support.initialize(EG_BASE)
-    print url_to_marcxml('http://windsor.concat.ca/opac/en-CA/skin/uwin/xml/rdetail.xml?r=1971331&t=evergreen&tp=keyword&l=106&d=1&hc=210&rt=keyword')
-    # from xml.etree import ElementTree as ET
-    # for t in ET.fromstring(bib_id_to_marcxml('2081089')).getiterator():
-    #     print t.text
-
+    support.initialize(settings)

Modified: servres/trunk/conifer/libsystems/evergreen/startup.py
===================================================================
--- servres/trunk/conifer/libsystems/evergreen/startup.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/libsystems/evergreen/startup.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -11,7 +11,8 @@
 import tempfile
 import urllib2
 
-def load_idl(osrf_http, gateway_server, idl_url):
+# http://eg-training.cwmars.org/reports/fm_IDL.xml
+def load_idl(idl_url):
     """
     Loads the fieldmapper IDL, registering class hints for the defined objects
 
@@ -26,10 +27,8 @@
 
     # Get the fm_IDL.xml file from the server
     try:
-	print '%s://%s/%s' % (osrf_http, gateway_server, idl_url)
-        idl = urllib2.urlopen('%s://%s/%s' % 
-            (osrf_http, gateway_server, idl_url)
-        )
+	print idl_url
+        idl = urllib2.urlopen(idl_url)
         idlfile.write(idl.read())
         # rewind to the beginning of the file
         idlfile.seek(0)
@@ -45,14 +44,14 @@
     parser.set_IDL(idlfile)
     parser.parse_IDL()
 
-def ils_startup(EVERGREEN_GATEWAY_SERVER, OSRF_HTTP, IDL_URL):
+def ils_startup(evergreen_server, full_idl_url):
     """
     Put any housekeeping for ILS interactions here, the definitions come from
     local_settings in the call itself rather than an import
     """
     	
     # Set the host for our requests
-    osrf.gateway.GatewayRequest.setDefaultHost(EVERGREEN_GATEWAY_SERVER)
+    osrf.gateway.GatewayRequest.setDefaultHost(evergreen_server)
 
     # Pull all of our object definitions together
-    load_idl(OSRF_HTTP, EVERGREEN_GATEWAY_SERVER, IDL_URL)
+    load_idl(full_idl_url)

Modified: servres/trunk/conifer/libsystems/evergreen/support.py
===================================================================
--- servres/trunk/conifer/libsystems/evergreen/support.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/libsystems/evergreen/support.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -6,29 +6,26 @@
 import re
 import sys, os
 
-LOCALE = 'en-US'
-
 #------------------------------------------------------------
 # parse fm_IDL, to build a field-name-lookup service.
 
 fields_for_class = {}
-BASE = None
+GATE = None
+LOCALE = 'en-US'                # fixme, this shouldn't be here.
 
-def initialize(base):
-    global BASE
-    if not BASE:
-        assert base.endswith('/')
-        BASE = base
-        fields_for_class.update(dict(_fields()))
 
-def _fields():
-    fm_idl_file = os.path.join(os.path.dirname(__file__), 'fm_IDL.xml')
-    f = open(fm_idl_file)
-    # to get around 2.5.x python installations
-    # with open(fm_idl_file) as f:
+def initialize(integration_object):
+    global GATE
+    if not GATE:
+        GATE = integration_object.GATEWAY_URL
+        fm_idl_url = integration_object.IDL_URL
+        fields_for_class.update(dict(_fields(fm_idl_url)))
+
+def _fields(fm_idl_url):
+    print 'Loading fm_IDL from %s' % fm_idl_url
+    f = urllib2.urlopen(fm_idl_url)
     tree = ElementTree.parse(f)
-    # fm_IDL_location = BASE + 'reports/fm_IDL.xml'
-    # tree = ElementTree.parse(urllib2.urlopen(fm_IDL_location))
+    f.close()
     NS = '{http://opensrf.org/spec/IDL/base/v1}'
     for c in tree.findall('%sclass' % NS):
         cid = c.attrib['id']
@@ -58,16 +55,18 @@
     kwargs.update({'service':service, 'method':method})
     params =  ['%s=%s' % (k,quote(v)) for k,v in kwargs.items()] 
     params += ['param=%s' % quote(json.dumps(a)) for a in args]
-    url = '%sosrf-gateway-v1?%s' % (BASE, '&'.join(params))
+    url = '%s?%s' % (GATE, '&'.join(params)) # fixme, OSRF_HTTP, IDL_URL
+    #print '--->', url
     req = urllib2.urlopen(url)
     resp = json.load(req)
-    assert resp['status'] == 200, 'error during evergreen request'
+    if resp['status'] != 200:
+        raise Exception('error during evergren request', resp)
     payload = resp['payload']
-    #print '----', payload
+    #print '<---', payload
     return evergreen_object(payload)
 
-def evergreen_request_single_result(method, *args):
-    resp = evergreen_request(method, *args)
+def evergreen_request_single_result(method, *args, **kwargs):
+    resp = evergreen_request(method, *args, **kwargs)
     if not resp:
         return None
     elif len(resp) > 1:

Modified: servres/trunk/conifer/local_settings.py.example
===================================================================
--- servres/trunk/conifer/local_settings.py.example	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/local_settings.py.example	2011-04-17 21:29:27 UTC (rev 1376)
@@ -1,14 +1,12 @@
 # -*- mode: python -*-
 
-import os
-from here import HERE
-
 DEBUG = False
 
 #----------------------------------------------------------------------
 # You may need to set the PYTHON_EGG_CACHE directory, depending on how
 # you installed Syrup.
 
+# import os
 # os.environ['PYTHON_EGG_CACHE'] = '/tmp/eggs'
 
 #----------------------------------------------------------------------
@@ -32,17 +30,14 @@
 
 #----------------------------------------------------------------------
 # EZproxy integration
-EZPROXY_HOST = 'ezproxy.library.org'
-EZPROXY_PASSWORD = ''
+EZPROXY_HOST     = 'your-ezproxy.example.net'
+EZPROXY_PASSWORD = 'yourpass'
 
 #----------------------------------------------------------------------
-# For campus information - ignore if not applicable for your organization
-CAMPUS_INFO_SERVICE = 'http://sample.campus.info'
-
-#----------------------------------------------------------------------
 # Authentication systems
 
 EVERGREEN_AUTHENTICATION = False # Evergreen ILS authentication
+
 SAKAI_LINKTOOL_AUTHENTICATION  = False # Sakai LMS Linktool authentication
 SAKAI_LINKTOOL_AUTH_URL = 'https://...' # fixme, add documentation
 
@@ -52,38 +47,18 @@
 CAS_AUTHENTICATION = False
 CAS_SERVER_URL     = 'https://uwinid.uwindsor.ca/cas/'
 
-#----------------------------------------------------------------------
-# Stuff that probably belongs in a config table in the database, with
-# a nice UI to maintain it all.
+EVERGREEN_SERVER = 'www.concat.ca'
 
-EVERGREEN_GATEWAY_SERVER = 'www.concat.ca'
-Z3950_CONFIG             = ('zed.concat.ca', 210, 'OWA')  #OWA,OSUL,CONIFER
-
-# Note, in the UWindsor integration, commenting out Z3950_CONFIG or setting it
+# Note, in the Evergreen integration, commenting out Z3950_CONFIG or setting it
 # equal to None will result in OpenSRF being used for catalogue search instead
 # of Z39.50.
 
-#----------------------------------------------------------------------
-# SITE_DEFAULT_ACCESS_LEVEL: by default, all new sites are
-# world-readable. Possible default values are ANON (world readable),
-# LOGIN (any logged in user), MEMBR (only explicit members of the
-# site), and CLOSE (only instructors/owners of the site).
+Z3950_CONFIG     = ('zed.concat.ca', 210, 'OWA')  #OWA,OSUL,CONIFER
 
 #----------------------------------------------------------------------
-# UPDATE_CHOICES: these options are only surfaced when a site
-# enables updates from syrup to the catalogue
-
-UPDATE_CHOICES = [
-        ('One', 'Syrup-only'),
-        ('Cat', 'Catalogue'),
-        ('Zap', 'Remove from Syrup'),
-        ]
-
-#----------------------------------------------------------------------
 # INTEGRATION_CLASS: name of a class to instantiate after the database models
 # have been initialized. This can be used for defining 'hook' functions, and
 # other late initializations. See the 'conifer.syrup.integration' module for
 # more information.
 
-#INTEGRATION_CLASS = 'conifer.integration.uwindsor.UWindsorIntegration'
-
+# INTEGRATION_CLASS = 'conifer.integration.uwindsor.UWindsorIntegration'

Modified: servres/trunk/conifer/plumbing/hooksystem.py
===================================================================
--- servres/trunk/conifer/plumbing/hooksystem.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/plumbing/hooksystem.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -5,7 +5,9 @@
 
 def initialize_hooks(obj):
     global HOOKS
-    assert HOOKS is None
+    assert HOOKS is None, ('Cannot load hooksystem twice. '
+                           'Probably you are importing "models" '
+                           'using two different module paths.')
     HOOKS = obj
 
 def gethook(name, default=None):

Modified: servres/trunk/conifer/settings.py
===================================================================
--- servres/trunk/conifer/settings.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/settings.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -127,7 +127,7 @@
 
 if EVERGREEN_AUTHENTICATION:
     AUTHENTICATION_BACKENDS.append(
-        'conifer.integration.auth_evergreen.dj.EvergreenAuthBackend')
+        'conifer.integration.auth_evergreen.EvergreenAuthBackend')
 
 if SAKAI_LINKTOOL_AUTHENTICATION:
     AUTHENTICATION_BACKENDS.append(

Added: servres/trunk/conifer/syrup/migrations/0015_auto__chg_field_item_evergreen_update.py
===================================================================
--- servres/trunk/conifer/syrup/migrations/0015_auto__chg_field_item_evergreen_update.py	                        (rev 0)
+++ servres/trunk/conifer/syrup/migrations/0015_auto__chg_field_item_evergreen_update.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -0,0 +1,194 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        
+        # Changing field 'Item.evergreen_update'
+        db.alter_column('syrup_item', 'evergreen_update', self.gf('django.db.models.fields.CharField')(max_length=4, blank=True))
+
+
+    def backwards(self, orm):
+        
+        # Changing field 'Item.evergreen_update'
+        db.alter_column('syrup_item', 'evergreen_update', self.gf('django.db.models.fields.CharField')(max_length=4))
+
+
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'syrup.config': {
+            'Meta': {'object_name': 'Config'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}),
+            'value': ('django.db.models.fields.CharField', [], {'max_length': '8192'})
+        },
+        'syrup.course': {
+            'Meta': {'object_name': 'Course'},
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Department']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '1024'})
+        },
+        'syrup.declaration': {
+            'Meta': {'object_name': 'Declaration'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'item': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Item']"}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+        },
+        'syrup.department': {
+            'Meta': {'object_name': 'Department'},
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'service_desk': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.ServiceDesk']"})
+        },
+        'syrup.group': {
+            'Meta': {'object_name': 'Group'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'external_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Site']"})
+        },
+        'syrup.item': {
+            'Meta': {'object_name': 'Item'},
+            'author': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '8192', 'null': 'True', 'blank': 'True'}),
+            'barcode': ('django.db.models.fields.CharField', [], {'max_length': '14', 'null': 'True', 'blank': 'True'}),
+            'bib_id': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}),
+            'circ_desk': ('django.db.models.fields.CharField', [], {'default': "'631'", 'max_length': '5', 'blank': 'True'}),
+            'circ_modifier': ('django.db.models.fields.CharField', [], {'default': "'RSV2'", 'max_length': '10', 'blank': 'True'}),
+            'copyright_status': ('django.db.models.fields.CharField', [], {'default': "'UK'", 'max_length': '2'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'evergreen_update': ('django.db.models.fields.CharField', [], {'default': "'One'", 'max_length': '4', 'blank': 'True'}),
+            'fileobj': ('django.db.models.fields.files.FileField', [], {'default': 'None', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'fileobj_mimetype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'fileobj_origname': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'isbn': ('django.db.models.fields.CharField', [], {'max_length': '17', 'null': 'True', 'blank': 'True'}),
+            'issue': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
+            'item_type': ('django.db.models.fields.CharField', [], {'max_length': '7'}),
+            'itemtype': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1', 'null': 'True', 'blank': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'marcxml': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'orig_callno': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
+            'pages': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
+            'parent_heading': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Item']", 'null': 'True', 'blank': 'True'}),
+            'published': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}),
+            'publisher': ('django.db.models.fields.CharField', [], {'max_length': '8192', 'null': 'True', 'blank': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Site']"}),
+            'source_title': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '8192', 'null': 'True', 'blank': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '8192', 'db_index': 'True'}),
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'volume': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'})
+        },
+        'syrup.membership': {
+            'Meta': {'unique_together': "(('group', 'user'),)", 'object_name': 'Membership'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Group']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'role': ('django.db.models.fields.CharField', [], {'default': "'STUDT'", 'max_length': '6'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+        },
+        'syrup.servicedesk': {
+            'Meta': {'object_name': 'ServiceDesk'},
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+        },
+        'syrup.site': {
+            'Meta': {'unique_together': "(('course', 'start_term', 'owner'),)", 'object_name': 'Site'},
+            'access': ('django.db.models.fields.CharField', [], {'default': "'RESTR'", 'max_length': '5'}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Course']"}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'end_term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'end_term'", 'to': "orm['syrup.Term']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+            'service_desk': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.ServiceDesk']"}),
+            'start_term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'start_term'", 'to': "orm['syrup.Term']"}),
+            'uwindsor_bookbag': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'uwindsor_eres': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'syrup.term': {
+            'Meta': {'object_name': 'Term'},
+            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'finish': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
+            'start': ('django.db.models.fields.DateField', [], {})
+        },
+        'syrup.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'external_memberships_checked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'ils_userid': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+            'last_email_notice': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'null': 'True', 'blank': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+            'wants_email_notices': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'})
+        },
+        'syrup.z3950target': {
+            'Meta': {'object_name': 'Z3950Target'},
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'database': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+            'host': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'port': ('django.db.models.fields.IntegerField', [], {'default': '210'}),
+            'syntax': ('django.db.models.fields.CharField', [], {'default': "'USMARC'", 'max_length': '10'})
+        }
+    }
+
+    complete_apps = ['syrup']

Modified: servres/trunk/conifer/syrup/models.py
===================================================================
--- servres/trunk/conifer/syrup/models.py	2011-04-16 20:46:15 UTC (rev 1375)
+++ servres/trunk/conifer/syrup/models.py	2011-04-17 21:29:27 UTC (rev 1376)
@@ -15,7 +15,19 @@
 from genshi                          import Markup
 
 #----------------------------------------------------------------------
+#
+# Load, but don't instantiate, the local integration module. This way, we can
+# refer to static values in the module.
 
+integration_class = None
+
+if hasattr(settings, 'INTEGRATION_CLASS'):
+    modname, klassname = settings.INTEGRATION_CLASS.rsplit('.', 1) # e.g. 'foo.bar.baz.MyClass'
+    mod = __import__(modname, fromlist=[''])
+    integration_class = getattr(mod, klassname)
+
+#----------------------------------------------------------------------
+
 class BaseModel(m.Model):
     class Meta:
         abstract = True
@@ -277,7 +289,7 @@
         ('MEMBR', _('Accessible to course-site members')),
         ('CLOSE', _('Accessible only to course-site owners'))]
 
-    ACCESS_DEFAULT = getattr(settings, 'SITE_DEFAULT_ACCESS_LEVEL', 'ANON')
+    ACCESS_DEFAULT = getattr(integration_class, 'SITE_DEFAULT_ACCESS_LEVEL', 'ANON')
     assert ACCESS_DEFAULT in [x[0] for x in ACCESS_CHOICES]
 
     access = m.CharField(max_length=5,
@@ -654,11 +666,12 @@
     # TODO: all of the choices should probably go in settings, as per EVERGREEN_UPDATE_CHOICES
 
     # Options for evergreen updates
-    EVERGREEN_UPDATE_CHOICES = settings.UPDATE_CHOICES
+    EVERGREEN_UPDATE_CHOICES = getattr(integration_class, 'UPDATE_CHOICES',
+                                       [('', 'n/a')])
 
-    evergreen_update = m.CharField(max_length=4,
+    evergreen_update = m.CharField(max_length=4, blank=True,
                                    choices=EVERGREEN_UPDATE_CHOICES,
-                                   default='One')
+                                   default=EVERGREEN_UPDATE_CHOICES[0][0])
 
     # As per discussion with Art Rhyno and Joan Dalton, Leddy Library.
     COPYRIGHT_STATUS_CHOICES = [
@@ -942,13 +955,11 @@
         return highlight_re.sub(highlighter, text)
 
 #----------------------------------------------------------------------
-# Activate the local integration module.
+# Activate the local integration module. We loaded the module at the top of
+# models.py, now we instantiate it.
 
-if hasattr(settings, 'INTEGRATION_CLASS'):
-    modname, klassname = settings.INTEGRATION_CLASS.rsplit('.', 1) # e.g. 'foo.bar.baz.MyClass'
-    mod = __import__(modname, fromlist=[''])
-    klass = getattr(mod, klassname)
-    initialize_hooks(klass())
+if integration_class:
+    initialize_hooks(integration_class())
 
 #-----------------------------------------------------------------------------
 # this can't be imported until Membership is defined...



More information about the open-ils-commits mailing list