@salesforce/plugin-orchestrator 1.0.25 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +1 -1
- package/lib/commands/orchestrator/app/create.js +1 -1
- package/lib/commands/orchestrator/app/decouple.d.ts +13 -0
- package/lib/commands/orchestrator/app/decouple.js +76 -0
- package/lib/commands/orchestrator/app/decouple.js.map +1 -0
- package/lib/commands/orchestrator/app/delete.js +1 -1
- package/lib/commands/orchestrator/app/display.js +1 -1
- package/lib/commands/orchestrator/app/list.js +1 -1
- package/lib/commands/orchestrator/app/update.js +1 -1
- package/lib/commands/orchestrator/app/upgrade.js +1 -1
- package/lib/commands/orchestrator/rules/eval.js +1 -1
- package/lib/commands/orchestrator/template/create.js +1 -1
- package/lib/commands/orchestrator/template/delete.js +1 -1
- package/lib/commands/orchestrator/template/display.js +1 -1
- package/lib/commands/orchestrator/template/list.js +1 -1
- package/lib/commands/orchestrator/template/update.js +1 -1
- package/lib/index.js +1 -1
- package/lib/utils/app/appDisplayUtil.js +1 -1
- package/lib/utils/app/appTypes.js +1 -1
- package/lib/utils/app/appframeworkapp.d.ts +4 -4
- package/lib/utils/app/appframeworkapp.js +10 -17
- package/lib/utils/app/appframeworkapp.js.map +1 -1
- package/lib/utils/display/displayUtil.js +1 -1
- package/lib/utils/request.js +16 -6
- package/lib/utils/request.js.map +1 -1
- package/lib/utils/template/templateDisplayUtil.js +1 -1
- package/lib/utils/template/templateHighlighter.js +1 -1
- package/lib/utils/template/templateTypes.js +1 -1
- package/lib/utils/utils.js +1 -1
- package/messages/appframework.decouple.app.md +105 -0
- package/npm-shrinkwrap.json +782 -605
- package/oclif.lock +696 -672
- package/oclif.manifest.json +85 -1
- package/package.json +4 -4
package/LICENSE.txt
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export default class DecoupleApp extends SfCommand<string> {
|
|
3
|
+
static readonly summary: string;
|
|
4
|
+
static readonly description: string;
|
|
5
|
+
static readonly examples: string[];
|
|
6
|
+
static readonly state = "preview";
|
|
7
|
+
static readonly flags: {
|
|
8
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'api-version': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'app-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<string>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, Salesforce, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
|
|
17
|
+
import { Messages, SfError } from '@salesforce/core';
|
|
18
|
+
import AppFrameworkApp from '../../../utils/app/appframeworkapp.js';
|
|
19
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
20
|
+
const messages = Messages.loadMessages('@salesforce/plugin-orchestrator', 'appframework.decouple.app');
|
|
21
|
+
export default class DecoupleApp extends SfCommand {
|
|
22
|
+
static summary = messages.getMessage('summary');
|
|
23
|
+
static description = messages.getMessage('description');
|
|
24
|
+
static examples = messages.getMessages('examples');
|
|
25
|
+
static state = 'preview';
|
|
26
|
+
static flags = {
|
|
27
|
+
'target-org': Flags.requiredOrg({
|
|
28
|
+
summary: messages.getMessage('flags.target-org.summary'),
|
|
29
|
+
description: messages.getMessage('flags.target-org.description'),
|
|
30
|
+
required: true,
|
|
31
|
+
}),
|
|
32
|
+
'api-version': Flags.orgApiVersion({
|
|
33
|
+
summary: messages.getMessage('flags.api-version.summary'),
|
|
34
|
+
description: messages.getMessage('flags.api-version.description'),
|
|
35
|
+
default: '66.0',
|
|
36
|
+
}),
|
|
37
|
+
'app-id': Flags.string({
|
|
38
|
+
char: 'i',
|
|
39
|
+
summary: messages.getMessage('flags.app-id.summary'),
|
|
40
|
+
description: messages.getMessage('flags.app-id.description'),
|
|
41
|
+
required: true,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { flags } = await this.parse(DecoupleApp);
|
|
46
|
+
try {
|
|
47
|
+
this.spinner.start(messages.getMessage('decouplingApp'));
|
|
48
|
+
const connection = flags['target-org'].getConnection(flags['api-version']);
|
|
49
|
+
const appFrameworkApp = new AppFrameworkApp(connection);
|
|
50
|
+
// Use the app ID provided by the user
|
|
51
|
+
const appId = flags['app-id'];
|
|
52
|
+
// Call the decouple method
|
|
53
|
+
const result = await appFrameworkApp.decoupleApp(appId);
|
|
54
|
+
this.spinner.stop();
|
|
55
|
+
this.log(messages.getMessage('decoupleSuccess', [appId]));
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.spinner.stop();
|
|
60
|
+
const errorMsg = error.message;
|
|
61
|
+
if (errorMsg.includes('NOT_FOUND') || errorMsg.includes('404')) {
|
|
62
|
+
throw new SfError(messages.getMessage('error.AppNotFound', [flags['app-id']]), 'AppNotFound', messages.getMessages('error.AppNotFound.Actions'));
|
|
63
|
+
}
|
|
64
|
+
else if (errorMsg.includes('cannot be decoupled') || errorMsg.includes('INVALIDREQUEST')) {
|
|
65
|
+
throw new SfError(messages.getMessage('error.CannotDecouple', [flags['app-id']]), 'CannotDecouple', messages.getMessages('error.CannotDecouple.Actions'));
|
|
66
|
+
}
|
|
67
|
+
else if (errorMsg.includes('INVALID_OPERATION') || errorMsg.includes('400')) {
|
|
68
|
+
throw new SfError(messages.getMessage('error.InvalidOperation'), 'InvalidOperation', messages.getMessages('error.InvalidOperation.Actions'));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new SfError(messages.getMessage('error.GenericError', [errorMsg]), 'DecoupleError', messages.getMessages('error.GenericError.Actions'));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=decouple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decouple.js","sourceRoot":"","sources":["../../../../src/commands/orchestrator/app/decouple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAc,MAAM,kBAAkB,CAAC;AACjE,OAAO,eAAe,MAAM,uCAAuC,CAAC;AAEpE,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,iCAAiC,EAAE,2BAA2B,CAAC,CAAC;AAEvG,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAiB;IACjD,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,KAAK,GAAG,SAAS,CAAC;IAElC,MAAM,CAAU,KAAK,GAAG;QAC7B,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC;YAC9B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAChE,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;YACjC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACzD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,+BAA+B,CAAC;YACjE,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACpD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC5D,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;YAIzD,MAAM,UAAU,GAAI,KAAK,CAAC,YAAY,CAAa,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YACxF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAExD,sCAAsC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE9B,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE1D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAI,KAAe,CAAC,OAAO,CAAC;YAE1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,OAAO,CACf,QAAQ,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC3D,aAAa,EACb,QAAQ,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAClD,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3F,MAAM,IAAI,OAAO,CACf,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC9D,gBAAgB,EAChB,QAAQ,CAAC,WAAW,CAAC,8BAA8B,CAAC,CACrD,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9E,MAAM,IAAI,OAAO,CACf,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAC7C,kBAAkB,EAClB,QAAQ,CAAC,WAAW,CAAC,gCAAgC,CAAC,CACvD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,OAAO,CACf,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,EACrD,eAAe,EACf,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -34,12 +34,12 @@ export default class AppFrameworkApp {
|
|
|
34
34
|
}): Promise<string>;
|
|
35
35
|
/**
|
|
36
36
|
* Decouple an app from its template
|
|
37
|
+
* Removes references to the template from the source app
|
|
37
38
|
*
|
|
38
|
-
* @param
|
|
39
|
-
* @
|
|
40
|
-
* @returns The ID of the decoupled app
|
|
39
|
+
* @param appIdOrName - ID or name of the app to decouple
|
|
40
|
+
* @returns App ID of the decoupled app
|
|
41
41
|
*/
|
|
42
|
-
decoupleApp(
|
|
42
|
+
decoupleApp(appIdOrName: string): Promise<string>;
|
|
43
43
|
/**
|
|
44
44
|
* Delete an app
|
|
45
45
|
*
|
|
@@ -86,27 +86,20 @@ export default class AppFrameworkApp {
|
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
88
|
* Decouple an app from its template
|
|
89
|
+
* Removes references to the template from the source app
|
|
89
90
|
*
|
|
90
|
-
* @param
|
|
91
|
-
* @
|
|
92
|
-
* @returns The ID of the decoupled app
|
|
91
|
+
* @param appIdOrName - ID or name of the app to decouple
|
|
92
|
+
* @returns App ID of the decoupled app
|
|
93
93
|
*/
|
|
94
|
-
async decoupleApp(
|
|
95
|
-
if (!
|
|
96
|
-
throw new Error('App ID must be provided');
|
|
97
|
-
}
|
|
98
|
-
if (!templateId) {
|
|
99
|
-
throw new Error('Template ID must be provided for decoupling');
|
|
94
|
+
async decoupleApp(appIdOrName) {
|
|
95
|
+
if (!appIdOrName) {
|
|
96
|
+
throw new Error('App ID or name must be provided');
|
|
100
97
|
}
|
|
101
|
-
const url = `/apps/${
|
|
102
|
-
const body = {
|
|
103
|
-
templateSourceId: templateId,
|
|
104
|
-
templateOptions: { appAction: 'DecoupleApp' },
|
|
105
|
-
};
|
|
98
|
+
const url = `/apps/${appIdOrName}/decouple`;
|
|
106
99
|
const response = await request(this.connection, {
|
|
107
|
-
method: '
|
|
100
|
+
method: 'POST',
|
|
108
101
|
url,
|
|
109
|
-
body,
|
|
102
|
+
body: {}, // Send empty body for POST request
|
|
110
103
|
});
|
|
111
104
|
if (response && typeof response === 'object') {
|
|
112
105
|
if ('id' in response && typeof response.id === 'string') {
|
|
@@ -116,7 +109,7 @@ export default class AppFrameworkApp {
|
|
|
116
109
|
return response.app.id;
|
|
117
110
|
}
|
|
118
111
|
}
|
|
119
|
-
return
|
|
112
|
+
return appIdOrName; // Return the original app ID if no specific ID was found in the response
|
|
120
113
|
}
|
|
121
114
|
/**
|
|
122
115
|
* Delete an app
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appframeworkapp.js","sourceRoot":"","sources":["../../../src/utils/app/appframeworkapp.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"appframeworkapp.js","sourceRoot":"","sources":["../../../src/utils/app/appframeworkapp.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/request.js
CHANGED
|
@@ -8,11 +8,21 @@
|
|
|
8
8
|
export async function request(connection, options) {
|
|
9
9
|
const { method, url, body } = options;
|
|
10
10
|
const apiPath = `/services/data/v${connection.getApiVersion()}/app-framework${url}`;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
try {
|
|
12
|
+
const response = await connection.request({
|
|
13
|
+
method,
|
|
14
|
+
url: apiPath,
|
|
15
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
16
|
+
});
|
|
17
|
+
return response;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
// Re-throw with more context about the API call
|
|
21
|
+
const errorMessage = `API request failed: ${method} ${apiPath}`;
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
error.message = `${errorMessage} - ${error.message}`;
|
|
24
|
+
}
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=request.js.map
|
package/lib/utils/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,UAAsB,EAAE,OAAuB;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEtC,MAAM,OAAO,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,iBAAiB,GAAG,EAAE,CAAC;IAEpF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAI;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,UAAsB,EAAE,OAAuB;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEtC,MAAM,OAAO,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,iBAAiB,GAAG,EAAE,CAAC;IAEpF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAI;YAC3C,MAAM;YACN,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gDAAgD;QAChD,MAAM,YAAY,GAAG,uBAAuB,MAAM,IAAI,OAAO,EAAE,CAAC;QAChE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO,GAAG,GAAG,YAAY,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/lib/utils/utils.js
CHANGED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Decouple an app from its template.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Decouple an existing app from its template, removing all references to the template from the app. This operation makes the app independent and no longer tied to template updates or changes. Once decoupled, the app maintains its current configuration but can be modified independently without affecting the original template.
|
|
8
|
+
|
|
9
|
+
You must specify the app to decouple using its unique ID. App IDs are guaranteed to be unique and work reliably with the decouple operation.
|
|
10
|
+
|
|
11
|
+
Use this command when you want to break the relationship between an app and its template, allowing for independent customization without template constraints. After decoupling, the app will no longer receive updates when the template is modified.
|
|
12
|
+
|
|
13
|
+
You must have the AppFrameworkManageApp user permission to decouple apps. The app must exist in the target org and be currently associated with a template.
|
|
14
|
+
|
|
15
|
+
# examples
|
|
16
|
+
|
|
17
|
+
- Decouple an app from its template:
|
|
18
|
+
|
|
19
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --app-id 1zAxx000000004rEAA
|
|
20
|
+
|
|
21
|
+
- Decouple an app using a specific API version:
|
|
22
|
+
|
|
23
|
+
<%= config.bin %> <%= command.id %> --target-org mySandbox --app-id 1zAxx000000004rEAA --api-version 60.0
|
|
24
|
+
|
|
25
|
+
- Find app IDs using the list command first:
|
|
26
|
+
|
|
27
|
+
<%= config.bin %> orchestrator app list --target-org myOrg
|
|
28
|
+
|
|
29
|
+
# flags.target-org.summary
|
|
30
|
+
|
|
31
|
+
Login username or alias for the target org.
|
|
32
|
+
|
|
33
|
+
# flags.target-org.description
|
|
34
|
+
|
|
35
|
+
The target org containing the app to decouple. You must have the AppFrameworkManageApp user permission in this org to decouple apps.
|
|
36
|
+
|
|
37
|
+
# flags.api-version.summary
|
|
38
|
+
|
|
39
|
+
Override the API version used for API requests.
|
|
40
|
+
|
|
41
|
+
# flags.api-version.description
|
|
42
|
+
|
|
43
|
+
Override the API version used for orchestrator API requests. Use this flag to specify a particular API version when the default version doesn't work with your org's configuration.
|
|
44
|
+
|
|
45
|
+
# flags.app-id.summary
|
|
46
|
+
|
|
47
|
+
ID of the app to decouple from its template.
|
|
48
|
+
|
|
49
|
+
# flags.app-id.description
|
|
50
|
+
|
|
51
|
+
The unique identifier of the app to decouple from its template. App IDs are guaranteed to be unique within the org and work reliably with the decouple operation. Use "sf orchestrator app list" to find app IDs.
|
|
52
|
+
|
|
53
|
+
# decouplingApp
|
|
54
|
+
|
|
55
|
+
Decoupling app from template...
|
|
56
|
+
|
|
57
|
+
# decoupleSuccess
|
|
58
|
+
|
|
59
|
+
Successfully decoupled app '%s' from its template.
|
|
60
|
+
|
|
61
|
+
# error.AppNotFound
|
|
62
|
+
|
|
63
|
+
App with ID '%s' not found.
|
|
64
|
+
|
|
65
|
+
# error.AppNotFound.Actions
|
|
66
|
+
|
|
67
|
+
- Verify the app ID is correct
|
|
68
|
+
- Use "sf orchestrator app list" to see available apps and their IDs
|
|
69
|
+
- Check your permissions to view apps
|
|
70
|
+
- Make sure you're connected to the correct org with --target-org
|
|
71
|
+
|
|
72
|
+
# error.CannotDecouple
|
|
73
|
+
|
|
74
|
+
The app '%s' cannot be decoupled from its template. This app may be a source template or doesn't meet the requirements for decoupling.
|
|
75
|
+
|
|
76
|
+
# error.CannotDecouple.Actions
|
|
77
|
+
|
|
78
|
+
- Check that this app is not the source template for other apps
|
|
79
|
+
- Verify that the app is currently associated with a template (has templateSourceId)
|
|
80
|
+
- Ensure you have the AppFrameworkManageApp permission
|
|
81
|
+
- Use "sf orchestrator app display --app-id <app-id>" to see app details
|
|
82
|
+
- Try decoupling from the app hub interface first
|
|
83
|
+
|
|
84
|
+
# error.InvalidOperation
|
|
85
|
+
|
|
86
|
+
The app cannot be decoupled from its template.
|
|
87
|
+
|
|
88
|
+
# error.InvalidOperation.Actions
|
|
89
|
+
|
|
90
|
+
- Verify that the app is currently associated with a template
|
|
91
|
+
- Check that you have permission to modify apps in the target org
|
|
92
|
+
- Ensure the app is not in a state that prevents decoupling
|
|
93
|
+
- Try using a different API version with --api-version
|
|
94
|
+
|
|
95
|
+
# error.GenericError
|
|
96
|
+
|
|
97
|
+
Failed to decouple app: %s
|
|
98
|
+
|
|
99
|
+
# error.GenericError.Actions
|
|
100
|
+
|
|
101
|
+
- Verify that you have permission to modify apps in the target org
|
|
102
|
+
- Check your authentication and org connection are valid
|
|
103
|
+
- Ensure the app exists and is accessible
|
|
104
|
+
- Try using a different API version with --api-version
|
|
105
|
+
- Contact your Salesforce admin if the issue persists
|