I would like to create an Asset Management Inventory for our corporate helpdesk. There is a list of assets (laptop, phones etc) which our ICT staff members can borrow from the helpdesk. Members would not have direct access to the system, the main user would be just a helpdesk admin managing the loans.

These are the entities I'm planning to use but I'm not really sure how should I design my content types and how to link them with each other.

Borrower Information

  • Full Name
  • Username
  • E-mail
  • Telephone
  • Area
  • Office No.

Asset Details

  • Name
  • Model
  • Scope.

Loan Information

  • Borrowed On (date)
  • To be returned (date)
  • Updated On (date).

I was thinking about using a Field Collection as a Loan History as part of every Asset, in which the Borrower and the Loan Information would exist. So every time I need to create a new Loan record, I would choose the Borrower as an entity and fill in the Loan Information. If the Asset or the Borrower doesn't exist in the system, I would like the admin to be able to add them.

I'm not familiar with the Entity Reference module and I don't know if it would fit to my scenario. I need some guidance I'm afraid.

1 Answer 1


Start with creating 3 content types like so:

  • Borrower, with as fields the various attributed you mentioned within Borrower Information.
  • Asset, with as fields the various attributed you mentioned within Asset Details.
  • Loan, with as fields the various attributed you mentioned within Loan Information.

Then use the Entity Reference module to add 2 more fields to Loan:

  • a 1st entity reference field to indicate the Borrower.
  • a 2nd entity reference field to indicate the Asset.

Then use the Views module to build all sorts of lists. Such as a Loan history, which could simply be a list all nodes of type Loan, in which you'd also want to add a Views "relationship" to Borrower and/or Asset. You could also add some Views filter(s) to further limit this list to fit your needs, e.g. to list all available (not borrowed) assets (as in your comment to my answer). For this kinds of lists I often use the dataTables module to make the searching even more flexible/dynamic (in the browser). Refer to my answer to "How to display the data of a View in table format?" for (way) more details on that.

You could easily take this a step further by also adding the Rules module to the mix. E.g. to schedule an eMail reminder to the borrower X days before the "to be returned date". However, for this to work (make sense), you'll also want to add an extra field (of type date) to the Loan type to register the actual return date of the Asset (which you should also add IMO even if you don't want this extra Rules feature). Assuming you added such return date field, you'd want to check it's value in such eMail reminder (to avoid sending reminders for Assets that were returned already).

  • Great workflow! I needed someone to clear things up. Although this seems to meet my requirements (also the e-mail notifications using Rules for overdue loans was one of them), how could I retrieve an asset's status? To lets say, get a list of all available (not borrowed) assets?
    – lephleg
    May 31, 2016 at 14:27
  • 1
    @LePhleg : merci for the feedback, check my updated answer (the parg about Views) May 31, 2016 at 14:44
  • 1
    Thanks a lot for your time helping newbies like me, @Pierre.Vriens! I'm going to get straight to work using your guidelines and I'll be back with comments on any difficulties I may face. Till then, answer granted!
    – lephleg
    May 31, 2016 at 14:54
  • OK, great, and thanks for the "accept". Make sure to also experiment with the dataTables module (especially it's dynamic search features). If you have more questions: post new questions (you probably know that adding new questions to an existing one is not really allowed around here, eg because it may invalidate existing answers). May 31, 2016 at 15:03
  • Oh, I'll keep that in mind and I'll try to be specific to create a new question if something troubles me. Thanks again.
    – lephleg
    May 31, 2016 at 15:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.