Tuesday, March 13, 2018

My top 3 to gather user feedback in an Oracle APEX app


In every Oracle APEX application we create, we add a feedback mechanism. We're not only doing this during the development phase, but we also leave it enabled in production.

We want to give the users the ability to give feedback to the team in a structured way. It should not be an hassle to give feedback, one click for the user where he can say what it's going; if he likes it, if something can be improved, if there's a bug... but at the same time we want as much info as possible at the time the user enters this feedback. What app are they in, which page are they on, what session information was there...

Most of the users really like to be heard and the feedback mechanism in our apps helped us a lot to engage with our customers.

Here're my top 3 ways of providing such feedback mechanism in an Oracle APEX app:

Feedback link and Team Development (pre APEX 18.1)

This method I started to use with Oracle APEX 4.2 and beyond. I blogged about using this feature here and here before.

In APEX you can create a new page; called the Feedback page. It will not only create a page, but also a navigation bar entry. Some screenshots of the wizard:


Which will result in:


I prefere to use the Modal dialog option as it feels more integrated in the app. This page is a normal APEX page, so you can further customise. For example you can make the Application and Page fields hidden.

The feedback that is entered is stored in Team Development - an area in APEX where you can do your project management.



Feedback feature in Blueprint and the new APEX 18.1 app creation wizard

In Oracle APEX 18.1 the application wizard got an overhaul and is now inline with the blueprint feature which was enabled previously on apex.oracle.com.


Enabling feedback is a matter of ticking a checkbox... and the result looks awesome to me :)


The user can share his feeling by selecting a smily, enter some feedback and include an attachment. When you use APEX 18.1, you will see the nice floating label (label inside box) for the feedback text item. Also when you submit feedback you get a nicer message that the feedback was submitted, instead that the dialog will automatically disappear as with the standard feedback page in 5.1 and earlier.

In Blueprint on apex.oracle.com and in APEX 5.2 EA1 (which became now APEX 18.1 EA2) the feedback was stored in its own table, but since APEX 18.1 EA2 the feedback is stored again in Team Development. In the Administration section there are a couple of screens that query the apex_team_feedback view. It looks like many of the Blueprint features that were showcased before, became native APEX features (e.g. email framework, feedback).


When clicking on User Feedback and the pencil you see the details for every entry.


You can enter a response which will update Team Development by using the APEX API  apex_util.reply_to_feedback.

What I find interesting is that APEX 18.1 made a change in their pages; it catalogs the pages now as Component or Feature. A feature contains more than just a page, so the Feedback page became the Feedback feature and will create more pages than just the feedback page itself. Just like if you click the box with Blueprint, it can add the administration section and navigation bar entry.


The feedback mechanism we knew in APEX 5.1 and before, got a nice update in Oracle APEX 18.1, it might be worth doing an upgrade once 18.1 hits production.
One nice addition would be the ability to add a screenshot and annotate the screen like Martin and I build a long time ago. It would save the user creating a screenshot and uploading the file.

Feedback with REST API

If you are using another issue or ticketing system it might be worthwhile to gather the feedback there. You can still create the feedback page, but add some additional processes (or replace the team development process) so the feedback is stored in your favourite tracking system like Bugzilla, Jira, Redmine and others. In the next section I'll show how to integrate with two issue tracking systems we use.

Oracle Developer Cloud Issues

In the projects where we use Oracle Exadata Express, we use Oracle Developer Cloud service, which you get with your Exadata Express account to manage our project.


The nice thing is that you have a Git repo and Issues all available and all the other things around to mange and streamline your project. In the feedback page I added a call to a PL/SQL procedure, so an issue is created whenever feedback is given.

The PL/SQL package I wrote to create an Oracle Developer Cloud issue:

Bitbucket Git Issues

When we started in 2015 with the development of APEX Office Print, we used Team Development in Oracle APEX to manage the development and for version control we used Bitbucket (Git repo). We use different technologies like PL/SQL, APEX, Node.js, Markdown, CSS and HTML. A bit later we decided to use the issues in Git for our node.js code as it made it easier to track an issue/feature and a certain commit (we enter the issue number when we commit).


Bitbucket has also some nice features to integrate Trello boards and Bitbucket cards.

At one stage I wanted to add all our Team Development features as Bitbucket issues, so I wrote a small script that calls the REST API and creates the issues for you:

Nothing stops you to add a process on your Feedback page in Oracle APEX to create a Bitbucket issue automatically. If you copy everything inside the for loop, you are golden.

I hope this post helps you to get user feedback... and don't hesitate to put in the comments what you do to engage with your users.

4 comments:

  1. Hi Dimitri,

    Many thanks for this post. It is mega-useful!

    Cheers,
    Patrick Cimolini

    ReplyDelete
  2. Is there any way to gather additional info and store it in the team development tables? Like a column for what type of issue (bug, new feature)?

    ReplyDelete
  3. Anyway to add additional columns/fields to data collected and have them stored in the team development tables? I would like the old issue type (Bug, new feature) add so I can group items..

    ReplyDelete
  4. Sure, you can store additional info.
    If you look at the doc to submit feedback, you find some additional attributes you can set: https://docs.oracle.com/en/database/oracle/application-express/19.1/aeapi/SUBMIT_FEEDBACK-Procedure.html#GUID-94353F7F-E1CA-409C-A673-D38AF6D1EFDE

    APEX_UTIL.SUBMIT_FEEDBACK (
    p_comment IN VARCHAR2 DEFAULT NULL,
    p_type IN NUMBER DEFAULT '1',
    p_application_id IN VARCHAR2 DEFAULT NULL,
    p_page_id IN VARCHAR2 DEFAULT NULL,
    p_email IN VARCHAR2 DEFAULT NULL,
    p_screen_width IN VARCHAR2 DEFAULT NULL,
    p_screen_height IN VARCHAR2 DEFAULT NULL,
    p_attribute_01 IN VARCHAR2 DEFAULT NULL,
    p_attribute_02 IN VARCHAR2 DEFAULT NULL,
    p_attribute_03 IN VARCHAR2 DEFAULT NULL,
    p_attribute_04 IN VARCHAR2 DEFAULT NULL,
    p_attribute_05 IN VARCHAR2 DEFAULT NULL,
    p_attribute_06 IN VARCHAR2 DEFAULT NULL,
    p_attribute_07 IN VARCHAR2 DEFAULT NULL,
    p_attribute_08 IN VARCHAR2 DEFAULT NULL,
    p_label_01 IN VARCHAR2 DEFAULT NULL,
    p_label_02 IN VARCHAR2 DEFAULT NULLl,
    p_label_03 IN VARCHAR2 DEFAULT NULL,
    p_label_04 IN VARCHAR2 DEFAULT NULL,
    p_label_05 IN VARCHAR2 DEFAULT NULL,
    p_label_06 IN VARCHAR2 DEFAULT NULL,
    p_label_07 IN VARCHAR2 DEFAULT NULL,
    p_label_08 IN VARCHAR2 DEFAULT NULL);

    Alternatively, you can also concatenate page items to your comment and build up your comment yourself.
    e.g. 'Comment: ' || :P1_FIELD || '
    ' ||'My item: ' || :P1_ITEM

    Hope that helps,
    Dimitri

    ReplyDelete