Managing access to equipment is a large part of public access. Using Drupal for managing video workflow, classes and equipment checkout allows integration that saves staff time while ensuring users and abusing the access to equipment.
Because nothing existed that did everything the initial Open Media Project partners wanted well, a new module was developed from scratch borrowing the best ideas from Facil, Manhattan Neighbor Network's Drupal 4.7 solution, phpLabMan, and ORS. While every solution we looked at other than Facil was already open source, they didn't leverage the latest features of Drupal. That module was named MERCI which stands for Manage Equipment Reservations, Checkout and Inventory.
MERCI relies heavily on Content Construction Kit (CCK) and Date API allowing every location to customize their workflow and generate reports leveraging standard Drupal interfaces that are already well documented. MERCI also relies on several submodules to add functionality. This not only makes it easier to get started without being overwhelmed with options, but makes it easier for developers to contribute. While MERCI was developed with the public access workflow in mind, it was designed to be usable outside the Open Media System so that groups with similar checkout needs (Univerisities, Computer Technology Centers, etc) might contribute to developing new features. MERCI is also designed to support commercial rentals. A great source of revenue for stations struggling to pay staff, but sitting on hundreds of thousands of dollars of equipment.
This page is In Progress. Please check back later for this page of the handbooks.
Resource - Individual items that are unique. Example: Studio A vs. Studio B
Bucket - Items that are identical or so similar that users don't care which one they get. Example: DV Cameras
Accessories - Items that you don't track other than to ensure that if someone takes one or more with other equipment, it is returned. Examples: Batteries, lens cap, usb cable.
Hybrid CCK Module Development - Building a dependency on CCK fucntionality with a module. MERCI adds merci_date to Reservations which leverages all the effort put into Date API.
Locked CCK Fields - Because MERCI includes queries that expect merci_date to be a specific format, the field is locked so it cannot be manipulated by the CCK UI.
Skills
There are no additional system administration skills required to configure the Equipment features of the Open Media System. Equipment Installation and Configuration documentation assumes a basic understanding of Drupal content types, permissions, and Views.
MERCI
content
date
date_api
date_popup
date_timezone
views
taxonomy (in Drupal 6 core)
MERCI Inventory
Node
MERCI Permissions
Node
MERCI Role Rule Override
Node
MERCI Template
None
After enabling the MERCI module, the first thing you need to do is set the hours of operation for your checkout. You will find a link to MERCI's settings in the Site configuration are of your Administer area.
MERCI consists of the main MERCI module and several submodules. The reason for submodules is to break functionality up into more manageable parts. Everything necessary to operate an equipment checkout is included in the main MERCI module.
MERCI Inventory - Makes it easier to manage custom CCK fields between content types. Using MERCI Inventory to directly add common fields to the all of the content types managed in MERCI, creating custom reports in Views is much easier.
MERCI Permissions - Makes it much easier to understand MERCI's permissions. Instead of manually editing the Edit Own and Delete own settings in Drupal default permission grid, users are only click one checkbox for each role they want to have access to the equipment. Users in that role then see the equipment while making a Reservation and are by limited to the content type's default settings for max hours, cost, weekends, etc. After giving a role access to the equipment, MERCI Role/Rule Override can be used to customize the rules for that role.

MERCI Role/Rule Override - Adds a role to rule relation that will allow different rates or max durations for users in different roles. An obvious use for that would be charging users in the member role a lower rate. A less obvious would be to have a role called "Active Projects" that is populated in the background similar to how User Karma works. Users who are listed as contributing members of a project that has added new video in the last 3 weeks (or whatever duration is appropriate at your location) are kept in the Active Project role. If the project isn't contributing video back to the station, the user would either have to pay the commercial rate or convince a staff member to temporarily add them back to the Active Project role to get the lower rate.
MERCI Template - Groups to prepopulate a Reservation form. An example is reserving a studio or an entire computer lab for a class. Reporting is more accurate because each items is actually reserved, but it saves time for the person teaching the class. It is also helpful to know for an instructor to learn a camera or edit station is unavailable because it is reserved or temporarily unavailable while being repaired.
This page is In Progress. Please check back later for this page of the handbooks.
After enabling MERCI you must create content types for the equipment that will be managed. MERCI extends the core content type settings with additional settings. Depending on the modules you have installed, you will find MERCI's settings with Location, Organic Groups, Fivestar, Workflow, and others under the content type description.

Clicking on MERCI expends all of MERCI's options.

Reservable item type allows users to define a content type as a Bucket or a Resource. This is an important decision because it cannot be changed once nodes have been added to the content type. If you are having trouble determining whether something should be a Resource or a Bucket, please refer to the Resource or Bucket section of the documentation.
For checkout MERCI allows equipment to be configured 3 ways on the content type using Automatic Checkout, Automatic Checkin and/or Self Checkout.

If none of these items are checked, the default "initial status" is used for the item when a reservation is first created.

If the Reservation is set to Unconfirmed, staff will need to review those Reservations and confirm them. Unconfirmed reservations still prevent other users from making a conflicting Reservation. To review the list of Reservations that require staff review, [??navigate to path of View http://YOURSITE/admin/merci/reservations/today]

MERCI has it's own import feature to create MERCI enabled content types and basic items. More advanced imports require Node Import or Feed API/Feed Element Mapper/CSV Parser.
To use MERCI's basic import, first copy the merci_import.php, content_types.csv, and items.csv found in the Import directory to the root level of your Drupal install. Then open http://<YOUR-SITE>/merci_import.php in a browser.
MERCI is designed to be very flexible. There is no single right or wrong way to configure the content types. You want to find the configuration that works best for your workflow. Here are some tips for determining how many content types to create and whether to configure those content types as Buckets or Resources.
STILL NEED TO ADD TIPS
Reservations Made to Individual Resources

Same Number of Reservations made to Items in Buckets

While buckets are more complicated to configure, they enable MERCI to provide users who need to make longer reservations the space to do that.


You can sync roles between CiviCRM and Drupal to share useful information. Using the setup detailed below, you could for instance create a group of all your members in CiviCRM that you synced to a Member role in Drupal. You would then easily be able to set permissions in Drupal for all members based on the information updated automatically from CiviCRM.
The civicrm_group_roles and civicrm_member_roles modules are included with the CiviCRM module.


IMPORTANT NOTE: The New, Current, and Grace setting do not override Expired and Pending. There is another status of Canceled that can be used to when a user with one type membership let it expire and rather than renew, creates a new membership that's a different kind. If there is one expired membership, it will remove the user from the role.
While you can manually and automatically sync CiviMember_roles there is no option to do so for CiviGroup_roles which will only sync when a user logs into their Drupal account.
Defining permissions for your MERCI installation is an important step is getting your online equipment reservation system up and running. To begin, you will need to create Roles in the Drupal interface. Consider Drupal Roles for your MERCI configuration the same as certifications at your organization (i.e., studio certification, field certification and editing certification). To create roles in Drupal, navigate to Administer > User Management > Roles and add the Roles appropriate for your organization's needs. Now you will need to give each role access to specific pieces of equipment. These permission are based on the Content Types you previously created. To define the access permissions for each role, navigate to Administer > Site Configuration > MERCI > MERCI Permissions. Once on the MERCI Permissions pages, check the appropriate box in the grid to provide access for user to create reservations for the items listed.
create reservations - This is the most basic permission level. This alone is not enough to reserve equipment. Without Adding Edit Own and Delete Own permissions to specific content types, users will see empty select lists of the equipment available to them.
create confirmed reservations - This permission sets the status to Confirmed by default when users to submit the initial reservation as confirmed. This skips the Uncofirmed and Pending statuses. In most cases this permission would be given to staff.
membership discount - This permission indicates that the user gets the membership discount when charging for a rental.
suspend MERCI access - This permission blocks users for creating new reservations or altering existing reservations.
administer MERCI - This permission allows users to book any item managed by MERCI at any time and
Portland Community Media hired raSANTIAGO (a consultancy in Portland, Oregon that does a lot of work with CiviCRM) to develop this process for migrating their membership data from Facil to CiviCRM.
That code is available from GitHub at http://github.com/rasantiago/Portland-Community-Media/
In addition to the SQL, raSANTIAGO recommended ??? to move data from Microsoft Access to MySQL. Once the tables are in MySQL, using the Table Wizard + Migrate apporach Brad Bowman outlines here will save a lot of time moving your inventory between systems.
Reservations are associated to a Project, so first navigate to the Project page. The easiest way to do this is by clicking on the My Projects menu item on the right under My Member Tools. You should see a list of projects that looks like this.

If you are not a member of any Projects, that needs to be corrected before you will be able to reserve any equipment. Under Member Tools you should see *CREATE A PROJECT. Click on it and fill out the form about your project. If you need information about filling out the form click here.
*If you do not see CREATE A PROJECT, please complete the Report a Problem form at the bottom of the site.
Once you are on your Project's page, you will see an additional menu of tools on the right under My Project Tools.

This menu will list the types of content you can create for this Project. In addition to Reservations, many Projects allow Shows, Blogs, Events and Wikis.
Click Create Reservation to start the reservation process.
Enter the From date and To date for the Reservation

The next step is to click the Check the Availability button to check the availability of the equipment during that time period. If the equipment is not available, it will not show up in the drop-down lists.
Next, select the actual equipment you would like to reserve. These list are limited based on each users membership level and certifications.

Finally, request crew if necessary and describe what kind of help is needed.

Press save, if errors are generated it could be for a number of reasons including:
IF YOU DO NOT CLICK THE CHECK AVAILABILITY BUTTON FIRST AND YOU SELECT AN ITEM THAT IS NOT AVAILABLE YOU WILL SEE A GRID LIKE THIS:

Correct any errors in the reservation and check the availability again. If the Reservation doesn't return any error, click submit.
It should look something like this:

That's it. Your Reservation has been made. If you would like to update or cancel your Reservation, you'll find all your Reservations listed by clicking the My Reservations link under the My Member Tools menu.
Members can modify or delete their own Reservation up until the start of the Reservation. To view your upcoming Resevations, simply click the My Reservation link under your My Member Tools.

After a Reservation start time, the reservation can only be changed by Staff.
For configuring the workflow for checking out and in equipment refer to adding equipment to MERCI.
Once a reservation is made it will be in one of the following states depending upon the configuration.
Unconfirmed - In this state the equipment items are held and can not be booked by others. Staff will then need to edit the reservation and select the specific bucket items to be reserved. Staff can then change the status to Pending.
Pending - A reservation can only be in this state if specific bucket items have been chosen. A reservation in this state is ready for check out.
Checked Out - To check out a reservation, edit the reservation and change the status to Checked Out. A reservation with status Unconfirmed can be changed to Checked Out without the intermediate Pending status by making sure you choose specific bucket items for the reservation. After saving you can print out the "Printable Contract" and have them sign it.
Checked In - To check in a reservation, edit the reservation and change the status to Checked In.
Canceled - Edit the reservation and change the status to Canceled.
No Show - Edit the reservation and change the status to No Show.
This page is In Progress. Please check back later for this page of the handbooks.
The MERCI Inventory sub module pushes shared fields from the MERCI Inventory Master content type to other content types managed by MERCI. The MERCI Inventory Master comes with several common fields, but you can add/edit the fields you need. Once you have the fields you want added to the Master, go to the main MERCI admin menu.
STILL NEED MORE INSTRUCTIONS
This page is In Progress. Please check back later for this page of the handbooks.
Denver Open Media uses MERCI combined with CiviCRM to manage a self service checkout. Leveraging CiviGroup Roles Sync and CiviMember Roles Sync modules to add and remove the members from roles in Drupal as the pay for memberships online or complete a class frees up staff time for other projects.
Membership Levels

Certifications Levels

Creative Commons Requirement - Denver uses a customized version of the Creative Commons Lite module. At DOM, members who use the station's equipment are required to submit Shows with a Attribution, Noncommercial, Share-Alike license. I've added to 2 permission settings; restrict to default cc license and override cc license restriction. Members in roles that have access to check out field equipment or use our studios through MERCI are also given the restrict to default cc license. That should really use the creativecommons_lite_default_license variable, but I just hard coded the Attribution, Noncommercial, Share-Alike license as the default. Members can opt to pay the commercial rate for equipment and then be added to a role called cc override. The cc override role is given the override cc license restriction permission. So even if that member is in a role that normally restricts their licenses, they have access to all the enabled licenses because a staff member approved the override.