CiviCRM Community Forums (archive)

*

News:

Have a question about CiviCRM?
Get it answered quickly at the new
CiviCRM Stack Exchange Q+A site

This forum was archived on 25 November 2017. Learn more.
How to get involved.
What to do if you think you've found a bug.



  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Support »
  • Using CiviCRM »
  • Using CiviMember (Moderator: Deepak Srivastava) »
  • Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
Pages: [1] 2

Author Topic: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?  (Read 3531 times)

CiviTeacher.com

  • I live on this forum
  • *****
  • Posts: 1282
  • Karma: 118
    • CiviTeacher
  • CiviCRM version: 3.4 - 4.5
  • CMS version: Drupal 6&7, Wordpress
  • MySQL version: 5.1 - 5.5
  • PHP version: 5.2 - 5.4
Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 26, 2009, 07:00:24 pm
I have an interesting situation that may not be be a bug, but perhaps a workflow problem or a configuration issue.  I would appreciate any help with it.

Steps to reproduce.

1. A Contact exists with custom data stored in a Profile
2. This profile is displayed on the Membership "Join" form
3. A Contact signs up as a member, pays dues, and fills out the custom data in the Profile
4. This Contact also has a Drupal account created

So far so good, right?

Until a year later it is time to renew their membership.  The Contact comes to the website, but doesn't login, even though they have an account.  They click the link to Membership "Join" Form.  You may be thinking at this point "well they should log in!" but unfortunately end users don't think this way in the real world sometimes...

I realize one of the GREAT things about CiviCRM is that the Membership form doubles as both a "new member" form as well as a "renewing member" form depending on if the person is logged in and/or already a member.  That's great, but it does produce a rather disadvantageous workflow problem.

See if the current member goes to the Membership form to renew, and enters the email address on account (the same email they joined with last year) they can complete the Membership registration form.

1. The membership is processed,  without an "are you already a member" check and a forced login.   I can't tell if it's processed as a renewal of an already existing member or a new member, but the person can submit the form without being logged in even though they are a member already.

2. If the contact doesn't fill out all the custom data a second time because it is both
   a) optional
   b) the contact assumes the data already exists in the database and they don't have to enter it again

   Then the custom data is erased.

So I'm wondering how we can run a check for "is this email already a member?" and force a login so the data can be pre-populated and the membership can be processed appropriately and custom data not erased.

Am I missing some kind of configuration item?  What can be done to improve this workflow, because in our "real world" situation we are having contacts trying to renew their memberships and instead erasing their data.

THANKS!

« Last Edit: May 26, 2009, 07:08:22 pm by Stoob »
Try CiviTeacher: the online video tutorial CiviCRM learning library.

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 26, 2009, 08:13:54 pm
I assume you are using a profile - can't you set it to force log on to get around this?
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

CiviTeacher.com

  • I live on this forum
  • *****
  • Posts: 1282
  • Karma: 118
    • CiviTeacher
  • CiviCRM version: 3.4 - 4.5
  • CMS version: Drupal 6&7, Wordpress
  • MySQL version: 5.1 - 5.5
  • PHP version: 5.2 - 5.4
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 26, 2009, 10:29:51 pm
Eileen,

While I do appreciate a response, perhaps you should have read my post a bit more thoroughly, as your question is answered in the post.

Yes I am using a profile. 

Furthermore, I don't understand how I could "force a logon" but perhaps that is what I am asking. 

However I am using the same Membership form both for NEW members and for RENEWING members, so forcing a login is not appropriate for a new member who doesn't have a logon at all.

Any other thoughts?  Anyone else?

Try CiviTeacher: the online video tutorial CiviCRM learning library.

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 26, 2009, 10:55:35 pm
I meant under Drupal on the profile advanced settings (Drupal user account registration option) -  but I realise that I'm not quite sure how it handles that situation. In the past I have edited the tpl file to show a different link if they are not logged in. I'm sure there's a post someone wrote on it - either on this forum or possibly on the Drupal site. I'll search for it if I get a chance later.
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

CiviTeacher.com

  • I live on this forum
  • *****
  • Posts: 1282
  • Karma: 118
    • CiviTeacher
  • CiviCRM version: 3.4 - 4.5
  • CMS version: Drupal 6&7, Wordpress
  • MySQL version: 5.1 - 5.5
  • PHP version: 5.2 - 5.4
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 27, 2009, 05:34:41 pm
There are two options in Advanced Profile Settings that seem relevant and they are:

Drupal user account registration option?
Update contact on a duplicate match?

Both these seems like might help, but upon reading the blue (?) help links it appears these settings have no effect on a Membership form at all.  Read below, there is no mention of Membership forms...

Quote
If you are using this profile as a contact signup and editing form, OR in an online contribution page, OR in an event registration page - this option controls what happens if the data matches an existing contact record. If this option is enabled, the matching contact record is updated. Otherwise the user will get a "duplicate record" warning, and their input will not be saved. Contact matching is based on your configured "Strict" rule for matching duplicate contacts.

I tested it and it is true that checking either of the above options has no effect on Membership form.  A member trying to renew who does not login is still capable of renewing their membership AND erasing all their Profile data.

So I would be happy to demonstrate this use-case to the team and hope that this issue can be corrected.  Who should I speak to in the team to get this fixed up?
 
Try CiviTeacher: the online video tutorial CiviCRM learning library.

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 27, 2009, 06:19:44 pm
Hi, I agree with you that that sounds like a bug. You can either log it as an issue or wait for one of the core team to see this thread & comment.

On a related note I found the link I was thinking of

http://drupal.org/node/434080

Basically they have edited the link from the events page to go to first to another page that asks people to login (but will redirect them straight through if they are already logged in).

NB. I personally think there is a case for a change in CiviCRM so that if event registrations / contributions permissions are set so that they can only be made by authenticated users then the 'register now' link (sorry I'm more used to CiviEvent) would point to the event page if the user were authenticated and to a login/register page if not.
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

Donald Lobo

  • Administrator
  • I’m (like) Lobo ;)
  • *****
  • Posts: 15963
  • Karma: 470
    • CiviCRM site
  • CiviCRM version: 4.2+
  • CMS version: Drupal 7, Joomla 2.5+
  • MySQL version: 5.5.x
  • PHP version: 5.4.x
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 27, 2009, 07:21:04 pm

So this is a long standing issue with CiviCRM that on a successful duplicate match, new data overrides existing data. This happens in profiles (and hence on membership, contribution etc)

The fix for this is non-trivial and is currently not on our 2.3 roadmap. if this is an important issue for you/your org please consider either sponsoring the fix and/or hiring the developer. If i had to guess this is a 50-100 hour fix. I'm not sure what the right thing to do is even

lobo


A new CiviCRM Q&A resource needs YOUR help to get started. Visit our StackExchange proposed site, sign up and vote on 5 questions

Dave Greenberg

  • Administrator
  • I’m (like) Lobo ;)
  • *****
  • Posts: 5760
  • Karma: 226
    • My CiviCRM Blog
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 10:34:19 am
Quote from: Stoob on May 26, 2009, 10:29:51 pm
Furthermore, I don't understand how I could "force a logon" but perhaps that is what I am asking. 

However I am using the same Membership form both for NEW members and for RENEWING members, so forcing a login is not appropriate for a new member who doesn't have a logon at all.

For your 2.2.x site(s) - you can set the "Drupal account registration" option to "Account registration required" in your Profile (profile settings >> Advanced Settings). With this setting enabled, non-logged-in users will be prompted to create an account, while logged in users will not see the prompt. Seems like this will help a bit, because then returning users who are not logged in will see this prompt: "Please enter a user name to create an account. If you already have an account, please login before completing this form."

That said, we are investigating the behavior of the "Update on duplicate match" profile setting. The help definitely indicates that users will be prevented from submitting a contribution, membership or event form if the checkbox is checked and we detect a duplicate contact. However, we are not doing this for any of those cases currently. I suspect that for now we'll need to just correct the help - since the code change is not trivial. I'll post back here shortly.


Protect your investment in CiviCRM by  becoming a Member!

CiviTeacher.com

  • I live on this forum
  • *****
  • Posts: 1282
  • Karma: 118
    • CiviTeacher
  • CiviCRM version: 3.4 - 4.5
  • CMS version: Drupal 6&7, Wordpress
  • MySQL version: 5.1 - 5.5
  • PHP version: 5.2 - 5.4
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 10:46:56 am
@Lobo - thanks for the situation report.  Unfortunately I don't think my client is in the position to hire a developer for anywhere near 50+ hours so we'll have to find a workaround.

@Dave Greenberg - I understand that this "login required" advanced setting SHOULD be helpful, but in my experience it does nothing for my membership form.  Attached you will see my settings in the .png images.  You can view the form here:
https://www.nscss.org/civicrm/contribute/transact?reset=1&id=1  (scroll down to view the profile "Individual Data"

Am I doing something wrong?  Why is there no login prompt as you describe on my form?
Try CiviTeacher: the online video tutorial CiviCRM learning library.

petednz

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4899
  • Karma: 193
    • Fuzion
  • CiviCRM version: 3.x - 4.x
  • CMS version: Drupal 6 and 7
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 12:34:38 pm
I think I follow the issue as described. An unlogged in person goes to Join in order to Renew - the system recognises them via the email therefore updating their membership details, but in the process also updates the Profile data - and if they have been left blank by the 'user' while renewing the system will 'correctly' update the data from the Profile - and wipe out existing stuff.

This is one reason why we push our clients to use checksums in email used to encourage renewals - as the user avoids the need to login and the system recognises them, and pre-fills the profile fields with existing data. Doesn't help for people who find their own way to site to renew.

So wondering if my uncoded brain can suggest and trivial work arounds. Eg, if the form has a recognised email address filled in, when 'save' is hit, would it be possible to re-present the form with a 'the system believes you are renewing rather than joining for the first time, please check and update the information that is now showing in the profile fields'? May be entirely non-trivial but who knows - not me.

Otherwise a big warning sign at the top of Join form saying - if you are RENEWING please click here to login before filling in this form.
Sign up to StackExchange and get free expert advice: https://civicrm.org/blogs/colemanw/get-exclusive-access-free-expert-help

pete davis : www.fuzion.co.nz : connect + campaign + communicate

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 01:38:35 pm
Did anyone think that the approach here could be generally useful?

http://drupal.org/node/434080

If makes sense to me that something like that IF the person is not logged in AND the contribute form is not available to anonymous users then forwarding them to a login / register page (and to the contribute page afterwards) would help in a lot of situations. But it doesn't make sense to publish an event page (for example) with a link to 'register' for which you get permission denied instead of a chance to create an account.

If you didn't want this behaviour you could continue to make the form available to anonymous users.
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

petednz

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4899
  • Karma: 193
    • Fuzion
  • CiviCRM version: 3.x - 4.x
  • CMS version: Drupal 6 and 7
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 01:58:56 pm
I am assuming the the JOIN form is available for unregistered users - and that is the way they are becoming registered.
Sign up to StackExchange and get free expert advice: https://civicrm.org/blogs/colemanw/get-exclusive-access-free-expert-help

pete davis : www.fuzion.co.nz : connect + campaign + communicate

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 02:08:04 pm
Yes, in Stoob's case that is what he is doing - I think for event registrations (maybe less so contributions & membership but not sure) if setting the level to authorized user meant the person got prompted to create an account or login first many organizations would then choose to set the level to be authorized user rather than anonymous.

Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

CiviTeacher.com

  • I live on this forum
  • *****
  • Posts: 1282
  • Karma: 118
    • CiviTeacher
  • CiviCRM version: 3.4 - 4.5
  • CMS version: Drupal 6&7, Wordpress
  • MySQL version: 5.1 - 5.5
  • PHP version: 5.2 - 5.4
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 28, 2009, 06:46:14 pm
Thanks PeterD and Eileen,

You are correct that I am using the Join form on my site to process BOTH renewing members and new members, so it's not practical the way we are using the form currently to make this form available to logged in users only.

I agree with Peter and we are going to put a big warning at the top of the .tpl that says "Already a member?  Login before you renew" and that will probably catch the majority of all potential problems, but that's not a 100% solution.

It seems that a 100% solution is a bit more difficult to achieve technical speaking (according to Lobo) so we'll just have to live with it for now.  Thank you for all your help.  Let me know if you have any other ideas, and we'll go with the "big warning" method to solve our problem for now.

Stoob


Try CiviTeacher: the online video tutorial CiviCRM learning library.

Dave Greenberg

  • Administrator
  • I’m (like) Lobo ;)
  • *****
  • Posts: 5760
  • Karma: 226
    • My CiviCRM Blog
Re: Using Membership Join Form Erases Profile Data of Member if Member != Logged In?
May 29, 2009, 08:52:00 am
Quote from: Stoob on May 28, 2009, 10:46:56 am
@Dave Greenberg - I understand that this "login required" advanced setting SHOULD be helpful, but in my experience it does nothing for my membership form.  Attached you will see my settings in the .png images.  You can view the form here:
https://www.nscss.org/civicrm/contribute/transact?reset=1&id=1  (scroll down to view the profile "Individual Data"

Am I doing something wrong?  Why is there no login prompt as you describe on my form?

Check these requirements (quoted from the pop-up help on that field):
"This feature requires the 'Email Verification' option to be checked (Drupal User Settings). In addition, you must include a Primary Email Address field in the profile. "
Protect your investment in CiviCRM by  becoming a Member!

Pages: [1] 2
  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Support »
  • Using CiviCRM »
  • Using CiviMember (Moderator: Deepak Srivastava) »
  • Using Membership Join Form Erases Profile Data of Member if Member != Logged In?

This forum was archived on 2017-11-26.