@@ -66,18 +66,20 @@ support ticket.
6666 single Account that contains your Namespaces.
6767- Target Temporal Cloud provider/region per cluster. See the list of [ current regions] ( /cloud/regions ) .
6868- Server Configuration for each cluster.
69+ - VisibilityStore used by each cluster(e.g. Elasticsearch or SQL)
6970- For each Namespace:
7071 - Namespace name and its translated cloud-side name. Since Namespaces in Temporal Cloud follow a
7172 [ specific format] ( /cloud/namespaces#temporal-cloud-namespace-name ) , existing Namespaces must be converted to the new
7273 format.
73- - Namespace sizing metrics. These are used to properly size cloud-side resources for the migration.
74- - Custom search attributes (if any). Temporal must ensure that your custom search attributes, specifically when using
74+ - Custom search attributes. Temporal must ensure that your custom search attributes, specifically when using
7575 SQL-based visibility store, are compatible with Temporal Cloud.
76+ - Namespace sizing metrics. These are used to properly size cloud-side resources for the migration.
7677
7778### Capture cluster configurations
7879
79- Temporal must review your self-hosted server configurations to ensure compatibility. For modern versions of Temporal
80- OSS, run the following command against each of your clusters:
80+ Temporal must review your self-hosted server configurations to ensure compatibility.
81+
82+ For newer versions of Temporal OSS, run the following command against each of your clusters:
8183
8284```
8385temporal operator cluster describe --address <frontend:7233> --output json
9597grpcurl -v -plaintext <your temporal address and port> temporal.server.api.adminservice.v1.AdminService.DescribeCluster
9698```
9799
100+ ### Capture custom search attributes
101+ Capture any custom search attributes using one of the following commands:
102+
103+ For Elasticsearch/OpenSearch
104+ ```
105+ temporal operator search-attribute list
106+ ```
107+
108+ For SQL
109+ ```
110+ temporal operator search-attribute list --namespace="your_namespace"
111+ ```
112+
98113### Capture Namespace metrics
99114
100115It is vital that current usage patterns for production Namespaces are well understood, as this data is used for
@@ -106,43 +121,36 @@ cloud-side resource planning. For each Namespace, collect the following metrics:
106121 [ default retention policy] ( /cloud/limits#default-retention-period ) in Temporal Cloud.
107122- Peak [ action per second] ( /glossary#actions-per-second-aps ) (APS). See the section
108123 [ below] ( #how-to-gather-self-hosted-metrics ) for instructions on collecting these metrics.
109- - If you use custom search Attributes:
110- - provide _ CustomSearchAttributeAliases_ of your Namespace (see command below).
111- - provide the VisibilityStore used (e.g. Elasticsearch or SQL)
112124
113- Use the following command to capture _ CustomSearchAttributeAliases_ , if needed:
114-
115- ```
116- temporal operator namespace describe -n <namespace>
117- ```
118125
119126### Prepare mTLS certificates
120127
121- mTLS is used to secure the [ S2S Proxy] ( #s2s-proxy-configuration ) communications channel. Generate new certificates following the process outlined
122- [ here] ( /cloud/certificates#issue-certificates ) . You will need to provide these certificates as part of your support request.
128+ mTLS is used to secure the [ S2S Proxy] ( #s2s-proxy-configuration ) communications channel. Provide a single certificate using the process outlined
129+ [ here] ( /cloud/certificates#issue-certificates ) .
123130
124131
125132### Report collected data
126- Provide all collected data and mTLS certificates to Temporal via a [ support ticket] ( /cloud/support#ticketing ) .
133+ Provide all collected data to Temporal via a [ support ticket] ( /cloud/support#ticketing ) .
127134
128135Use the following template for the collected data.
129136
130137```
131138Temporal Cloud Account:
139+ mTLS Certificate:
132140
133141<for each cluster>
134142Cluster Name: <name>
135143Target Cloud/Region: <region>
136144Type of Visibility Store: <store>
137- Cluster Configuration:
145+ Cluster Configuration: <temporal cli output>
146+ Custom Search Attributes (if Elasticsearch/OpenSearch): <temporal cli output>
138147
139148Namespaces:
140149 <for each Namespace>
141150 Namespace Name: <name>
142151 Translated Name: <name>
143- Metrics:
144- Peak APS: <aps>
145- Custom Search Attributes: <temporal cli output>
152+ Custom Search Attributes (if SQL): <temporal cli output>
153+ Metrics: <metrics data>
146154 <end>
147155<end>
148156```
@@ -244,7 +252,7 @@ currentClusterName: _NO_CHANGE_
244252clusterInformation :
245253 _NO_CHANGE_ :
246254 enabled : true
247- initialFailoverVersion : CHANGEME # use unique number between 1 and 100 for each server
255+ initialFailoverVersion : CHANGEME # set in the range 2-99. use a unique number per cluster
248256 rpcName : _NO_CHANGE_
249257 rpcAddress : _NO_CHANGE_
250258` ` `
@@ -263,6 +271,11 @@ The following sample output is expected:
263271" isGlobalNamespaceEnabled " : true
264272` ` `
265273
274+ ### Verify current cluster utilization
275+ It is important to ensure that your production cluster has been allocated enough resources to support the migration. In particular,
276+ it is important to verify that your persistence/database layer has plenty of CPU and I/O capacity.
277+
278+
266279## Phase 3: Testing
267280
268281Testing should proceed using either a newly created Namespace or else one that is considered to be non-production. In
@@ -493,49 +506,38 @@ The answer depends on your specific situation. However, automated migration is m
493506In contrast, automated migration may not be the best solution if your self-hosted clusters do not meet the [minimum requirements](#limitations).
494507
495508# ## Can I split Workflows from a single source Namespace into multiple cloud-side Namespaces?
496-
497509No. All Workflows will be migrated.
498510
499511# ## Can I combine manual and auto migration?
500-
501512No. Auto migration requires a "fresh" target cloud-side Namespace (one that has never had a running Workflow).
502513If Workflows were manually migrated to a cloud-side Namespace, then this Namespace would not be suitable as an auto-migration target.
503514
504515# ## Why does it matter if custom search attributes are used?
505-
506516Custom search attributes must be mapped to a Namespace in Temporal Cloud. They matter because configurations in a self-hosted environment
507517may not be directly compatible with Temporal Cloud, potentially requiring additional migration work. The exact process can also differ
508518depending on the type of visibility data store used.
509519
510520# ## What Workflows are migrated by default?
511-
512521All Workflows are migrated by default. For closed Workflows, you may specify a date range to be migrated. Your cloud-side Namespace must
513522be configured with your desired retention period prior to starting the migration.
514523
515524# ## What can I do to speed up an automated migration?
516-
517525The # 1 speed optimization is to limit the time range for closed Workflows. This will reduce the amount of data required to be
518526migrated and in many cases will dramatically reduce overall migration time.
519527
520528# ## Is the migration of Schedules supported?
521-
522529Yes. Under the hood, Schedules are essentially Workflows.
523530
524531# ## I have a long retention period for my Workflows. Is this compatible with Temporal Cloud?
525-
526532Occasionally, self-hosted [retention periods](/temporal-service/temporal-server#retention-period) are in excess of what
527533is [supported](/cloud/limits#default-retention-period) in Temporal Cloud. In these cases it is recommended to utilize
528534[archival](/temporal-service/archival) to store closed Workflows that cannot be migrated. In general, archival is
529535recommended over large retention periods since the extra data can stress the persistence layer of the system.
530536
531537# ## I am using payload encryption in my self-hosted Temporal cluster. Is this supported in cloud?
532-
533538Yes. If payloads are already [encrypted](/payload-codec#encryption) in your self-hosted server via data converter, then
534539they will remain encrypted during and after migration.
535540
536-
537541# ## I would like to enable payload encryption as part of the migration. Is this supported?
538-
539542The automated migration tooling cannot add payload encryption. To encrypt payloads sent to Temporal Cloud, you must encrypt
540543payloads in your cluster before starting the automated migration process.
541-
0 commit comments