Pubblicato
2008-04-04 09:52
UPDATE: You can review detailed implementation specifications here and here
----
- "We are an Association whose members are organizations. How can these organizations signup and renew their memberships online?"
- "We get contributions from companies as well as individuals. How can we configure our online contribution pages to handle this?"
- "How can we allow someone from an organization to update the organization's address and contact info?"
- Online membership signup / renewal - Janet Klein works at "Art for Kids" in Oregon. Her organization wants to become a member of the "Northwest Arts Educators" association. She goes to their Membership Signup page, selects a membership level and then checks the "I'm applying on behalf of an organization" checkbox. An additional set of fields appears so she can enter her organization's name, address, phone and email (her email address is copied to the organization email address field as a default, but she can change that as needed). Once Janet completes the signup - "Art for Kids" is added to the database as a new "member" organization. Janet is also added, with a "permissioned" employee relationship to "Art for Kids". If Janet creates a CMS user account, she can subsequently log in and renew "Art for Kids" membership.
- Contributions from organizations - Basically this works similarly to membership signup. The person from the company / organization checks the "Contributing on behalf of an organization" box and enters the organization information.
- Self-service organization updates - Since Janet has a "permissioned" employee relationship with "Art for Kids", when she goes to her "Contact Dashboard" she will see a "My Organizations" list with links to View or Edit organization name, address and contact info for "Art for Kids".
Comments
Yes, this is functionality I need, and the spec outline seems right on target. Some additional ways functionality along these lines could be extended:
1) Allow permissioned users to manage/edit other individual records for the organization they are an employee of. Thus one authorized employee could bear responsibility for managing contact data for all the organization's employees on file.
2) Mimic "use household address" behavior for employee/employer. This option should be available in the frontend signup forms as outlined above, as well as in the backend admin.
3) Tangential to this discussion -- extend search capabilities to allow cross-contact type searching. For example, find all Individuals where their Organization tag = xyz.
4) Some of this functionality may spill over into the multi-person event registration discussion. Maybe someone needs to be a permissioned user in order to register on behalf of other people? I think this control would need to be optional, as in many circumstances it would be counterproductive to require someone to be permissioned BEFORE they complete the registration form.
5) Managing permissioning seems to be the trick with this. For things like a contribution by an organization, or a new membership signup, I could see simply giving the user the option of contributing/joining on behalf of the organization. But when it comes to editing an existing organizational record, I would think the admins would want to have some control over who is permissioned to act on behalf of the org in this way.
6) With membership signups -- one thing that might eliminate the need for the "I'm joining on behalf of my organization" option is adding the option to assign membership types to contact types. Thus the "Gold Membership" is DEFINED as an organization level membership, whereas "Associate Membership" is defined as an individual-based membership. Some categories of membership may be ambiguous, in which case the option as described above would be necessary. But for those that are not ambiguous, the option may not be necessary. If I go online and join for a membership category connected to orgs, it should automatically determine that and insert the membership record accordingly. Defining these options and structuring them logically could be tricky.
-Brian
I've been working this week on User Group registrations. We require that each group have two contacts plus a general information email. Right now, I've just been adding new locations types for the primary and secondary contacts and putting their names in the supplemental address field.
On top of the things already mentioned, it would be useful to be able to send email to both contacts.
Ability to update is the key thing for me though.
Hello,
My organization would also greatly benefit from this added functionality.
We serve other organizations in addition to individuals, many of whom work for the organizations we serve (but not exclusively). We are especially interesting in allowing permissioned individuals to act on behalf of their organization to register their organization with us (similar to Janet’s example under the first bullet) and update contact information (email, physical address etc.) and other organizational data that we require from them (for example, we manage an online grant application that is entered by an individual on behalf of their organization). I agree with Brian's comment that cross-contact search functionality would be useful.
Thanks,
Emily
Updating contact info for the organization will be part of the 2.1 implementation. Access to "other organizational data" would be a custom / or future release feature. How do you collect the online grant app info now?
Especially self-service organization updates.
We also serve both organizations and individuals. Organizations have a primary and secondary contact who are (usually) Drupal users and responsible for their organization's profile information, most of which is publicly viewable. Then each org. can also have an unlimited number of staff contacts, CRM records entered through a short profile form that establishes the employer-employee relationship and adds the record to a group for our main mailing list. The primary and secondary contact would benefit from access to edit their org's info - access for staff contacts is not important.
Also useful would be to allow individuals to submit information on behalf of their organization. For example, information about a current project that could be linked to from their org's profile.
The approach you've mapped out seems to hit the mark. That would be an excellent addition!
Taking the use cases a bit further to handle the one-to-many relationship from an organization to individuals:
These flows seem useful, but are definitely beyond the scope what we are planning for 2.1. However, the data model changes will make it easier for someone (or us) to build this type of interface. Hard-coding what type of relationship can be managed from the Dashboard (e.g. "Add employees") is easier that trying to support this type of functionality through a Profile-like mechanism. The question is whether it is general enough to be appropriate for a core addition.
For example, I can imagine an organization wanting this kind of limited relationship manager interface - but for Volunteers rather than Employees....
AS this evolves, we'll also need to verify whether binary permissioning on relationships is sufficient or if this needs to get integrated with the ACL model.
I used a similar technique for bioneers. When a user submits an membership purchase for an organization I've got a drupal form that collects the organization details. I then create the org and relationship on submit. I like the ideas about relationship perms too. At Advomatic we have an issue where sometimes org details need to be changed, but users don't have access to their organization to do the change themselves.
--
Dave Hansen-Lange
Web Developer
Advomatic LLC
http://advomatic.com
Hong Kong office
dalin,
Any more info on how you achieved this? I am in a similar situation and would like some pointers.
Thanks.
This is exactly what I am looking for. Have a site that needs to be launched soon (like this week!). I haven't got a full solution yet. I am currently looking to do something similar to what dalin did but I am not familiar with the CiviCRM API so not too sure how to proceed.
I would really love this functionality, pity it wasn't sooner. What you outline is spot on though. Especially the registration process since it will allow other users to register for the website without being tied to an organisation.
Thanks for the hard work as usual.
Guys, this is almost exactly what is required for the organisation I'm involved with
We offer individual memberships and we also offer:
1) Corporate memberships
2) Academic Faculty memberships.
The key thing about the corporate/academic faculty memberships is that they are effectively 'buckets' of memberships (10, 20, 30, 50) that an organisation can sign up for and then distribute to their employees/faculty members. We have a an 'admin contact' within the member organisation but each person that signs up under the 'corporate' banner is treated as an individual as regards benefits etc. This is similar to the "permissioned employee" relationship you identify above.
The 'Admin' person can then add/remove members (create employee/employer links between individuals and the organisation effectively) up to the limit of their 'bucket' during the course of the year for no additional charges (if a member is removed from a corporate we then chase them to renew as an individual at a discounted rate. Currently this is managed by email between corporate members and our admin team. No one has exceeded their 'bucket' yet so we don't know how that would be handled (probably an upgrade to the next level at a discount...)
Also some 'super corporates' e.g. Partner organisations might have an unlimited 'bucket' size but would otherwise be managed the same.
If we could
a) allow the corporate sign up on-line
b) allow 'super-user' members in a Corporate membership 'bucket' to administer their membership make-up directly (exposing some admin functions to this 'super-user' just around this process area
c) control the number of members in any given 'bucket' and trigger actions or reports for follow up if a corporate exceeds their 'bucket' limit in a given period.
then this would be 100% what we require. If it helps I can map out the logical data model we are operating and some of our current and planned processes around this type of membership.
I think you'll potentially be able to build what you need on top of what gets implemented for this in 2.1. The current Membership model supports extending a membership automatically to "related" contacts - and this should work for your Corporate memberships. Employees of a corporate member can automatically become members under the corporate "umbrella" when the employee-employer relationship is established. However, the concept of a "bucket" (ceiling for how many related members can be covered) doesn't exist in the data model.
With regard to 'super-users' doing self-service management of their membership base... the 2.1 implementation will allow your 'admin' person (i.e. the permissioned employee or employees) to navigate to a Contact Dashboard for "their corporation(s)". You could potentially extend this to have the Dashboard list all related contacts (i.e. employees). But it sounds like you'd also need to build an interface for them to ADD employees. I think the data models for this will be in place - especially if you make some assumptions about what a permissioned employee can do - but some custom UI's will be needed.
In the (completely theoretical) event than a user completely screws the record of his organisation, it would be great to have an option:
1) to automatically flag "tainted/to be reviewed" each modified organisation.
2) for an admin to revert to the previous version before the user modified it.
(this is a generic feature that could be as useful on modification from a civicrm user than from a user from the organisation self-serviced)
X+
I have been working and hacking away to accomplish this kind of scenario. I'm using Joomla so there is a combination of Joomla front-end components and just using the relationships as permissions in a sense. I am hoping you guys get a boot camp set up this summer that I can attend and I'd be happy to show you my (probably not very elegant) approach.
Clay:
Would be great if you could post more details on what you did an also code for what and how you did. I suspect this will help quite a few people and give us a few ideas too. We hope on having a couple of developer trainings in the US this year (one in June, the other in Sept/Oct)
lobo
The overview would be:
That is the basic overview of what we've done so far. I've been in such a crunch that the code is not as conventional as I'd like, and not super easy to generalize, but I would be more than happy to share. Lobo, if you want to contact me personally and let me know the best way to get into this deeper, and share actual code, please do. clay.whipkey@gmail.com
cheers,
Clay