14 Replies Latest reply on Dec 16, 2015 7:42 AM by rporter

    Solution to become multi customer

    glorifindal

      Hi there forum,

       

      We have a solution that has been in the building for over 3 years - it's comprised of 10 Files.

      It started out as an installation per customer ... and now a change has been asked for: 250 + clients are going to share it - but data visibility needs to be on a customer basis.

      It has not been designed for multi-customer usage - we did NOT include record level security.


      I have complained and it has been acknowledged - now we need a solution.

       

      I now have the following decision to make: What possible implementations / modifications represent the best solution.


      1) Use FMP Dev to create 250 instances of the application - include Customer Short Name in the Solution name = 24 hours for every upgrade (5 minutes per solution renaming using the FMP Dev tools - hardware is not an issue.


      2) Redesign the solution to allow for multi-customer - taking into account data visibility per customer - this will need to take reports into account.


      At the moment it's set up to use external authentication.


      Would anyone like to point out the pros / cons to each of these solutions?


      Many thanks in advance


      G

        • 1. Re: Solution to become multi customer

          I really can't speak to what time would be involved in reprogramming 10 files to work with multiple clients. However, we are building several solutions that are multi-customer. There are a few things that you should consider in going to multi-customer.

           

          - most child relationships will need to have the customer id in each record. As I'm sure you know, you need this to do record level locking in FM security. You may not need this in some cases say when a contact id is used as the foreign key for an email and the contact id by definition is unique. But as a matter of course we added the customer id in all cases. Never know when you might want to pull all emails for a certain day in the future across all contacts.

           

          - also all searches need to include the customer id as one of the search parameters. If you don't do this although the search result may include the records you want, it may also include records where every field may say "ACCESS DENIED" in a very unpleasant way.

           

          - because of the last point, we disabled the status bar for all client users so all searches were done with a button to start search and a button to perform the search. The search, no matter what fields were selected must also include the customer id to avoid the "ACCESS DENIED" problem. This will remove some of the nice feature of the status bar although you can build a 'show all' button.

           

          - you will need to rebuild or modify most if not all of your relationships to include the customer id.

           

          Of course the main great feature of the multi-customer approach is that if you need to fix a glitch or add a new feature you can do it one time and not need to access 250 separate files to do the fix or the update. To me that would argue strongly for the multi-customer approach.

           

          Then if you decide to go the multi-customer route there is the question of whether it would be faster to build your solutions from scratch or to rework the existing files.

          • 2. Re: Solution to become multi customer
            Mike_Mitchell

            How many simultaneous users are we talking about here? 250 clients is people, or companies?

            • 3. Re: Solution to become multi customer
              Extensitech

              kbleicken wrote:

               

              - also all searches need to include the customer id as one of the search parameters. If you don't do this although the search result may include the records you want, it may also include records where every field may say "ACCESS DENIED" in a very unpleasant way.

              This is not quite true. If the record access is limited, and a Find is performed, inaccessible records will not be in your found set. It's only if you go to a layout with a pre-existing found set, or "show all records" that you see the <No Access> values. Thus, assuming you are restricting record access, it's not that you have to modify the finds, it's that you have to make sure you don't get to a found set without doing a find.

               

              Chris Cain

              Extensitech

              • 4. Re: Solution to become multi customer
                glorifindal

                Many thanks - a few good pointers therein ... adding the Customer ID to EVERY relationship / Esql query might be a bit much though (as far as re-engineering goes)

                 

                I'll present the work involved and timescales to those decision makers who ignored this in the first place - see what they say :-)

                 

                But again many thanks for the pointers

                 

                Kindest

                 

                G

                • 5. Re: Solution to become multi customer
                  glorifindal

                  [quote] 250 clients is people, or companies? [/quote]

                   

                  250 is companies - perhaps 3 - 6 users per company.

                   

                  There are currently 8 companies using the product - all separate from each other.

                  These 250 companies are being managed by one company - who wants to withdraw from the management.

                  My company has won the take over bid - and are asking if THIS particular product can manage the data.

                   

                  I would have said "yes" - no problem - but ten they spoke about the data visibility issue...

                   

                  Kindest

                   

                  G

                  • 6. Re: Solution to become multi customer
                    Mike_Mitchell

                    Even using a reasonable demand factor (say, 2 employees per company simultaneously using the app), you’re going to strain the server’s capability if you try to put them all on a single instance. You’re probably better served to divide them up into a number of instances somewhere between 1 and 250, just from the load standpoint.

                    • 7. Re: Solution to become multi customer
                      glorifindal

                      Thanks Mike,

                       

                      yes, I sat down and did some calculations earlier - as well as discussed user issues etc with the project leader.

                       

                      I have asked for a user count / record load estimate / support structure etc before me start making any decisions ... there is too much scope here for chaos to ensue.

                      However, hosting infrastructure itself is not an issue here, so that removes one of the problems. If I asked for 50 servers, I would most likely get them.

                       

                      It's a massive project, and is a real chance to learn ...

                       

                      kindest regards

                       

                      G

                      • 8. Re: Solution to become multi customer
                        Mike_Mitchell

                        That's not the point. A single instance of FMS can only host so many clients before it begins to bog down. Even 250 is oftentimes pushing it (without very careful optimization of both the solution and the server itself). I don't think you really have a choice other than to go with multiple instances. If you wanted, you could spread the load across, say, 4 servers and keep them synced with something like EasySync.

                         

                        But this is most likely too much load for a single install, which renders the question largely moot.

                        • 9. Re: Solution to become multi customer
                          glorifindal

                          Well - what I have actually suggested is the following (after discovering that the customers themselves do not need access to the DB - only certain reports)

                           

                          Go with adding the customer id - customer selection.

                          Getting the data loads / counts etc.

                          Splitting up the customers into a manageable amount of DB instances / servers - dependent on the data loads / counts (looking for a rough average)

                          These will actually be support by teams of a maximum of 5 persons allocated per customer, perhaps to more than one customer.

                          There is no need for syncing ...

                           

                          Still an exciting episode and learning curve ahead.

                           

                          many thanks

                           

                          G

                          • 10. Re: Solution to become multi customer
                            Mike_Mitchell

                            I think that's an excellent path forward.

                             

                            For reference, I had a very similar situation some years back. When I got the solution, it had 13 separate instances for different facilities across the company. By consolidating code and function (and merging data sets), I got it down to 8 before they retired it. But putting everything in one instance was out of the question. Much too large for that.

                             

                            Good luck!

                            • 11. Re: Solution to become multi customer
                              glorifindal

                              Many thanks for the input Mike, and your agreement is also a real help.

                               

                              Consolidating code - that is definitely an interesting concept ... I will need to look at that also

                               

                              Kindest

                               

                              G

                              • 12. Re: Solution to become multi customer
                                rporter

                                Mike, for the purpose of learning.  What do you mean by instances?

                                • 13. Re: Solution to become multi customer
                                  Mike_Mitchell

                                  An "instance" is a copy of the solution being run at a specific location with a specific purpose or user base. For example, if glorifindal creates 5 copies of the solution and provides them to different customer groups, there are 5 instances.

                                   

                                  Another use is for copies of the solution in various stages of development. For example, you might have a development instance, an acceptance or sandbox instance, and a production instance.

                                   

                                  HTH


                                  Mike