Application Programming Overview
In this topic, you can review the architecture of an application created based on the MYOB Acumatica Framework, such as MYOB Acumatica, customizations of it, and applications based purely on the MYOB Acumatica Framework.
Runtime Structure and Components
An application written with MYOB Acumatica Framework has n-tier architecture with a clear separation of the presentation, business, and data access layers, as shown in the following diagram. You can find details about each layer in the sections below.

Data Access Layer
The data access layer of an application written by using the MYOB Acumatica Framework is implemented as a set of data access classes (DACs) that wrap data from database tables or data received through other external sources (such as Amazon Web Services).
The instances of data access classes are maintained by the business logic layer. Between requests, these instances are stored in the session. On a standalone MYOB Acumatica server, session data is stored in the server memory. In a cluster of application servers, session data is serialized and stored in a high-performance remote server through a custom optimized serialization mechanism.
For details about data storage in session, see Session. To learn about working with the data access layer, see Accessing Data.
Business Logic Layer
The business logic is implemented though the business logic controller (also called graph). Graphs are classes that you derive from the special API class (PXGraph) and that are tied to one or more data access classes.
- Data views, which include the references to the required data access classes, their relationships, and other meta information
- Business logic, which consists of actions and events associated with the modified data
Each graph can be accessed from the presentation layer or from the application code that’s implemented within another graph. When the graph receives an execution request, it extracts the data required for request execution from the data access classes included in the data views, triggers the business logic execution, returns the result of the execution to the requesting party, and updates the data access classes instances with the modified data.
For details on working with the business logic layer, see Implementing Business Logic.
Presentation Layer
The presentation layer provides access to the application business logic through the UI, web services, and the MYOB mobile app. The presentation layer is completely declarative and contains no business logic.
The Modern UI is a .NET-compatible product that provides updated UI capabilities without ASPX pages. On the server side, the Modern UI is represented by web services. On the client side, it is represented by a template-based single-page application (SPA) framework based on Aurelia.
The application code is written in TypeScript. The framework transcribes the TypeScript code into JavaScript code, which is then executed on the web browser. This approach simplifies code support. Developers use HTML and CSS to design the layout of a form.
The UI also includes reports created with the MYOB Acumatica Report Designer.
For details on the configuration of the UI, see Modern UI Development: General Information.
Web services and mobile app pages provide alternative interfaces to the application business logic. From the side of the graph, a request from a webpage, the web services, or an mobile app page are identical and, thus, cause the execution of exactly the same business logic.
