Skip to content


Repository files navigation


CRM = Customer Relationship Management

GR8 CRM is a set of Grails Web Application Framework plugins that makes it easy to develop web application with CRM functionality. With CRM we mean features like:

  • Contact Management
  • Task/Todo Lists
  • Project Management

GR8 CRM - Invitation Plugin

GR8 CRM users can share information with other users. This plugin manages user invitations. An invitation is created by calling crmInvitationService.createInvitation(...). This triggers an event crmInvitation#created. The application must subscribe to this event and probably wants to send an invitation email to the invited user. When the user responds to the invitation, one of two events are triggered:

  • crmInvitation#accepted when the user accepts the invitation
  • crmInvitation#denied when the user denies (says "no thanks") the invitation

Invitations not responded to within 30 days (config parameter crm.invitation.expires) will expire and cannot be accepted or denied anymore. A new invitation must be created if needed.

An invitation can be made for a specific target object. For example an invitation to see a specific project, customer or document. You pass the target instance or any other identifier to createInvitation. This identifier will be available in accepted/denied events above.


CrmInvitationService#createInvitation(Object target, String param, String senderUsername, String receiverEmail, Map data)


class MyService {

    def crmInvitationService

    def invitePeopleToViewCustomerAccount(Customer customer, List<String> emails) {
        for(email in emails) {
            crmInvitationService.createInvitation(customer, 'view', customer.accountManager.username, email, [:])

    @Listener(namespace = "crmInvitation", topic = "created")
    def sendInvitationEmail(data) {
        println "Send an email to ${} inviting her to view customer record ${}"

    @Listener(namespace = "crmInvitation", topic = "accepted")
    def invitationAccepted(data) {
        println "${} accepted my invitation!"
        // Assign view permissions for ( to user (

    @Listener(namespace = "crmInvitation", topic = "denied")
    def invitationDenied(data) {
        println "${} did not accept my invitation :-("


User invitations for Grails CRM







No packages published