I created separate blog posts for each session.
Day 1
09:00am – Welcome & Kick-off – Ajoy & Mark
09:10am – xRP Framework Fundamentals & Best Practices – Sergey Marenich (this post)
10:20am – Application Solution Architecture – Dmitry Naumov
10:50am – Source Control & Automation for Acumatica Developers – Brendan Hennelly
11:30am – Reporting Tools, Tips, and Best Practices – Mikhail Reysev
12:40pm – Implementing Multi-Currency Support for Custom Solutions – Joshua van Hoesen
01:10pm – Unit Testing Framework – Andrew Boulanov
Day 2
09:00am – Database Schema Overview – Dmitry Naumov
09:30am – Application Certification – Ruslan Devyatko
10:10am – Modern Developer Practices – Stan Lesin
11:20am – Updating your Codebase with FBQL – Sharif Ahammad
11:50am – What to Expect from Acumatica’s Developer Community – Joe Jacob & Mark Franks
12:00pm – Developer Roadmap – Mike Chtchelkonogov
About to get started with "Getting Started with xRP Framework" session with Sergey Marenich who recently moved from Singapore to Montreal #CloudxRPSummit pic.twitter.com/DWXi5akySa
— Tim Rodman (@TimRodman) June 19, 2019
Sergey is highlighting a great blog article for new Acumatica developers #CloudxRPSummit https://t.co/X1xQIWxBOa pic.twitter.com/FTuh9PEwnh
— Tim Rodman (@TimRodman) June 19, 2019
Really easy to get started with developing in Acumatica since you don't even need a license. Trial mode is free. #CloudxRPSummit pic.twitter.com/ZLNBgEuDX9
— Tim Rodman (@TimRodman) June 19, 2019
Overview of the Acumatica Platform which is very important when it comes to understanding why Acumatica has been growing so quickly. #CloudxRPSummit pic.twitter.com/lwmIVA8HLW
— Tim Rodman (@TimRodman) June 19, 2019
The Acumatica ERP Platform Architecture sits on top of Microsoft .NET. The Platform gives you ERP building blocks to use (security, document management, report writers, etc.) when building ERP applications #CloudxRPSummit pic.twitter.com/PVgTD8Kxlj
— Tim Rodman (@TimRodman) June 19, 2019
What really makes Acumatica standout one interface for Web Browser, Mobile, and APIs. This is especially important in ERP because there is so much business logic to contend with. #CloudxRPSummit pic.twitter.com/2S43R1W62b
— Tim Rodman (@TimRodman) June 19, 2019
A more technical view of the Acumatica Framework Architecture. The reason why they call it "graph" is because of the relationships between the Entities #CloudxRPSummit pic.twitter.com/TsHptWEwaa
— Tim Rodman (@TimRodman) June 19, 2019
50,000 foot level look at the Acumatica Cloud xRP Platform #CloudxRPSummit pic.twitter.com/rJSXrcmF9Z
— Tim Rodman (@TimRodman) June 19, 2019
Now let's look at the essentials #CloudxRPSummit pic.twitter.com/GtypDzpZZA
— Tim Rodman (@TimRodman) June 19, 2019
The Data Access Class (DAC) is how you map stuff into the Database. Especially important with a Cloud ERP product like Acumatica where you don't have direct access to the Database. #CloudxRPSummit pic.twitter.com/KAIGvA23Tf
— Tim Rodman (@TimRodman) June 19, 2019
Things start to get really interesting with DAC Attributes, setting the field length/mask, marking key fields, providing default values for fields, etc. #CloudxRPSummit pic.twitter.com/FoMhClfmX9
— Tim Rodman (@TimRodman) June 19, 2019
PXSelector gives you the validated lookup fields that are so common in an ERP application #CloudxRPSummit pic.twitter.com/9F3dVoL0PX
— Tim Rodman (@TimRodman) June 19, 2019
Now for Business Logic Containers (BLC), aka Graph. There is a 1-1 relationship between a screen and a BLC. But not all BLCs are linked to a screen. #CloudxRPSummit pic.twitter.com/oGoELUEmFU
— Tim Rodman (@TimRodman) June 19, 2019
Next up, Data Views. You can automatically generate a DAC from a Database Table within a Customization Project. #CloudxRPSummit pic.twitter.com/EDcMYJ0Rb4
— Tim Rodman (@TimRodman) June 19, 2019
You can create a new screen within a Customization Project. The graph is automatically created, but you can modify it. #CloudxRPSummit pic.twitter.com/47b31mI3qF
— Tim Rodman (@TimRodman) June 19, 2019
What Acumatica Data Views do: 1. Maintain changes in the Session with PXCache. 2. Select data from the Database with PXView. 3. Provide data to User Interface. #CloudxRPSummit pic.twitter.com/nhUmFUgaFo
— Tim Rodman (@TimRodman) June 19, 2019
Forms and Grids get mapped to Data Views which could reference multiple Data Access Classes (DACs) #CloudxRPSummit pic.twitter.com/nfAe6nm61i
— Tim Rodman (@TimRodman) June 19, 2019
What is Business Query Language (BQL) in Acumatica? It links the Data View to the Database. It's an abstraction on top of SQL. #CloudxRPSummit pic.twitter.com/pQgGg6MHx0
— Tim Rodman (@TimRodman) June 19, 2019
Why BQL? 1. Abstraction, refractoring. 2. Database Agnostic, allowing support for both SQL Server and MySQL. #CloudxRPSummit pic.twitter.com/0T9So0mTP3
— Tim Rodman (@TimRodman) June 19, 2019
Comparing BQL code to the SQL code that is automatically generated. Note the automatic ORDER BY clause that gets inserted automatically. #CloudxRPSummit pic.twitter.com/B47thKOdHT
— Tim Rodman (@TimRodman) June 19, 2019
Diving deeper into BQL where it starts to get ugly. HAVING statements are supported now. #CloudxRPSummit pic.twitter.com/HnwQHjZcZH
— Tim Rodman (@TimRodman) June 19, 2019
You can bypass a Data View and put BQL directly into code. Multiple parameters are supported (Required, Current, etc.) #CloudxRPSummit pic.twitter.com/sOnm0y6oTx
— Tim Rodman (@TimRodman) June 19, 2019
Keep in mind that Acuminator is VERY helpful when dealing with BQL #CloudxRPSummit pic.twitter.com/CfjkcpmsIO
— Tim Rodman (@TimRodman) June 19, 2019
The next generation of BQL which will make BQL more user-friendly: Fluent BQL and LINQ to BQL #CloudxRPSummit pic.twitter.com/XmwBr6hMvV
— Tim Rodman (@TimRodman) June 19, 2019
BQL is used here #CloudxRPSummit pic.twitter.com/tfN6BiP7yN
— Tim Rodman (@TimRodman) June 19, 2019
Now for the User Interface which is currently https://t.co/fTl9nmlxev although work is being done to move this to the next generation. Hmmm, that sounds interesting. #CloudxRPSummit pic.twitter.com/pHBIInuX7N
— Tim Rodman (@TimRodman) June 19, 2019
Every Screen linked to a Graph. Every Form linked to a Data View. Controls linked to Fields in DACs. You can only use fields that are mentioned in the Data View so you might need to do JOINs in the Data View to get more fields. #CloudxRPSummit pic.twitter.com/CxdrhM60Ku
— Tim Rodman (@TimRodman) June 19, 2019
Use StartRow and StartColumn to control where the field is displayed on the Screen #CloudxRPSummit pic.twitter.com/Mdw0FFF1Ai
— Tim Rodman (@TimRodman) June 19, 2019
Use Attributes to decide how a Control will be displayed #CloudxRPSummit pic.twitter.com/173RuyO9c4
— Tim Rodman (@TimRodman) June 19, 2019
Use CommitChanges to decide when to trigger the Business Logic. Save callbacks with CommitChanges="False" #CloudxRPSummit pic.twitter.com/l3FtahjIff
— Tim Rodman (@TimRodman) June 19, 2019
Now for Events. There are 12 Row-Level Events and 5 Field-Level Events. #CloudxRPSummit pic.twitter.com/tIH9AolIVW
— Tim Rodman (@TimRodman) June 19, 2019
There is a javascript communication layer between the page on the browser and the ASPX code #CloudxRPSummit pic.twitter.com/EyDmqQy0KV
— Tim Rodman (@TimRodman) June 19, 2019
Insert, Update, Select, and Delete events are what get sent from the Control to the Graph #CloudxRPSummit pic.twitter.com/AmZOuvut24
— Tim Rodman (@TimRodman) June 19, 2019
PXCache is what actually triggers business logic. Session keeps things within the screen which Database commits data into the Database. #CloudxRPSummit pic.twitter.com/9QzKuUaCEz
— Tim Rodman (@TimRodman) June 19, 2019
The most commonly used Events. If you want to detect a wrong value, then use RowUpdating, not RowUpdated. If you want to react after a field value changes to go do something, use RowUpdated. #CloudxRPSummit pic.twitter.com/nklT6fEbCV
— Tim Rodman (@TimRodman) June 19, 2019
RowSelected can be used to correct something before showing it to a user #CloudxRPSummit pic.twitter.com/8ECuPdgQza
— Tim Rodman (@TimRodman) June 19, 2019
The list of Events and how they interact with each other #CloudxRPSummit pic.twitter.com/YVaTvCx6p2
— Tim Rodman (@TimRodman) June 19, 2019
Now for Customizations (Extensions). The last part of this awesome presentation. #CloudxRPSummit pic.twitter.com/nTbJmIIsYF
— Tim Rodman (@TimRodman) June 19, 2019
Customizations in Acumatica are HUGE, especially important how the code is kept separate from core Acumatica code. #CloudxRPSummit pic.twitter.com/vSnDAsvJcK
— Tim Rodman (@TimRodman) June 19, 2019
What happens when you need to customize Acumatica and extend the Framework? The Core Acumatica code and your Custom Code get combined in memory in the Runtime Instance. #CloudxRPSummit pic.twitter.com/T57RokNHVG
— Tim Rodman (@TimRodman) June 19, 2019
PXCacheExtension and PXGraphExtension allow you override standard Acumatica core functionality. Very important because Acumatica customizations not only allow you to add new code, but even change existing code, all without modifying source code like legacy ERP. #CloudxRPSummit pic.twitter.com/YBGcDlQLmc
— Tim Rodman (@TimRodman) June 19, 2019
Most interesting uses of these extensions #CloudxRPSummit pic.twitter.com/x29Q3RgHaM
— Tim Rodman (@TimRodman) June 19, 2019
Awesome session Sergey! One final slide with ideas for what to do if you want to learn more #CloudxRPSummit pic.twitter.com/H7bwbnbIci
— Tim Rodman (@TimRodman) June 19, 2019
Love the Q&A window here at the #Acumatica Virtual Developer Conference. Lots of interaction going on. #CloudxRPSummit pic.twitter.com/6zCvTLvIxB
— Tim Rodman (@TimRodman) June 19, 2019