Troubleshooting Guide
A general primer on how to troubleshoot problems and report bugs, with an emphasis on Digital-Clay.
Goals
There are two alternative goals for troubleshooting problems:
Understanding the problem and possible causes as best as possible so that the issue might even be solved on the spot without R&D. I.e. the problem may be due to a lack of understanding or a missed detail, or it may be solved with a temporary workaround or alternative feature to replace the specific misbehaving feature.
Collecting as many clues and details as possible so that R&D can reproduce and fix the problem.
Anatomy of a Problem
Since Digital-Clay is a generic tool for building solutions and no two solutions are ever the same, detailed troubleshooting and collection of information is often invaluable, if not critical, towards solving the problem. It may even be impossible to reproduce some problems in other environments simply because there are many specific and unique factors that contribute to the bug that may not exist anywhere else.
When submitting bug reports, the important question to ask is “What would R&D need to run the exact same actions that I just ran on another machine, and thereby reproduce the bug?”
Even if you can describe and reproduce the problem, R&D may not be able to recreate the environment necessary to debug the problem due to a lack of customer-specific resources or information.
The possible elements that together create a specific problem are as follows:
The Program
The code or program itself. R&D always has this so the only necessary information here is the specific product version in which the problem was found. A bug may only exist in one specific version and sometimes customers may not have the latest version or may even have a beta version installed.
The Implementation
This is split into the following sub-elements:
The data. This includes records, users, permissions, tables, fields, links and field properties. In other words, the database. Roughly 20%-50% of bugs are data specific, if only because the bug only appears when using specific fields as filters or when joining two specific tables. Also, some bugs may have to do with security permissions, or form layouts, which in turn are dependent on tables and fields. For these reasons, a copy of the database is often necessary in order to reproduce the bug.
Document Templates: Any problem that has to do with generation of documents from templates must be reported along with the document template
HTML file.
The Sequence of Events
This includes every action leading to the bug. This is by far the most important element.
The critical thing to understand is that the sequence starts from the moment the Digital-Clay application is launched!
Examples:
Which client was launched (Station, Studio).
What username and role was used to login
Whether the user stayed offline
Every item the user clicks on leading to the problem.
Every setting or field used to build a query. In other words it may be a combination of everything that was added and not just the last thing that was clicked on.
The more details the better. Sometimes it's necessary to know whether the user used the keyboard, or that he selected items in a specific order, or set/removed other options before clicking on the problematic item, etc.
Often the sequence itself isn't important but the saved details are. E.g. in an analysis query, all you have to do is add 2 specific indicators, 1 column and a filter, and the results are displayed wrong. In this case, instead of describing how to create such a query step by step, it is much simpler to save and send the saved .sgr file. Obviously, it must be verified that the .sgr file is all that's needed to reproduce the problem. Saving your actions applies in the following cases:
Browser lists (.sls file)
Analysis/Metric queries (.sgr file)
Dashboards (.sds file)
Imports (session XML file AND the source data file)
In rare cases, even seemingly unrelated actions can cause the problem. Examples:
Have other windows open at the same time. E.g. first click on the Browser and open an item, and then open the Custom Fields and add a new field.
Login, logout, then login again as a different user and only then does the problem occur.
Go online, then disconnect. I.e. saying that the problem occurs offline may not be enough.
What this means is that when attempting to reproduce the bug, it is important to trace your steps as far back and in as much detail as possible. Start with the obvious last thing that was clicked on, then slowly add more and more steps until you either reproduce the bug, or you can't remember any more details.
When submitting this information in a bug report, the sequence should be described in the exact order with all steps and details that are necessary to reproduce the bug. Once you have reproduced the bug using these methods, you usually know exactly which steps are important to mention and which aren't. An example:
1. Load ClayOutlook
2. Login with administrator
3. Open a browser window but don't click on anything
4. Disconnect using the toolbar button
5. Click on a table in the browser
The Environment
In rare cases, the problem may be due to the specific machine, network or server. If the problem is only reproducible on one machine, this may be the case. Examples:
A runtime error is due to protection-software installed on that machine (Firewall, Windows DEP, Antivirus)
Outlook misbehaviour is due to the specific PST file, some Outlook settings or the Exchange Server.
Disconnections, strange behaviour or speed issues are due to networking problems.
Data is not displaying correctly due to Windows Regional Settings (e.g. date formats, default language settings)
Data is getting corrupted due to specific SQL Server settings.
Clients don't load due to a bad installation.
Crashes due to low memory or even bad hardware.
Obviously, these issues are always unique and need administration and troubleshooting skills. Some general techniques and tips:
Rule out the other easier elements or obvious factors first before assuming it's the environment.
Test the problem on another machine in a similar environment.
Reboot.
Uninstall and then reinstall.
Gather as much information as possible regarding what makes this machine or environment unique. This includes
OS versions, hardware, connection/network, regional settings, Outlook details, other installed software or Outlook plugins. Try to rule out as many of these factors as possible by changing the environment (for example, change relevant Outlook settings, disable a firewall, or change the way it connects to the network).
If you think it has to do with the environment, include all the relevant environment information in a bug report.
If R&D still can't reproduce it, the last resort left is for R&D to connect to the machine and debug the problem within the same environment. In this case the machine must be setup for remote control.
Techniques and Tips
Logs
See Troubleshooting With Logs for various techniques in tracing problems to more specific causes, and for collecting information.
Known Issues
Narrowing Things Down
Always try to reduce the complexity of the sequence of events. Examples:
Does changing some settings or options affect the bug? Some examples: In analysis, does it work in the table but not in the graph? Does a dashboard work if you don't group together the dynamic filters? Does the automation work if you set the requirements to mandatory? Does the ClayOutlook Contact disappear if you remove the “Synchronize all Contacts” setting? Does Outlook behave better when the user is not connected to Exchange? In other words, play with any variations you can think of. This can often uncover further clues and narrow down the possibilities.
If something used to work in the past but now has a problem, collect all the information possible as to what changed from the time it last worked until now. Examples: The version was updated, a new Outlook plugin was installed, the user's permissions were changed, a new column was added to the list.
General Tips