Daniel,
Intentaré responder a tu pregunta la más sintéticamente posible, ya que de lo contrario se requerirían unos cuantos threads juntos, debido a que LY es un proyecto bastante grande (600.000 líneas de código aproximadamente).
Para modificaciones generales, existe un conjunto acotado y bien definidos de puntos donde se debe modificar el código a fin de lograr cambios en la lógica funcional.
Tenés las clases M… (MProduct, MInvoice, MOrder, etc) las cuales extienden indirectamente de PO. Toda la validación y persistencia de objetos nace de ahí.
Luego están los callouts, los cuales permiten acciones en tiempo de edición de un registro. Estos extienden de la clase CalloutEngine.
Por último tenés procesos, que permiten realizar actividades sobre los datos de manera general, los cuales son clases que extienden de SvrProcess.
La gran mayoría de las modificaciones necesarias para customizar una implementación específica se deben realizar sobre este conjunto de clases.
Saludos,
Federico