Project Publication: General Information
When you have made all the needed changes to an MYOB Acumatica instance, you can deploy your customization project to another instance.
You can implement planned changes in different customization projects, with related changes grouped in the same project. You can publish multiple customization projects in one instance of MYOB Acumatica.
Learning Objectives
In this chapter, you will learn how to do the following:
- Create a deployment package for the customization project
- Export the package to a target system
- Publish the customization project in the target system
- Publish multiple customization projects simultaneously
Applicable Scenarios
You deploy a customization project to another instance in the following cases:
- You need to copy the changes caused by the customization project from the testing MYOB Acumatica instance to the production MYOB Acumatica instance.
- You need to deploy another MYOB Acumatica instance, and you want to make the same changes to it as you have to an existing instance that has a customization project published.
You publish multiple customization projects when you have been working on separate customization projects in your company, and you need to apply the changes from these projects to a single MYOB Acumatica instance.
Deployment of a Customization Project to Another Environment
As you customize the system, you usually need to use three different environments:
- A development environment: Your local environment, in which you create customization items, publish the customization project being developed, and perform initial tests related to the customization items
- A staging (or pre-production) environment: A copy of the production environment in which you will perform final testing of the completed customization project before applying it to the production environment
- A production environment: The target environment of the system that must be customized
You develop customization projects in the development environment. After you have added all customization items to the customization project and done preliminary testing, you prepare a deployment package to distribute the customization project to the staging or production environment, as shown in the following diagram.
A deployment package of a customization project is a redistributable ZIP file that includes the full content of the project. The deployment package consists of the project.xml file and any custom files that you have added to the project, such as external assemblies. The ZIP file has the same name as the exported customization project does.
Publication of Multiple Projects to the Same Instance
When you publish more than one customization project, the MYOB Acumatica Customization Platform merges the contents of all projects into a single customization project. If different projects include customization items for the same object, the platform tries to merge the changes by using the following approach:
- If the changes can be merged, the platform merges them. For example, the platform can merge different properties of the same control in an ASPX page.
- If the changes cannot be merged—for example, if the same report has been added to different customization projects—the platform stops the process and displays an error message.
The process of publishing multiple projects to the same instance is similar to the process of publishing a single project.
You start the publication on the Customization Projects (SM204505) by selecting the customization projects you need to publish and clicking Publish on the More menu. You can also open this form while you are working in the Customization Project Editor by clicking on the main menu.
The system opens the Compilation pane, which displays the progress of publishing. First, the system performs the validation of the projects. After the validation is complete, you need to click Publish in this pane. Note that at this stage, all current users will be signed out.
After the publication is complete, you can view the content of the merged customization project by clicking the View Published on the More menu of the Customization Projects form. (See To View a Published Customization for details.)
Changes to the Application and Database
During the publication, the platform applies the changes to the application and database objects and updates the files in the website folder as follows:
- The custom layout is applied to the forms of MYOB Acumatica.
- The .cs files with the DAC extension code for the existing data access classes are generated and placed in the file system.
- The .cs files with the BLC extension code for the existing business logic are generated and placed in the file system.
- The .cs files with the custom code (Code items) are generated and placed in the file system.
- The custom files of the project are added to the website folder.
- The custom tables are created in the database, and custom SQL scripts are executed.
- The custom generic inquiries, reports, site map nodes, system locales, integration scenarios, shared reusable filters, access rights, wikis, web service endpoints, and analytical reports are added to the database.
We recommend that you back up the database before you publish customization projects, because canceling publication does not revert the changes made to the database. See Unpublishing Customization Projects for details.
After the publication is complete, the application domain always restarts if the project includes assemblies, which are placed in the /Bin folder of the website. If you have no assemblies in the project, you can enable run-time compilation, and the publication will not cause a restart.
If a published customization project contains classes derived from the CustomizationPlugin class, the platform launches the implemented custom processes after website files were updated and after the website was restarted. (See Custom Processes During Publication of a Customization for details.)
After you have published the customization project, the files with the customization code are updated in the file system, and you can work with them in MS Visual Studio. The .cs files with code are placed in the App_RuntimeCode folder of the website.
Validation of Customization Code
While the MYOB Acumatica Customization Platform processes the publication of a customization project, the platform validates the customization code included in the project. This validation of the code provides not only checking for syntax and semantics but also checking of the compatibility of the code included in the customization project with the original application code.
If you have a customization project that works properly for the current version of MYOB Acumatica and have upgraded an application instance to a newer version, the customization project might not work properly or might even prevent the website from starting after the upgrade. This could occur because the code of MYOB Acumatica is continuously developed to implement new features or enhance existing functionality. Thus, the code of an updated instance of MYOB Acumatica can become inconsistent with the code in a customization project. For example, if the signature of a method that is overridden in the customization code is changed in the original code, a runtime error may occur in the graph extension. As another example, modified or deleted database columns and tables might cause the functionality of a data access class extension to fail.
The platform checks the compatibility of the code included in a customization project with the original application code every time it publishes the project. If there are any compatibility errors, the platform displays the warning and error messages in the Compilation window and stops the publication process. See Messages for Validation Errors and To Resolve an Issue Discovered During the Validation for detailed information about, respectively, the error messages and the ways to fix the validation errors.
Levels of Customization Projects
On the Customization Projects (SM204505) form, you can specify an optional number (level) for each customization project, assigning the highest number to the most important change. If the customization projects modify the same items of the website, conflicts can occur when the system tries to merge the changes. In this case, the system uses the specified levels to resolve the conflicts, and adds to the merged project the changes from the project with the highest level.
You can specify whole numbers as levels. We recommend that you use higher values for more important changes. If you do not specify any level, the default value is 0.