diff --git a/server/src/modules/data-sources/util.service.ts b/server/src/modules/data-sources/util.service.ts index 041a4817e3..77c251b352 100644 --- a/server/src/modules/data-sources/util.service.ts +++ b/server/src/modules/data-sources/util.service.ts @@ -280,16 +280,26 @@ export class DataSourcesUtilService implements IDataSourcesUtilService { const credentialValue = option['value']; if (option['encrypted']) { + const existingCredentialId = + dataSource?.options && dataSource.options[key] && dataSource.options[key]['credential_id']; + if (credentialValue && (credentialValue.includes('{{constants') || credentialValue.includes('{{secrets'))) { if (!parsedOptions[key]) { parsedOptions[key] = {}; } parsedOptions[key].workspace_constant = credentialValue; + } else { + if ( + existingCredentialId && + credentialValue !== undefined && + credentialValue !== (await this.credentialService.getValue(existingCredentialId)) + ) { + if (parsedOptions[key]) { + delete parsedOptions[key].workspace_constant; + } + } } - const existingCredentialId = - dataSource?.options && dataSource.options[key] && dataSource.options[key]['credential_id']; - if (existingCredentialId) { if (credentialValue !== undefined) { await this.credentialService.update(existingCredentialId, credentialValue || '');