{"record":{"id":"e754a54a3a785fb6","repo":"coollabsio/coolify","slug":"this-server-was-transferred-to-another-coolify-ins","errorCode":null,"errorMessage":"This server was transferred to another Coolify instance and cannot be revalidated here.","messagePattern":"This server was transferred to another Coolify instance and cannot be revalidated here\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"app/Actions/Server/ValidateServer.php","lineNumber":34,"sourceCode":"    public ?string $error = null;\n\n    public ?string $supported_os_type = null;\n\n    public ?string $docker_installed = null;\n\n    public ?string $docker_compose_installed = null;\n\n    public ?string $docker_version = null;\n\n    public function handle(Server $server)\n    {\n        if (! $server->canBeValidated()) {\n            $this->error = 'This server was transferred to another Coolify instance and cannot be revalidated here.';\n            $server->update([\n                'validation_logs' => $this->error,\n                'is_validating' => false,\n            ]);\n            throw new \\Exception($this->error);\n        }\n\n        $server->update([\n            'validation_logs' => null,\n        ]);\n        if ($server->vultr_instance_id) {\n            $status = $server->refreshVultrState();\n            if (in_array($status, ['stopped', 'suspended', 'deleted'], true)) {\n                $this->error = $status === 'deleted'\n                    ? 'Vultr instance is deleted or no longer accessible. Relink this server before validating.'\n                    : 'Vultr instance is '.($status ?? 'not running').'. Power it on before validating.';\n                $server->update([\n                    'validation_logs' => $this->error,\n                ]);\n                throw new \\Exception($this->error);\n            }\n        }\n","sourceCodeStart":16,"sourceCodeEnd":52,"githubUrl":"https://github.com/coollabsio/coolify/blob/70b9acc42467278373e00de77abb40684e25b395/app/Actions/Server/ValidateServer.php#L16-L52","documentation":"ValidateServer::handle() starts with Server::canBeValidated(), which returns false when server_metadata.transfer.status === 'transferred' — the server was migrated to a different Coolify instance and this instance still holds the source-side row (see Server::isTransferredAway(), app/Models/Server.php:869). The action writes the error into validation_logs, clears is_validating, and throws, refusing to revalidate or reinstall against a host that now belongs to another control plane.","triggerScenarios":"Completing (or starting) a server transfer to instance B, then hitting Validate/Install on instance A which still lists the server; automation still pointed at the old Coolify instance after a migration.","commonSituations":"Multi-instance setups after a server transfer; stale UI on the source instance; abandoned transfer flows where the metadata was already marked transferred.","solutions":["Manage and validate this server on the destination Coolify instance.","Delete the stale server row on this instance instead of validating it.","If the transfer was wrong or must be undone, clear server_metadata.transfer.status on the source instance so canBeValidated() passes again."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (! $server->canBeValidated()) {\n    return 'Server was transferred to another Coolify instance. Manage it there, or delete the stale row here.';\n}\nValidateServer::run($server);","typeGuard":"// Server::canBeValidated() already is the guard\nif ($server->canBeValidated()) {\n    ValidateServer::run($server);\n}","tryCatchPattern":"try {\n    ValidateServer::run($server);\n} catch (\\Exception $e) {\n    if (str_contains($e->getMessage(), 'transferred to another Coolify instance')) {\n        // permanent state: stop automation against this row; the error is already in validation_logs\n    } else {\n        throw $e;\n    }\n}","preventionTips":["After a transfer, retire the source instance's server row (delete it) so validation can't be attempted.","Gate automated validation loops on $server->canBeValidated().","Don't clear transfer metadata casually — it exists to prevent two control planes managing one host."],"tags":["server-transfer","validation","multi-instance","migration"],"backgroundTag":"resource-owned-by-another-instance","analyzedSha":"70b9acc42467278373e00de77abb40684e25b395","analyzedAt":"2026-08-17T01:41:01.313Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}