CiviCRM integration with Plone
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 45 | |
Author | ||
License | CC Attribution - NonCommercial 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/48048 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Place | Bristol, UK |
Content Metadata
Subject Area | |
Genre |
Plone Conference 201439 / 45
1
2
10
11
17
19
20
27
31
39
00:00
WritingWeightAddress spaceSpacetimeSelf-organizationPoint (geometry)Slide ruleDatabaseAddress spaceBitState of matterPhysical systemInformation securityQuicksortMultiplication signElectronic mailing listInternetworkingData managementOpen sourceScripting languageCodeFormal languageCellular automatonSequelNeuroinformatikEmailClient (computing)Chemical equationServer (computing)Axiom of choiceRevision controlQuery languageGroup actionForcing (mathematics)SpreadsheetContent management systemMultiplicationComputer configurationVotingField (computer science)Coefficient of determinationTheory of relativityRow (database)CloningCustomer relationship managementWeb 2.0NewsletterLecture/Conference
07:33
Self-organizationEvent horizonDifferent (Kate Ryan album)DatabaseRow (database)File formatElement (mathematics)SoftwareAddress spaceLattice (order)Real numberUniqueness quantificationRepetitionBitInterface (computing)Letterpress printingCartesian coordinate systemFormal languageMultiplication signQuicksortTime travelVideo gameMetropolitan area networkSystem callSoftware testingTranslation (relic)User interfaceLatent heatWeb applicationLecture/Conference
10:16
Inheritance (object-oriented programming)DisintegrationInformation securityLevel (video gaming)CASE <Informatik>Single-precision floating-point formatUser interfaceMoment (mathematics)Address spaceStaff (military)Self-organizationSoftware developerKey (cryptography)Speech synthesisComplete metric spaceDifferent (Kate Ryan album)Cartesian coordinate systemDatabaseLatent heatUniqueness quantificationSoftwareBitWeb-DesignerGame controllerExecution unitCuboidInformationLecture/Conference
12:57
BitInternetworkingOpen sourceComputer configurationSoftware developerPlanningINTEGRALWeb-DesignerProgrammer (hardware)Forcing (mathematics)Point (geometry)System callCustomer relationship managementLecture/Conference
15:08
Point (geometry)PlanningVideo gameMultiplication signDemo (music)Lecture/Conference
15:40
WebsiteCuboidStandard deviationInstallation artBitPlanningFunctional (mathematics)Different (Kate Ryan album)Type theoryLecture/Conference
16:09
Group actionDatabaseDifferent (Kate Ryan album)Video gameFunctional (mathematics)Type theoryInternetworkingLecture/Conference
16:48
Group actionInternetworkingProcess (computing)Address spacePoint cloudInternet forumLecture/Conference
17:21
InternetworkingSelf-organizationSoftware testingMultiplication signLecture/Conference
18:21
NumberDatabaseMultiplication signEmailInformation privacyPresentation of a groupLecture/Conference
18:55
Online helpUser interfaceInformationInstance (computer science)Internet forumBlogVirtual machineBitForm (programming)Staff (military)Message passingInterface (computing)Service (economics)SequenceType theoryKey (cryptography)Query languageFlow separationCASE <Informatik>Group actionDescriptive statisticsDifferent (Kate Ryan album)Control flowElement (mathematics)Theory of relativityFunctional (mathematics)EmailConstructor (object-oriented programming)Table (information)WebsiteOnline helpInformation securitySystem callINTEGRALTemplate (C++)Video gameComputer programmingMultiplication signData structureProcess (computing)Boilerplate (text)MereologyArithmetic progressionAddress spaceDatabaseComputer fileSoftware testingValidity (statistics)TouchscreenSequelProduct (business)Profil (magazine)Order (biology)Point cloudFront and back endsCodeCloningSystem administratorCustomer relationship managementSimilarity (geometry)Object-oriented programmingNewsletterEvent horizonAnalogyVideo game consoleLebesgue integrationQuicksortLecture/Conference
27:46
WebsiteEmailInternetworkingRow (database)TrailExploit (computer security)Information securityCustomer relationship managementFirewall (computing)Electronic mailing listIP addressVulnerability (computing)Lecture/Conference
29:30
Address spaceGroup actionCustomer relationship managementCodeRevision controlDatabaseFlow separationSoftwareInformationMereologyQuicksortInformation securityMultiplication signProfil (magazine)Process (computing)DemosceneTwitterFacebookoutputTrailSemiconductor memoryData storage deviceResultantVideo gameHypermedia1 (number)Link (knot theory)Mixed realitySelf-organizationMilitary baseWebsiteSystem callContent (media)CausalityRepetitionProduct (business)Point (geometry)Right angleCASE <Informatik>AngleMathematical analysisWeb 2.0AreaProjective planeSemantics (computer science)Lecture/Conference
Transcript: English(auto-generated)
00:00
Okay Okay, let's get started I am here to talk about Plone and Obviously and how to combine this with Civi CRM which is a System, well, I'll explain it a little bit which is very popular in the nonprofit world
00:23
I forgot to put in a slide about who I am My name is Paul hoolans and I work for a lot of nonprofits and Nonprofits have to deal with a lot of people supporters enemies whatever and you have to put all of those addresses into somewhere and
00:42
For that we're using Civi CRM and there are other options out there, but I'm hoping to convince you that Combining clone with a such a system can be very useful So what is Civi CRM it's they call themselves a constituent relations
01:03
Managements, that's just because it fits the CRM moniker It's specifically targeted at nonprofits that which makes it slightly different from Salesforce, which is sort of the main competitor in the Addresses leads whatever you want to call them space
01:22
and also Different from them. It's completely open source. It's very popular. There is like over 20,000 organizations using it It is Well, the advantage of it being open source is that you can host it yourself that all of your data doesn't go directly into
01:42
NSA records Salesforce doesn't quite guarantee that And it's actually quite capable it has one annoying feature and that it is written in PHP and it has an even more annoying feature and that it has to host on to a
02:04
Content management system and currently they have the choice between Drupal and WordPress there used to be a standalone version and there is talk of turning it back into a standalone version and I think by The time we reach to be CRM 5 there will be a standalone version again
02:27
Because yeah currently you have to install sort of like a host CRM CMS what's blown well, we're at the plumb conference
02:41
So, I guess you all know what plumb does And plumb is so much nicer than Drupal if you have to work with it I actually have to work with both and Every time I have to work in Drupal. I'm like why again? But yeah, but clone doesn't do the specific things that city serum does which is addresses and
03:06
so much more There's so much more is of course Well, first of all the question I get asked a lot and also a lot of people have proposed is like why don't we?
03:20
Write an address management system in blown because it can do everything. Let's do this And yeah, and I've been around for quite a long time and each organization I have worked at each organization. I have seen has written their own and invariably it's been a disaster
03:40
So if you've been in the nonprofit community for a while You first one was probably an address database in access That was one step up from the spreadsheets that people used So because there used to be 20 spreadsheets floating around and then somebody was like, let's put this all in the database
04:03
If I've been around for a long time, so I am actually Access was way a step ahead. I used Fox Pro and I used the base 3 For those of you who still remember what those were you are old
04:20
You are officially all At some point along came the web and along came like something like internal servers and everybody was like Oh, let's not have the access client. Let's do this like a website. That's really cool and PHP has like hooks into my sequel and it's like, oh, yeah, excellent
04:42
and Then you expose it to the big web world and you found out that you actually had never thought of the security because you were it was just addresses who could be possibly interested in your addresses and the internet is a friendly place and It turned out it's not a friendly place
05:01
So you would have to do security on your own which is in general a really bad idea and After a while, well you meet Python and clone and you're like, I'm so not writing PHP anymore. This is gonna be Great. So I have at one point even almost started writing a day
05:24
an address database in Plone because I was like I can do everything once you discover it. It's like amazing Please please please don't I've tried I've failed I've seen much smarter people than we try also fail. Why do people fail?
05:47
Addresses are hard Like really really really hard. It seems like one of the simplest Problems in computing. It's an address computers were made for it
06:00
then you have to deal with international addresses and Everybody puts their postal code or a zip code somewhere else and they all have to be addressed somewhere and Then you want a list of countries to maintain and then somebody even wants provinces or states or other crap in there And you're like, oh god, where can I find a list of there? It's really really really annoying and
06:25
Of course your country's Idea of an address is the perfect one and everybody else's is wrong But unfortunately people tend to live in other countries as well And then you had your database designed for and everybody had like an email address field as well
06:43
And then they work for several organizations. I had multiple email addresses What that's gonna be really annoying which one is their primary which one do we use for whatever? and then somebody in marketing or in fundraising comes in less like can we send a newsletter out and
07:02
You have to well, you're like, yeah, I couldn't run a query. Here are all the email addresses Let's send them out and then it's sort of like it turns out that most of your addresses are like five years old So you have get bounces lots of them. I can tell you bounce management is no fun
07:21
writing newsletter Handling scripts is no fun. I've tried it. I've done it in Perl. I've done it in a lot of languages It's a lot of work. It's no fun and it's much more than just addresses addresses are just the beginning
07:41
We're talking memberships here. I'm working with organizations that have memberships or Contributions or donations or whatever your flavor of the month. It's called Activities she also wants to record if people came to your meeting if people came to your caucus if people Responded to a phone call or whatever
08:04
You want to group them you want to tag your addresses so you can address specific sub segments of them Then somebody has gone to a course and says like a B testing. We should really do a B testing How do I build that in so
08:23
Then you get to deal with banking which is great Banking software if you want to do time travel talk to banking software It's you write interfaces to write them in kliop, which is sort of like a language closely akin to Sanskrit
08:40
and Just to get a bit of money in from your sponsors. It is really annoying to have to rewrite them Yeah, you have to deal with donations and Then you do events and somebody's like well we have these events there Why not keep like all the volunteers in and make sure that every room has a translator and that all the rooms
09:04
are filled and You keep adding and adding and adding features to your software and invariably the first six or seven times you get it wrong and You have to rewrite everything after a while you get really tight in you you're sort of like there must be other people that have
09:23
been doing that So and it so it turns out other people have been doing that and This is the killer one People actually want to print in 2014 yes, they want to print address labels
09:40
I can tell you printing address labels from a web interface web application is surprisingly hard For some reason America uses a different Format of paper than the Europeans then there's tons of companies Producing different kind of label formats, and it's just annoying the fifth time you've tried to do it. You're sort of like and
10:04
Of course you being a techie your lot of like nobody needs printing And that yeah until you talk to the secretary and he or she is like oh, yes, we do need printing And Then you also find out because invariably every organization's things there
10:22
They are extremely special and they need a custom application because they are doing unique work Therefore they need a unique address database. I'm here to tell you you are not special Whatever you do you're not special, and I'll give you the Oprah speech of course
10:40
Very special and you're doing excellent work, and it's really good, and you should you focus and you're great Excellent, but your techniques aren't really you are the same if you look at Your terminology might be slightly different, but underneath
11:04
Yeah, it's pretty bog standard what you're needing and you might be as well be getting a software That is built for a bit more than you are actually using at the moment Turning off specific features of software is a lot easier than keep on adding them
11:23
So what you want to do is take something that is already there that is actively being developed by people that are not you that is crucial and that But do come from a similar background and for a city serum is more or less the way They come from the northern profit world they've covered most of the use cases and
11:45
You really want to integrate and but then yeah you have this nasty problem. It's written in PHP and You don't want to touch that Luckily the city serum developers feel the same
12:00
The I know Couple of the lead developers, and they are like I've never seen the web interface in the last couple of years I only use it through the API Which means that their API is pretty much. It's like at 98 percent complete of the things you can do I think only the initial setup you need still need to do through the web interface anything else you can do through API calls
12:27
it's spits JSON at you, which is really nice and They even have like security controls, so you can actually That are also built into the API so not everybody can you don't have one single API key
12:42
That then allows you to do everything you can say I Can have per person? API keys so I can have different levels of staff doing different stuff seeing different information and Yeah for years that was what I wanted, but I'm not a good programmer
13:04
So I but I did experience what I still think is the beauty of open source I Spent actually we were at a hackathon for the Trying to open up the data of the European Parliament, but it's completely besides the point But I was staying at the Belgian guys house, and he turns out to be the lead developer for Civi CRM
13:27
Okay, we must have a Belgian beer. We are a Belgium That is really nice. Let's talk through the options so And he was like yep should work should work should be no problem blah blah blah This might be a problem next morning. He was like okay fix the API it should be there
13:45
Then you talk to a guy in Seattle David unfortunately he isn't here He did more or less the same for plan with the Salesforce integration, and he was like yeah There was a bit of a pain in the eye in the backside, but yeah, it did work
14:04
It's possible, and it was really useful so Then for some reason you get to meet a Mexican who lives in Brazil And he actually likes document driven development So we talked a lot as you do on plan conferences and over the Internet's and we started
14:25
Flashing out ways to do it first writing down what we actually want there to be done And then there was one missing piece of the puzzle and suddenly because we had no money And then there was this Bangladeshi Union guy who was like this sounds really useful that will this be on our
14:44
Shared internet, and I was like yep. That's the plan okay. Let me go the year call the EU and Two days later. He was like yep. We have funding so and then stuff happens and then
15:01
Unfortunately no profit ever comes from what I do, but yeah, I still love it very very very much and Well the Brazilian guys in question one of them is here. Thank you Erica In really a very very short time because we had the documentation, but we actually wanted to happen
15:24
Almost complete before we started There was a zero one point zero a release which also works in plon5 and Now it's of course all gonna go wrong because I'm trying to do a live demo
15:44
Yes, this is a box standard plon4 three side I tried to do it with the five, but I just somebody broke the bit So reverted back to a box then that plan for three installs this add-on and
16:00
if we then go on to the city serum find contacts It looks very simple it needs a lot of CSS love to make it look pretty, but the functionality is all there You can search through different
16:20
contact types You can look for the groups and those groups are actually the groups that it pulls from our life database So it fetches those groups before we even get to speak and those are our the clean clothes Campaigns groups and are using our tax we have tax celebrities and lots of other things
16:43
But I can just search for me and see what happens That's pretty fast. It's going over the internet This would be me there. I am I'm in a lot of groups
17:02
I have an address. I have a job you were some people don't believe it, but I actually do have a job I'm not just hovering around conferences I work for the clean clouds campaign and For us most important I do Activities I'm registered for my for our forum in Hong Kong. Actually. I'm registered
17:24
Oh, no, I registered a few other people I had some interviews with the New York Times I emailed myself as a test and Activities for us is that's really useful to keep track of and it is really handy to have that available in
17:44
An internet because we are spread out over 17 countries and it's really annoying if my colleague in Spain tries to call H&M and Once they go on a rant and it turns out Somebody from Belgium just called them the week before and already told something that makes us look stupid
18:01
So you really want this centrally available? So your campaigners are armed with up-to-date knowledge what everybody else has been up to and so they can call but the necessary knowledge This may not look very spectacular but it is actually helping a lot for organization like us and you can click through and you can say like
18:23
There's an organization and Yeah, lots of people work for it And you can click on them. I'm not going to expose everybody's private data here, but you get the gist so and actually on a Reasonably full-size database. We have about 30,000 contacts in there and the activities number
18:44
In the hundred thousands because a lot of them are also automatically generated each time you send a mailing It is let's go back to the presentation because I think I have that here Well, if you as you see searching works
19:03
And you pull the tags and the groups from your installation of CV CRM you can look up the relations and activities and there is an API key per user so it's tied to the clone user and And they also need to have that same API key in
19:23
Whatever civic CRM use so our API keys are in our LDAP and I can read them from via past plug-in I read them into clone So that they're always up-to-date so I can say like our trusted staff members can see everything our interns don't get to see Exactly everything they go into the interns group and they can look up the address
19:44
But not all the activities because that would be bad because we don't screen our interns as well as we do our campaigners and I'm pretty sure you can directly pull that from MySQL MariaDB or whatever database you're using to host
20:03
CV CRM on and We don't test and Because CV CRM just needs to throw JSON at us It's faster than looking through CV CRM's own web interface It turns out PHP templating is shit. It's slow
20:24
We think clone can be slow at times wait till you see PHP Constructed table. It's really really really slow. So this is actually faster for us than using the interface of CV CRM itself
20:46
For those interested in tech where why it's also faster is because CV CRM in its own web interface Does sequential queries for everything and the queries are machine generated and they're not very optimal
21:02
We still use the same queries But we use G events to make them run in parallel so you can search for a lot of activities and sort them sort of out of order and Yeah, we're just using API calls and no PHP was harmed in the process Although we may have to revisit us because there's one
21:22
piece of API missing and we may have to write a CV CRM plug-in to get everything done, but Okay, if that's a one-time job, I'll actually do it or ask somebody else to do it And What is still a work in progress this
21:42
Integration is not finished yet Hector Velarde is still working on it We want also to add activities from clone directly We also want to add so you can add activities saying like I just called somebody or I just sent a mailing or just had
22:02
a telephone call Fetch more types of information one thing I really want to do and I also already found funding for is to fetch membership information as a pass plug-in And because that could be if people have paid their membership you could unlock part of a site
22:24
Because yeah, we keep our membership juice in CV CRM You can say yeah, here's your member only part where you get goodies and you only get to see this if you've actually paid and You can lie. Yeah, you can fetch that information live from CV CRM and grant access according to membership status
22:44
You can say our very special lifelong members Get very special access and even friendlier part of the website and stuff like that What is not happening for now and Was in the description of this talk, but we've decided oops
23:07
Sorry next speaker, I think I just broke this is the console What is not happening we first we wanted to integrate with clone forum gen And analog to watch the Salesforce integration did that it has an adapter where you can save information from flown forum gen
23:27
We Tried it a little bit, but actually it is not very nice Civi CRM actually has its own forums its web forums They're called profiles and they have no styling they come as
23:42
bare-bones Forums which are ideal for in an iframe and I know iframes are evil and they're bad but sometimes they're good because I can style them with the same CSS and Civi CRM can do the Validation directly on the backgrounds and it knows a lot more about validation
24:03
It can not only say does this look like an email address, but it can also say hey, we have a similar Email address already on file. Are you sure you're not the same person? and things like that or it can check while while you're Filling in a form if people are indeed a member and have paid their dues
24:24
So it's my it is nicer to use the forums that Civi CRM gives you directly and the clone forum gen would just Not add much functionality, but it would add a lot of code. So we were like, let's not do this What we decided not to do is to have mailings. That's functionality. That's usually also restricted to a few
24:47
Staff members. It's not somebody Something that everybody needs to do Writing your monthly newsletter and finding which target segments to send it to is usually a Clearly defined staff member and you can train them to use Civi CRM web interface
25:06
Adding contacts we also decided to skip because well that's more of our because of our security requirements and also because yeah it could be done but Then maybe somebody else have to step in and also we decided and let's not replicate all the admin forums
25:25
Where you set up like your currency your VAT your bank details That's just a lot of work for not many gains and But we do need help with this products
25:43
And how can you help I would love to hear people's use cases because for now it's modeled exactly on what the clean clouds campaign is doing and As I said before even we are not special so Anything we can do to generalize it. We will gladly do it
26:02
I will try to find funding for it if you have funding for it would also be great But I will also find funding for functionality that we don't need because I truly believe that things should be generalized. I Actually works and of course if you can program feature requests and pull requests are really handy and
26:28
If anybody speaks a little PHP that could be a great help because there are little pieces missing Civi CRM actually has a nice structure that gives you like boilerplate code for little add-ons
26:42
But yeah, it's it could be handy if people at least know how to write that securely um But most of all, I think the most important thing that we need is use cases It's sort of like what would you want to do with it? We're using it indeed. Also we have we have it with two different
27:04
backends one is for our enemies Which are big companies in the garment industry So we keep information on that and it's really handy and we have a separate instance of Civi CRM for our friends We separate our friends and our foes quite
27:23
quite handily into different backgrounds, but maybe other people use it for creative purposes and If you do, please let me know and let's talk Hector and Errico and Andre Nogueira are always happy to hear from people
27:46
and That's about it, I'm sorry, this is a slightly short talk does anybody have questions Yes, Kim
28:05
Yes Yes, so you poke little holes in the firewall to allow this IP address to get through But you could also theoretically not have it I mean
28:21
Civi CRM itself doesn't have Such a bad track rock record in security, but Drupal has we've all been doing the upgrade dance for Drupal get and those of us who have Drupal sites at our disposal and Yeah, that was like within four hours
28:42
There were live exploits and there are it's probably about 20% of Drupal sites are compromised So that's really annoying if you run them not in on the firewall You have to be on that security mailing list and have to make sure that you actually get an SMS when the mail comes and react instantly and not be too far away from
29:04
Internet access there. I mean partly it's due to their success because they are so big They're a big target if there is like well This was a spectacular security hold a lot of the Drupal better than one and within four hours You will have like automated attempts and that's really annoying. So, but yeah, we keep it securely behind a firewall
29:27
So anything more I can show you that I'm not cheating this is I can reach it This is me in city CRM and It has the same groups as we saw before and the same addresses and stuff
29:48
The code is on github Do we have any more questions On the sanity of this or why are we doing it's I
30:03
Mean I if I want anything that you take away is like don't write your own address database, please Please please don't Not in Plomino not in dexterity not in anything. It's not working out. You will get it wrong
30:21
CVC or M got it wrong the first versions of them have been horrible now We're at four point five and now it's they've covered most of the use cases They've learned the hard way and now it's really useful
30:41
How do I start because when we start this project I try to get my mind around CVS area
31:09
You have to install a Drupal site which isn't that hard But keep the Drupal site empty and the only add-on you have in there is CVC RM And then that's it you have to log in and you're at CVS part and that's I
31:26
Wouldn't say it makes that well, it's sort of makes sense. It's not it's not too bad It's slightly confusing but then and addresses are confusing naturally I mean you can define for each person an unlimited amount of addresses because people have
31:41
several addresses and stuff but I Find that massively confusing other people are happy with it, but if you're not used to it Yeah, it is a bit confusing, but you can just have a Drupal site just to host this
32:00
Even even if you have a Drupal site with web content, I would still keep it separate It's just not a good idea to have your most intimate data shared with your public websites That's just common sense. I mean your address data as an organization that is Your lifeblood. It's not your addresses. It's who you know, it's your
32:21
organizational memory That is where you find who had contact with whom after they've left and find a new job If you trade them all and make sure that they input all their stuff in there But if you haven't you should start doing that
32:42
No, it should just work exactly the same but I Actually never bother because I distrust WordPress's security even more than I distrust Drupal's I'm not sure if that's based on anything, but I had to pick one
33:21
We don't know And I'm not sure if I would want that in my address database But it could be useful I'm not sure I would want it because that's what people themselves say who they know and
33:42
I mean I get reactions or requests for being contacts on LinkedIn from the strangest people that I've just met at a conference or something and I Actually want that I want the information to be verified and said like this is what we as an organization Think this is the right contact information on you and not what you yourself saying that may be slightly dictatorial but
34:07
Yeah, a lot of the information on LinkedIn is posting and sort of self Blowing yourself up to make you look slightly bigger than you are and it can be useful to for as research
34:21
But then I would probably Try to pull that in from the LinkedIn API directly I wouldn't mix that necessarily with the data that I have on CVC or M but your use case might be I mean we're keeping literally track of our enemies and
34:45
I'm not interested in what they present on LinkedIn I am interested we pull data in but by hand mostly we pull in stuff that we know like who worked for whom and Yeah, but
35:05
Yeah, if you want LinkedIn, I I guess I Guess there may be a plug-in that pulls that in directly to CVC or M. I have no idea Don't I'm not quite sure about that one. I mean you can obviously
35:24
Store somebody's LinkedIn profile and their Twitter name and their tumblers and their whatever But I'm not quite sure I would want to do the networking Stuff on it Also because here what you pull in well part of it is now what we pull in
35:47
Over the API and that we're showing my end goal is also to have this Also produce that's not in the current scope of the project, but from the activities. I've done some experiments
36:01
You can do really interesting analysis if you use Gephi, which is sort of a network analyzing tool You actually have sort of like semantical data Like who did call whom and whatever and if you visualize that you get really nice results
36:21
Like surprising results. Also, you should so try Gephi once on your own Facebook profile. It's Kind of scary but kind of interesting
36:43
more questions Comments, okay Then we all have some spare time