welcome to the community.
Q1. & Q2. are easily met with CiviCRM.
Q3. Can be done with a little effort.
Q4. This would be provided by your Content Management System (CMS). CiviCRM works with Drupal, WordPress, and Joomla!. For this, I'd go with Drupal (with which you could do this through configuration), but this functionality may also be ...
I've run into an almost identical problem, which I solved with a custom extension. I've hardcoded which groups correspond to chapters, and whenever someone is added to a group, I check if it's a "chapter" group. If so, I update a custom field with their chapter name, so I can export it.
I could upload the entire extension to Github if you like, but the ...
I think this pull request, that was merged into 4.7, contains at least some of these improvements. But not the functionality from the extension (as far as I know):
Check out the new functionality on the demo site, and see if it meets your expectations.
For item #4 -> When you run CiviCRM on Drupal it comes with this module:
CiviMember Roles Sync - Synchronize CiviCRM Contacts with Membership Status to a specified Drupal Role automatically.
In a nutshell - here's how this works: someone Logs in -> Drupal checks with CiviCRM -> ah this person has Membership A + status = Current; Drupal checks your Rules -> ...
Haven't explored this but my first thought is that conditional fields might be an option in webforms.
Based on whether the user checks this box or that box additional fields could appear. I think webform even supports doing multi-page forms and might be able to add those using this method.
Webform validation module can run a number of checks on specific fields on your webform - https://www.drupal.org/project/webform_validation
If you're worried about SPAM submissions install Mollom: https://www.drupal.org/project/mollom - and configure it to monitor your webform submissions.
In principle this should be possible using the CiviRules extension: https://civicrm.org/extensions/civirules.
Documentation of this extension: https://docs.civicrm.org/civirules/en/latest/
I think you would get there by selecting the trigger Activity is added, select the specific type of activity (Email) and add one more condition that would specifically ...
To my Knowledge this is not a straightforward thing - but can be done -
You need to create an extension and use post or postprocess hook
whenever an Event is been saved against database you need to trigger an action to send an email
I'd recommend a different concept - maintain a VIP group and then exclude those group members when you're creating a group to send the mail to (use custom search "Add/Remove Group").
The reasons are:
1) No further development required!
2) If you have to approve each bulk email they receive, they may receive a lot of emails at once. It effectively bypasses ...
Assuming you have server permissions to implement this, I think a binary log is the best approach. Turn on binary logging at Administer menu > System Settings > Misc by setting "Logging" to "Yes".
At this point, you'll have a complete history of who made what changes in a SQL table calledlog_civicrm_activity. To add a "visible change log" to the activity ...
Groups is not available as a field when using the Member export. Note that it is available when using the contact export in case that is of any help but I guess not since given you are trying to do renewals via CSV you probably want to see membership fields in the export.
One 'lowtech' solution would be to do two exports - one of your membership data and ...