Hi,
If you are using odoo enterprise edition, to an extend you can do all of the above via odoo studio application. If you dont need to do it from studio app or if you need to do from custom module, then,
* To add custom fields:
You can inherit the corresponding model and view in your custom module and alter the existing application. Suppose if you need to add new field in sale.order model,
-- inherit and add field to the db table
-- then inherit the view and using xpath add the new field to the view
Adding field from custom module: add new field odoo
Adding new field using debug tools from UI: How to Add Custom Field From User Interface In Odoo
To change existing field properties: Inherit And Change Existing Field Properties In Odoo
* Work flow and automation:
work flow is handled by using states, statusbar and buttons. If you need to alter existing work flow, you may have to inherit the state field and add new selection value in it and adjust the existing button codes as per the need.
You can refer this video explaining adding new work flow in odoo and apply the same in needed place: How To Add Statusbar In Odoo
Automated action: https://www.odoo.com/documentation/16.0/applications/productivity/studio/automated_actions.html
* Customizing Reports:
Using studio app or by inheriting the report template in custom module, you can achieve this.
Customizing report in odoo: How To Inherit And Modify Existing PDF Reports in Odoo
Thanks