Payments are experiencing issues due to temporary restrictions in Russia. If your payment does not go through, please submit a support request.Our support team is available 24/7 — we are always here to help with hosting and server issues.We are now accepting requests for dedicated server rental and colocation services in our data center.Reminder: we recommend enabling backups for additional data protection.A new VPS/VDS lineup with NVMe storage and improved performance is now available.Maintenance work on some servers has been completed. All services are operating normally.
Article8 min readViews0

A test store must be isolated before its first launch

A site copy inherits not only the catalog but also the ability to send emails, update stock levels, and generate real documents. We define the boundaries of the test environment and verify them before connecting external services.

Comments 0

A single-board computer in a transparent case with a disconnected network cable. Generated illustration.
In this article

The most dangerous action on a fresh store copy can sometimes look harmless: opening the main page. If background tasks and integration settings are transferred along with the database, this may be enough to trigger unwanted data exchange. Isolation must be prepared before the application—before the copy gains the ability to execute code and access external systems.

A test store is needed to verify changes, so it cannot be permanently cut off from all connections. The precise task is to route every necessary connection into a controlled test loop and block everything else by default. Then, an order created to test a button will not turn into a real request to a carrier or an email to a customer.

Two locks on opposite sides of the door

A password in front of the site restricts visitor access. It does not prevent the application itself from sending requests to a payment service, email gateway, or 1C. Therefore, a copy closed to outsiders is not yet isolated. It must have separately designed incoming access and outgoing connections.

Access is required for developers and testers, and sometimes for a notification test provider. The access rule must reflect this list. If an external service requires a callback, a dedicated entry point with authentication must be opened for it, not the entire store without restrictions. An exception for one integration must not automatically become an exception for others.

Outbound access is restricted at the deployment environment level and supplemented with application settings. A network block serves as an independent barrier: a forgotten module with a valid key must not freely access the production service. However, a single network list does not solve everything. Test and production operations may be served by the same provider node; in that case, a separate account, mode, and keys become decisive.

Test store boundaries: test services are allowed, production systems and public access are blocked.
Training scheme. Entry restrictions, outbound connections, and credentials complement each other.

The word "test" in a server name is not protection. A useful question when discussing the environment is different: what technically stops an erroneous request if a developer mixes up the configuration? For every dangerous connection, a verifiable response must exist.

The list of connections extends beyond the payment module

Create a map of external actions based on the store's actual processes. A message can be sent not only via system email but also directly from a third-party module. Stock levels can be updated not only through the main 1C synchronization but also by a separate order handler. If you list only familiar settings in the admin panel, some routes will remain unnoticed.

For each route, record the owner, direction, trigger method, live recipient, and test replacement. Do not place secrets in a shared task table. It is sufficient to indicate the location of their controlled storage and the person responsible for issuing them. This map is not for reporting purposes: after connecting a new module, it allows you to see the newly appearing external action.

  • Emails, SMS, and push notifications should use test recipients or authorized addresses instead of actual customer contacts.

  • Payments, refunds, and fiscal operations must use the provider's designated test mode with separate access credentials.

  • Integration with 1C, CRM, and the warehouse requires separate test databases and queues, without shared production accounts.

  • Delivery should use a test carrier environment or a controlled stub that does not create real orders.

  • Analytics, advertising events, and external product exports require separate test destinations or disabled sending.

A ready-made stub is not sufficient for every task. It allows you to check the store's reaction to a specified response, but it does not prove compatibility with the real API. In the testing plan, clearly distinguish these levels: logic on an artificial response, integration in the provider's sandbox, and limited verification after release. You must not treat the first level as a fully ready integration.

Background work begins without pressing "Send"

In 1C-Bitrix: Site Management, agents perform periodic tasks; depending on the configuration, their operation involves contacting the site or the scheduler. System jobs, queue handlers, and processes from third-party modules may also exist independently. Migrating a single database does not reveal which of these mechanisms are already running on the new server.

Therefore, the preparation sequence is critical. First, create an environment with isolated dangerous connections and controlled background process execution. Then, restore anonymized data and apply test settings. Next, enable necessary processes one by one and monitor their behavior. This is a project-specific sequence, not a universal set of commands: implementation depends on the hosting, containers, modules, and launch scheme.

Email handling presents an additional trap: accumulated queues. Even if new events are already directed to the test recipient, restored old jobs may contain original recipients. Before allowing sending, you must determine what data the queue holds and what actions it will reproduce. You cannot simply wait for it to clear: it is precisely at this moment that sending to real people may begin.

Similarly, the exchange queue with the accounting system is reviewed. Old jobs must not recreate work documents simply because the test server has gained network access. The check also includes running the process after restarting the environment: manually stopping the process temporarily does not guarantee it will remain stopped.

Data must preserve relationships, not identities

A full production database is convenient for reproducing rare errors, but it also copies contacts, addresses, order history, and other details. For routine development, a synthetic dataset is preferable. If a task requires a copy of real data, its composition and access must be agreed upon in advance, and anonymization must be performed before the environment is shared with a broad group of participants.

It is important to preserve technical relationships. Orders, their payments, deliveries, products, and the purchasing organization must remain linked. Replacing all customers with a single person can hide access control errors. It is better to prepare several fictional customers and organizations with different permissions rather than retaining real contacts for variety.

Replacing names and phone numbers alone is insufficient. Attachments, manager comments, addresses in order properties, exchange logs, and export files may contain the same data in different formats. Therefore, anonymization is part of the environment preparation process, not a cosmetic fix for a couple of fields. Verification requires control samples from various data types.

Working secrets must not become part of a standard copy. Access settings are applied separately, with minimal privileges for the selected tests. If a secret has already ended up in an archive or log accessible to unauthorized parties, deleting the visible line does not negate potential compromise: the person responsible for access must evaluate the need for replacement.

Hiding from search and restricting access are different tasks

The directive noindex informs search engines not to display the page in results. It does not prevent a human from opening the page, nor does it protect exports containing orders. For a non-public test environment, access restriction remains the primary safeguard. Indexing settings can be applied additionally, considering how the crawler retrieves the page and interprets the directive.

Do not rely on an unknown copy name to outsiders. It may appear in logs, correspondence, or links embedded in the page. Verify that without authorized access, not only the main page but also files, service exports, and backup archives remain inaccessible. Different resource types are sometimes served by different infrastructure components.

Reverse risk arises during releases: test limits and keys are accidentally carried over to the production environment. Therefore, environment settings must be separated from code changes. A release includes a specific enhancement and necessary migrations, not an uncontrolled replacement of the production database with a test one. Transfer rules must explicitly preserve orders and shopper actions that occurred after the copy was created.

Prove isolation with an observable result

A useful check begins with a small synthetic order. Look not only at the interface message but also at the actual assignments: where the email went, which account accepted the payment, and in which database the document appeared. Test recipients must differ from production ones technically, not just by a signature in the settings.

Then, verify a negative scenario under controlled conditions: an attempt to access a prohibited destination must stop at the prepared barrier and leave a clear record. Such a test does not require sending real orders to the production system. The verification method must be agreed upon with the environment administrator to avoid substituting proof of isolation with a dangerous experiment.

The sandbox must have a defined lifespan or an owner responsible for regular updates. After a database restore, module installation, or a change in the email sending method, previous documentation may no longer reflect the current environment. A short record of verified routes and the last check date is more useful than a promise that "it's just a test server." It shows which connections can be enabled for the next experiment and which must remain closed.

Discussion 0

Share your experience and ask questions. Comments without links appear after editorial review.

No comments yet. Start the discussion.