The definition of the Stored Procedure is stored in the Program
Associated Space [can be seen in DMPOBJ output] of the program object.
When the object is restored [and that PAS with the definition exists],
the definition in the catalog should be updated. The Catalog Tables are
journaled to QSYS2/QSQJRN so in the same IPL as the recovery, what
happened to the data is available.
The specific difference between the SYSROUTINES data on the two
systems was not described. Are we to infer that the EXTERNAL_NAME shows
'*LIBL/thename' on the system where the CREATE PROCEDURE was issued and
showing 'somelib/thename' on the DR system? Something else? The claim
was that the replication functioned as expected, but there again,
nothing explicit was mentioned about the EXTERNAL_NAME; we are to assume
'*LIBL/thename' was replicated correctly as part of restore or create
actions implemented by the replication software?
FWiW several releases ago I was very closely involved in correcting
how the catalogs were being delivered with the OS Extended Base
OPTION(01), for their installation, and also their handling during DR
[at least in part, because that is in-part, Database Restore]. The DR
additionally has the SQL participate as an extra object handler for
program restore. When the restore of QSYS2 occurs versus when the
program objects restore is a nuance that should not matter, but if
differences exist, that could be relevant. Beyond knowing a "DR test"
was done, knowing when QSYS2 was restored relative to other restore
activity in this specific DR may be helpful.