Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Matthieu Nelmes 102 posts 385 karma points
    May 04, 2017 @ 16:06
    Matthieu Nelmes
    0

    How reliable are Umbraco Forms?

    Ok, I'm not trying to ruffle any feathers here. Just after honest opinions.

    I have a requirement for what will essentially be a survey platform where users can submit survey responses, in return for credits. A logged in MemberID will need to be stored against each submission so that the correct amount of credits can be credited to the users account.

    We're looking at 100+ surveys.

    Whilst Umbraco Forms seemed like a good solution at first due to the ability to allow the client to quickly create new surveys as required, I'm starting to see a few cracks in the solution.

    Firstly, Json, Json everywhere! Ok, I get it. Having form and workflow data stored on disk makes for less db calls. But this is a horrendous mess. Not only is it un-reliable (Json files not being updated/removed, weird behaviour with duplicates http://issues.umbraco.org/issue/CON-1231 http://issues.umbraco.org/issue/CON-1051) but I can not find any sensible way to essentially clear the Json files and rebuild like you can do with the XML cache. In addition, workflows are totally unreliable for exactly the same reasons.

    Next, weird behaviour/un-pretty error handling. Create a form, workflow, and add created form to page template, next delete form and BOOM! error. Seems to be linked to this (http://issues.umbraco.org/issue/CON-1034)

    I'm really struggling to get a stable environment and am tempted to start looking for alternatives to recommend to the client.

    Open to suggestions, even tempted to build a custom form/survey generator from scratch.

  • Matthieu Nelmes 102 posts 385 karma points
    May 19, 2017 @ 08:30
    Matthieu Nelmes
    0

    The silence speaks volumes...

  • Frans de Jong 548 posts 1840 karma points MVP 3x c-trib
    May 19, 2017 @ 09:18
    Frans de Jong
    0

    I'm running a site where I use a multipageform to with 16 pages with different questions. On the result page I do a calculation with the result to show what pet suits you the best.

    This site currently has 141k entries and still running super smooth. Even the export function isn't takes no more than a couple of seconds. So forms is super stable.

    How do you add the form to the template? I always use a formpicker or I check if the form exists otherwise it could go wrong indeed.

  • Matthieu Nelmes 102 posts 385 karma points
    May 19, 2017 @ 09:24
    Matthieu Nelmes
    0

    Thanks for the reply. Form picker is being used to add to the template.

    Our setup is slightly different to yours. I'm assuming it's the 1 form to multiple pages?

    We need multiple forms (currently around 100) within different pages and categories. Are you using a custom Workflow? I've been finding it incredibly flakey at the best of times.

    Also, exporting is a chore with multiple forms so I've written a custom back office export tool to download all entries within a given date range. Even then I had to do some modifications to store the entry data in a separate table as by default, form data such as the fields are stored in Json format, whereas the actual submission data is stored in the DB. So that was never going to scale gracefully.

    I'm talking through a rebuild with the client and currently Forms is not going to be on the cards.

  • Frans de Jong 548 posts 1840 karma points MVP 3x c-trib
    May 19, 2017 @ 09:38
    Frans de Jong
    0

    We have multiple sites running multiple setups.

    In one case we have multiple event subscriptions in one form and a custom export able to filter on formfields without any need of a custom table. I dont never see the json when exporting. '

    When I use the following I get keyvaluepairs that are easy to work with.

            FormStorage formStorage = new FormStorage();
            RecordStorage recordStorage = new RecordStorage();
    
            if (formGuid != null)
            {
                List<Record> exportRecords = new List<Record>();
                Form form = formStorage.GetForm((Guid)formGuid);
                if (form != null)
                {
                    List<Record> recordList = recordStorage.GetAllRecords(form);
                    foreach (Record record in recordList)
                    {
                        KeyValuePair<Guid, RecordField> recordEventField = record.RecordFields.FirstOrDefault(x => x.Value.Field.Alias == "key");
    
                    }
                }
            }
    

    We also use custom workflows a lot without any problems.

  • Matthieu Nelmes 102 posts 385 karma points
    May 19, 2017 @ 09:53
    Matthieu Nelmes
    0

    Yes I've seen the recordStorage.GetAllRecords() method in the docs.

    You won't see Json in the export. What I meant was that how the form is configure, fields, layout etc is stored in a Json file in UmbracoForms/Data/forms .The file is saved with the Guid that you are querying.

    On a side note, what version of Umbraco + forms are you using? I've gone between 4.2 and 4.3. I see 6 is available but only compatible with 7.6

  • Frans de Jong 548 posts 1840 karma points MVP 3x c-trib
    May 19, 2017 @ 10:00
    Frans de Jong
    0

    I've used them all since its called Forms.

    I see what you mean about the json in that folder. There should be a entry in the database to restore the file when it's missing. In practice I only had the problem once when I forgot to delete a reference to a test form.

  • Matthieu Nelmes 102 posts 385 karma points
    May 19, 2017 @ 10:03
    Matthieu Nelmes
    0

    There should be a entry in the database to restore the file when it's missing

    That would be incredibly useful!

    I could not find anything in the documentation and there are plenty of occasions where I've needed to republish all of the forms. For instance when moving from a pre-live to live environment where the db is in-sync but the files are not. Similar to refreshing the XML cache

  • Paul Wright (suedeapple) 277 posts 704 karma points
    May 19, 2017 @ 11:14
    Paul Wright (suedeapple)
    0

    I agree, I dont like the fact that Umbraco Forms (UF) relies heavily on keeping things in memory, and writing files as JSON. I've had numerous UF fails, whereby I've had to obtain the JSON from a backup. It's also difficult to keep in synch when you have different environments where fields/workflows get changed.

    Having said that, if you have a site which requires the end user to put quite a lot of custom forms on pages, then UF can be very useful.

    I have a site using Umbraco Forms as "weekly competition" submissions. With 5K+ entries per week. I did think I'd see some perf inssues, but UF seems to be standing up.

    Evaluate the pros-cons for your site, and go with it. End of the day, you're being paid to make a descision - be bold and give it a whirl :-)

  • Matthieu Nelmes 102 posts 385 karma points
    May 19, 2017 @ 12:25
    Matthieu Nelmes
    0

    Thanks for some additional insight.

    You're right, it's a difficult trade off. Especially as the client would like to customise and add new forms on a regular basis. Which UF is incredibly good at.

    I just wish all form data was stored in the DB along with the responses.

    The volumes you are seeing are inline with the clients expectations so I suppose I shouldn't have problems with performance.

    Thanks, once again

  • Paul Wright (suedeapple) 277 posts 704 karma points
    May 19, 2017 @ 13:23
    Paul Wright (suedeapple)
    0

    One thing that is a "major stinger", is that UF dosent allow you to edit the form data (easily). And it's very clumbersome to generate reports if you are using SQL. You'll end up with pieces of paper of GUID's stuck to your screen :-)

    You could have a "workflow" which stores the data as umbraco nodes - but then you will see perf issues.

Please Sign in or register to post replies

Write your reply to:

Draft