Infor M35 min readNetray Engineering Team

Infor M3 H5 Client Personalization and Scripting Guide

The M3 H5 client is the browser front end for Infor M3, and it is the correct place to solve most user experience complaints without touching the Business Engine. H5 gives you layered personalization, view definitions, bookmarks, and a JavaScript scripting API that can prefill fields, call MI APIs, validate input, and add buttons to standard panels. Teams that use these tools well routinely remove a third of the keystrokes from high-volume transactions such as customer order entry and goods receipt, with zero upgrade retrofit cost.

Personalization Layers and Where to Apply Them

H5 personalization applies at several scopes, typically system, company or division, role, and user, and the most specific scope wins. That layering is the whole game. Hiding rarely used fields, reordering columns, setting column sort, defining default values, and creating filtered views should be published at role level so a new hire inherits a working screen on day one, while individual users keep only cosmetic preferences. Panel-level changes include hiding and repositioning fields, changing headings, and constraining the columns shown in list views. Because personalizations are stored as metadata rather than code, they survive upgrades and can be exported between environments as part of a normal release.

  • Publish role-level personalizations for high-volume programs such as OIS100 and PPS200 before user training starts
  • Use view definitions with saved sort and filter criteria instead of teaching users to retype the same query
  • Reserve user-level personalization for preferences only, so support can reproduce reported issues
  • Export and version personalization sets alongside code so test and production stay identical

Writing H5 Scripts with the MForms Script API

H5 scripts are JavaScript files attached to a specific program and panel. A script exposes an Init function that receives an args object providing the controller, the gui helper, a logger, and any script arguments configured at attachment time. From there you read and set field values, force a panel update, press a function key programmatically, add buttons or labels through the gui helper, and call MI transactions asynchronously through the MI service to look up or validate data from another program. Keep scripts small and defensive: check that a field exists before touching it, never assume panel version, and log through the provided logger so support can trace behavior in production.

  • Implement Init, capture args.controller and args.gui, and avoid storing state in globals
  • Use the controller to set field values and trigger panel refresh rather than manipulating DOM elements
  • Call MI transactions asynchronously for lookups and handle both empty results and error responses
  • Write to the script log with a stable prefix so production issues can be filtered quickly

Bookmarks, Shortcuts, and Cross-Program Navigation

Bookmarks are M3 URLs that open a specific program, panel, and record with parameters supplied, and they are the cheapest integration technique available. A bookmark can be embedded in a homepage widget, an email, a report, or another application to take a user directly to the order or item in question instead of asking them to search. Combined with H5 scripts, bookmarks let you build a guided flow across programs: a button on an order panel can open the delivery toolbox already filtered to that order. Because bookmarks are configuration rather than code, they carry no retrofit cost and can be created by a skilled functional consultant without a developer.

Deployment, Governance, and Common H5 Pitfalls

Scripts belong in a controlled repository and should be attached to programs through configuration rather than dropped ad hoc on a server. Establish a naming convention, require a code review, and test each script against the next M3 update in your test environment, because panel changes in a standard release are the main reason scripts break. The usual failure modes are predictable: a script that assumes a field position, a script that runs a synchronous lookup and freezes the panel, and dozens of near-duplicate scripts written by different consultants over five years. An annual inventory and consolidation pass usually removes a meaningful share of them.

How Netray Improves M3 H5 Usability with AI Agents

Netray AI agents inventory every H5 script and personalization in your tenant, cluster near-duplicates, and identify scripts that reference fields no longer present after an update, which turns a manual audit that takes weeks into a report you get in a couple of days. The agents then generate reviewed script scaffolding for new automations, complete with error handling and logging conventions your team already uses. For customers standardizing global rollouts, we build role-based personalization packages per site and measure the result in clicks and seconds per transaction so the improvement is provable rather than anecdotal. Every package ships with a rollback path and a named regression test list.

Frequently Asked Questions

What language are Infor M3 H5 scripts written in?

H5 scripts are written in JavaScript and attached to a specific M3 program and panel. Each script implements an initialization function that receives a controller for reading and writing field values, a gui helper for adding user interface elements, and a logger. Scripts can also call MI API transactions to look up data from other M3 programs. This replaces the older Smart Office scripting approach used before browser-based H5 became the standard client.

Do H5 personalizations survive an M3 upgrade?

Personalizations are stored as metadata and generally survive upgrades, which is exactly why they are preferred over modifications. The exception is when a standard release changes a panel so that a hidden or repositioned field no longer exists. Scripts are more fragile than personalizations because they reference fields directly. Test both against every M3 update in a non-production environment before adoption, and keep an inventory so regression testing is targeted.

Can H5 scripts call M3 APIs?

Yes. H5 scripts can invoke MI API transactions asynchronously to fetch or validate data from programs other than the one on screen, for example checking credit status while an order line is being entered. Use asynchronous calls so the panel stays responsive, handle empty and error responses explicitly, and avoid chaining many calls in one interaction. For heavy processing, move the logic to a server-side integration rather than the client.

Key Takeaways

  • 1Personalization Layers and Where to Apply Them: H5 personalization applies at several scopes, typically system, company or division, role, and user, and the most specific scope wins. That layering is the whole game.
  • 2Writing H5 Scripts with the MForms Script API: H5 scripts are JavaScript files attached to a specific program and panel. A script exposes an Init function that receives an args object providing the controller, the gui helper, a logger, and any script arguments configured at attachment time.
  • 3Bookmarks, Shortcuts, and Cross-Program Navigation: Bookmarks are M3 URLs that open a specific program, panel, and record with parameters supplied, and they are the cheapest integration technique available. A bookmark can be embedded in a homepage widget, an email, a report, or another application to take a user directly to the order or item in question instead of asking them to search.

If your M3 users are fighting the screen instead of the work, ask Netray for an H5 personalization and scripting audit with measured click-reduction targets.