Sunday, March 30, 2014

The native application experience and the importance of an operating system's user interface consistency

When it comes to user interfaces, there are multiple operating systems (OS's) in which people can operate their devices on. In each operating system, there are user interface (UI) rules for consistency between programs. For instance, Windows 8 applications will look one way while iOS will a completely different way. See Figure 1-3 below for examples of how different the apps can look using alarm clock apps as an example.

These different layouts are CRITICAL to the users' experiences on these OS's. The purpose for a unified UI approach is to make the user experience consistent from application to application. Once a user is familiar with where settings are for certain applications, they have a reasonable expectation that they will be located in a similar place for other apps. This greatly enhances the adoption of applications to users.

As an example, think of an 80 yr old person attempting to use an OS where there is no consistency between the apps. Each one would have to have an instruction manual and the user would never have a consistent experience. They would likely get frustrated and only use a limited number of apps if any. To put it yet another way, most runners who run long distances like to run on consistent turf. Its much more challenging and tiring to switch between track, concrete, asphalt, grass, dirt, etc. Don't make your grandparents do the equivalent with their phone...

Key point of post: When developing, follow the specific rules for OS's UI version.
NOTE: Even if the OS is the same, the UI experience can change from version to version. For instance, iOS6 and iOS7 had some big changes in its design guidelines. Make sure to plan for the new versions of the UI. Don't rest on your laurels...

When creating applications for multiple operating systems, follow best practices for the OS and version you are creating. Below are some UI guidelines for different mobile platforms.

Windows 8 UI guidelines -
Apple iOS7 UI guidelines -
Android UI guidelines -

Also very important to the overall designs, different OS's have different visions with how users will use their applications. For instance, Android has widgets and Windows have live tiles. Make sure to leverage these in your designs as bells and whistles, while just that, can make or break an app in the eyes of the user. If an app seems hacked and thrown together from a different design, the users can usually tell.

Remember, mobile apps are not just 'things to have' but a direct representation of a company's brand. Put your best foot forward or wait in the wings until you can. On the other hand, you can't make everything perfect as nothing ever is. It's a careful balancing act.

Figure 1 - An example of an iOS alarm app

Figure 2 - An example of an Android alarm app (can vary a lot though)

Figure 3 - An example of a Windows 8 alarm app

Tuesday, March 18, 2014

AX 2012 R3 Manual Fraud Hold Errors: "Field 'Hold code' must be filled in" and "Field 'Hold code' must be filled"

When attempting to put a sales order on a manual fraud hold in AX 2012 R3, you might see a few errors. Specifically, the errors "Field 'Type' must be filled in"and "Field 'Hold code' must be filled in".

These errors are because a manual hold is trying to be entered but it is missing the 'Hold Code' field for the hold and a document type for the note that is being entered. Holds in the new R3 functionality have a hold code (represents the reason the order is on hold) as well as notes which leverage the document handling framework. Since the manual hold functionality only prompts for notes and not a hold code or note type, these values need to default from the legal entity level setup parameters.

To fix the error, navigate to: Call Center module -> Setup -> 'Call Center Parameters'. Click on the 'Holds' and make sure the 'Manual fraud hold code' (resolves 'Hold Code' error) and 'Fraud comment type' (resolves 'Type' error) fields are populated. If they are empty, populate them.

Figure 1 - The error from manual fraud hold attempt
 Figure 2 - The Manual fraud hold code default parameter