Query PackageSubscriber to retrieve details about subscriber orgs such as the org ID and installed package version. To retrieve information about more than 2,000 subscribers, use SOAP API queryMore() call.
Create a PackagePushRequest object. Specify the PackageVersionId and ScheduledStartTime (optional). If you omit the ScheduledStartTime, the push begins when you set the PackagePushRequest’s status to Pending.
Create a PackagePushJob for each subscriber and associate it with the PackagePushRequest you created in the previous step.
Schedule the push upgrade by changing the status of the PackagePushRequest to Pending.
Next Steps
Scheduled push upgrades begin as soon as resources are available on the Salesforce instance, which is either at or after the start time you specify. In certain scenarios, the push upgrade could start a few hours after the scheduled start time.