Best of luck, but don't fall into the SugarCRM design trap

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Jason Judge
    Junior Member
    • Jun 2014
    • 5

    Best of luck, but don't fall into the SugarCRM design trap

    SugarCRM has been very successful, and marketing has been a very big part of that. The technology is very old, however, and that has led innovation to fall by the wayside over the years. I think they understand this now, which is why they have closed the doors on the Open Source side and are desperately trying to refactor their code base and change the way it basically works. Some would argue that the problem is not one of technology, but I would strongly disagree - their codebase has gone as far as it can, and has reached so many road blocks that it is extremely difficult to advance it without pulling a lot of it down and rebuilding it from the ground up. By today's standards, the code is a pile of excrement, in short.

    So this is where Espo can come in. You are starting with a great code base, a great number of open source libraries, and dependency management (composer) and decent templating systems, and SugarCRM as a prototype. However, if you base the design too closely on SugarCRM, you may start running into some similar limitations. I think you just need to be aware of these as you move forward.

    For example, SugarCRM puts contact and account addresses onto the contact and accounts records, and ultimately the contact and account database tables. That immediately knocks out a whole community of potential use-cases. It may be fine for one purpose only - selling stuff to companies - but Customer Relationship Management is a universe bigger than that, and is VERY poorly served by the CRM systems available, all of which base their internal data structures off the same old SugarCRM. It is maddening and frustrating.

    Addresses are entities in their own right, and can have many different formats and layouts around the world, and different ways of validating, and drop-down lists for countries, and lookups for counties/states/regions/provinces - addresses are complex. A few fields on the contact record is a poor way of representing them. Contacts can also have many addresses - a work address, and home address, a temporary address, an invoice address when they are purchasing a service or product personally - the list is limitless.

    And then what are contacts? They are people, simply, people. As a person, they may be employed by an organisation. They may be employed by several organisations. They may go to a university, be a member of an organisation, or several organisations, have their post delivered to another, and be seconded for a project at yet another. Relationships between people and organisations are complex, and every use-case introduces more relationships and *reasons* for those relationships. SugarCRM does not allow you to put properties onto a relationship, and that has been faithfully copied here.

    So, my intention was not to come here and criticise. It is me venting that nowhere - and I mean NOWHERE - is there a decent Open Source CRM that truly models relationships in a generic fashion, and does not start with the same basic set of promises that it will be used only by salespeople on a phone, talking to contacts, each of who represent a single company who will be doing the buying. It is a shame, and I was hoping EspoCRM would help to fill this gap. As a framework it may be able to, but it does not appear this is a direction that the project is taking.

    I have have this all wrong, but it is difficult to see where the project is going, with so little guidance, no public git repository (or a very hard to find repository).

    So, best of luck, the product looks great in what it does, and is smooth and easy to use and install. I just feel that it is trying to follow in the exact steps of SugarCRM and is missing some incredible opportunities that are just off the linear path that SugarCRM took, and that could meet the needs of many organisations that are still having to manage all their relationships with spreadsheets and bits of paper. The data model is a big part of this, because the data model you start with is going to hold you back.

    I hope you take this in the right way - meant with the best of intentions. This [turned into a] rant is just the result of not being able to find that perfect CRM for member organisations that do more than just sell to companies through contacts.

    -- Jason
  • UnnamedUA
    Senior Member
    • Jun 2014
    • 101

    #2
    I realized that he had in mind, I see the problem of communication contact with different organizations and their intersections. Also see that you need to discuss this point, initially ..
    Later, I'll draw a block diagram of your vision possible links.
    Last edited by moderator; 06-27-2014, 04:50 PM.

    Comment

    • UnnamedUA
      Senior Member
      • Jun 2014
      • 101

      #3
      Do I understand what he says about the flexibility of links between different forms of data, contact person and account.
      What would you say in the layout account, where the person is a director, with one story of interaction and goals, and in the second case, when a person performs like a natural person, the other set of stories and interaction purposes.



      Source: https://drive.google.com/file/d/0B6y...it?usp=sharing

      gdrive + https://chrome.google.com/webstore/d...ncjdmlhcmaachm
      Last edited by moderator; 06-27-2014, 03:34 PM.

      Comment

      • iscon
        Active Community Member
        • May 2014
        • 187

        #4
        Excellent comment - Alex (one of the creators of Espo) just said you might have hacked my brain...

        On a more serious note: Yes you are absolutely right, Sugar and all the other better known CRMs do have a very traditional approach when it comes to depicting relationships. They still focus on an ancient model which knows only companies and employees and nothing in between. They all forget (or chose to ignore based on a faulty data model) that the landscape has changed dramatically - there are no lifetime jobs anymore, people change frequently between being self-employed, employed and associated (whatever that means) and many times all at the same time.

        How would any of these systems address a person (which by definition is a single entity, characterized by name and social security number only) who works as employee, as board member, as chairman of an NGO, as politician and finally as private person who is eager to buy a yacht or a Tesla? In all these functions the very same person has different titles, different addresses and phone numbers and of course belongs to a different target group. As CEO he or she might buy Teslas by the dozen but as a private person his wife is the one who makes the buying decisions.

        The sad story is that we actually developed such a system some time ago (as a bespoke development based on Sugar) and since I still work with this particular customer I know that it actually works - much better than anticipated.

        I am working closely with the developers of Espo (disclosure!!) and these guy did and do a wonderful job with EspoCRM. Now it's time to convert a decent product into something really exciting! But since this isn't going to happen without us out there I am trying to engage people to help or at least to contribute ideas. Which you thankfully did.


        ​
        ------------------
        Robert Laussegger
        iscon group
        http://www.iscongroup.net
        mailto://info@iscongroup.net

        Comment

        • yuri
          Member
          • Mar 2014
          • 8440

          #5
          Hello

          Making contacts linked to accounts as many-to-many is a good idea. I've been thinking about that. But there are some problems with implementation.

          Some of points:

          1. Contact has multiple roles in one Account. E.g. one guy is both CEO and developer in the small company. In this case we need two records in the relationship table. Implementations of that may have some complications. Do you thing this is an essential point or doesn't worth to consider it?

          2. Lets imagine we implemented accounts and contacts related as many-to-many with roles. The situation when one Contact related to two Accounts. This contact has some activities recorded in DB and related to this Contact (archived emails related by email address id, meetings related through contacts_meetings table). The problem is how to distinguish which Account this activities belong to when we on Account page.
          If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

          Comment

          • Jason Judge
            Junior Member
            • Jun 2014
            • 5

            #6
            Thanks - glad I'm not alone in finding so many systems have such an outdated view of customer relations (and glad it didn't come over as just a big whinge). The old model has worked well for others as they focus on lucrative high-volume sales-oriented organisations. But the kinds of small organisations that we try to support, which are too numerous to count, are kind of left out of the picture. There are propriatory products that we find crop up in many organisations, but the clients are always battling these systems and having to create a non-ending stream of "workarounds" to achieve what they want.

            I'll dig a little deeper into EspoCRM and see just how flexible it is, and see if there is anything more than just big talk that I can contribute. Is there a public git repository that can be forked for trying things out?

            Comment

            • Jason Judge
              Junior Member
              • Jun 2014
              • 5

              #7
              I do love the AJAX editing of the forms. If workflow were to be included, would the framework be ready for interactions between items in the same form? I have no experience of JS application frameworks (beyond simple jQuery stuff) so that may sound a silly question, but I realise some frameworks are declarative and allow elements to be bound to data sources and to each other, so stuff updates on the page automatically (e.g. update a first name, and have the full name automatically update to match it). Anyway, a large proportion of custom needs for a CRM tend to come down to workflow - rules and triggers bounds to actions and updates.

              Comment

              • yuri
                Member
                • Mar 2014
                • 8440

                #8
                Jason, we didn't publish the repository public yet. Not sure when we will do that. We are going to develop the product up to some point before make the repository public.
                If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

                Comment

                • yuri
                  Member
                  • Mar 2014
                  • 8440

                  #9
                  Originally posted by Jason Judge
                  I do love the AJAX editing of the forms. If workflow were to be included, would the framework be ready for interactions between items in the same form? I have no experience of JS application frameworks (beyond simple jQuery stuff) so that may sound a silly question, but I realise some frameworks are declarative and allow elements to be bound to data sources and to each other, so stuff updates on the page automatically (e.g. update a first name, and have the full name automatically update to match it). Anyway, a large proportion of custom needs for a CRM tend to come down to workflow - rules and triggers bounds to actions and updates.
                  I believe you mean dynamic forms when the logic is declared somewhere. From my point of view Workflow is rather business logic over entity (for example, after entity saved and some conditions are met then do something). We have plans for that (dynamic forms) but not for forthcoming releases. For now, it's not complicated to do in JavaScript. It's already done for some forms in Admin panel).
                  If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

                  Comment

                  • Jason Judge
                    Junior Member
                    • Jun 2014
                    • 5

                    #10
                    I'll keep a watch out for that :-)

                    I understand the issues with many-to-many relationships, and it is complicated modelling the real world. But that is the real world, for better or worse. I wonder if the solution is in some kind of context switching? You could deal with a contact as a CRM and see activity related to that, then deal with the same contact as a developer later, and deal with a completely different set of data in that context. I don't know how that would work, or what it would even look like, but it is something to think about.

                    Comment

                    • Jason Judge
                      Junior Member
                      • Jun 2014
                      • 5

                      #11
                      Just to continue with this theme, here is something else that SugarCRM did very *very* wrong IMO and you need to stay way clear of doing the same thing.

                      SugarCRM is a nightmare to manage to manage in change control (git in particular). The reason is that making changes through the admin screens resulted in files being written to the filesystem - all over the application. The problem is that changes can be made to a production system that cannot be tracked in git. The production and development systems then become woefully out of sync with each other. Even adding a value to drop-down list involves files changing. How do you keep track of files in source control - PHP scripts - if they keep changing in production with no oversight from the developers? It is a bad situation.

                      If a system needs to change files - if it *really* needs to change them - then make sure they are all kept in one place, preferably managed through a single API. The rest of the application can be locked down and secured, leaving just one place where the system override files are updated. It is still not ideal, but at least those files that may get changed on production can be managed as an exception, with perhaps automatic commits back to a master repository so changes are visible to all and can be merged back to development environments as required. The process is going to end up a little more complicated than that, but it will be a good start IMO.

                      This may be something you have already thought about, but I can see files get created in custom/Espo/Resources/layouts/ if, for example, I move a few fields around on an input form. Maybe the solution is to have the build environment (layouts, fields etc) as a separate tool that is not available in production. It could then generate the migration scripts (for the database) and the install scripts for the new templates and scripts for installation onto test and production in a controlled release.

                      Some thoughts, anyway.

                      Comment

                      • cube
                        Member
                        • Jun 2014
                        • 30

                        #12
                        XRMS had a good attempt at 'Relationships', however they are very out-of-date looking now.

                        XRMS - http://360team.ca/demo/xrms/login.ph...ate%2Fhome.php (user1, user1)
                        For example - Look at > Contacts > Peter Lustig (bottom left 'Relationships'), or
                        > Companies > ABC Board of Directors (bottom left 'Relationships')

                        When development of XRMS slowed, many wanted to migrate away from XRMS, but they couldn't recreate the valuable 'Relationships' in the transition.

                        Comment

                        • yuri
                          Member
                          • Mar 2014
                          • 8440

                          #13
                          Jason,

                          Way 1:
                          • Do customization in application/Espo/Modules/{YOUR_MODULE}/Resources manually.
                          • Add custom/Espo/Resources to .gitignore and allow CRM Administrator to customize via Admin UI on production.
                          Way 2:
                          • Forbid CRM Administrator to manage layouts, fields, relationships on production.
                          • Set developer team responsible for all these customization.
                          Way 3:
                          • Do not keep your production as a git repository. Create modules and install/uninstall them on production. Installable modules are not supported yet but will be.
                          Last edited by yuri; 06-30-2014, 07:15 PM.
                          If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

                          Comment

                          • yuri
                            Member
                            • Mar 2014
                            • 8440

                            #14
                            We have plans to support multiple phone numbers per entity and multiple Accounts for one Contact.
                            If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

                            Comment

                            • yuri
                              Member
                              • Mar 2014
                              • 8440

                              #15
                              Jason

                              In the next version it will be possible to declare dynamic form logic. Depending on some field value can force to hide, show, make required another field. The logic is declared in JSON format.
                              If you find EspoCRM good, we would greatly appreciate if you could give the project a star on GitHub. We believe our work truly deserves more recognition. Thanks.

                              Comment

                              Working...