At which exact moment Messages sent with SendBatch() are definitely formed for sendings? Is it at "Pre-processing" time?
For each Batch, a revision of the Message is saved and used for all this Batch. This revision is created at the start of the processing of the Batch by the sending service. Therefore, when the Batch enters the « preprocessing », the Messge is freezed.
If, for example, we make a sending but this sending is not yet approved, what happens if we change the Subject of the Message? Will this new Subject be taken into account?
Yes, the new Subject of the Message will be taken into account if the sending has not yet been approved. In case the Sending is approved but the Message is not yet in treatment (in case of delayed Message in one hour), the new Subject will also be taken into account.
If we send a volume Sending and we change the Subject of the Message during the "pre-processing" phase, will some part of recipients receive Messges with Subject 1 and the other part with Subject 2?
No. As soon as the treatment of a Sending starts, the Message is freezed. Most of changes in the Message during the "pre-processing" phase will produce no changes. We say "Most" because some parameters are global to the Message and are not saved with the revision, for example, it is still possible that a user changes the Ofsys NAME of the Messsage and that name is included in the html of the Message ( [[=Message.MessageName;]], etc.).