diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 919767b17..5e3a3f25b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -298,7 +298,9 @@ jobs: # TODO remove this after the plugin @salesforce/packaging has been upgraded # to a new version that only looks at package directories - name: 'Temporarily delete problematic metadata' - run: rm -rf ./config/experience-cloud + run: | + rm -rf ./config/experience-cloud/ + rm -rf ./nebula-logger/unsorted/main/default/profiles/ - name: 'Create Beta Managed Package Version' run: npm run package:version:create:managed @@ -352,7 +354,9 @@ jobs: # TODO remove this after the plugin @salesforce/packaging has been upgraded # to a new version that only looks at package directories - name: 'Temporarily delete problematic metadata' - run: rm -rf ./config/experience-cloud + run: | + rm -rf ./config/experience-cloud/ + rm -rf ./nebula-logger/unsorted/main/default/profiles/ - name: 'Create & Install Package Version' run: npx pwsh ./scripts/build/create-and-install-package-version.ps1 -targetpackagealias '"Nebula Logger - Core"' -targetreadme ./README.md -targetusername nebula-logger-package-demo diff --git a/README.md b/README.md index 1ba056fdd..e2fdce72b 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,15 @@ The most robust logger for Salesforce. Works with Apex, Lightning Components, Flow, Process Builder & Integrations. Designed for Salesforce admins, developers & architects. -## Unlocked Package - v4.11.10 +## Unlocked Package - v4.11.11 -[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigxQAC) -[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigxQAC) +[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001Oih7QAC) +[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001Oih7QAC) [![View Documentation](./images/btn-view-documentation.png)](https://jongpie.github.io/NebulaLogger/) -`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001OigxQAC` +`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001Oih7QAC` -`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001OigxQAC` +`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001Oih7QAC` --- diff --git a/nebula-logger/core/main/log-management/classes/LoggerEmailSender.cls b/nebula-logger/core/main/log-management/classes/LoggerEmailSender.cls index 4187df4cb..6fba7138d 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerEmailSender.cls +++ b/nebula-logger/core/main/log-management/classes/LoggerEmailSender.cls @@ -15,7 +15,7 @@ public without sharing class LoggerEmailSender { private static final List SENT_EMAILS = new List(); @TestVisible - private static final List CACHED_APEX_ERROR_RECIPIENTS { + private static final List CACHED_APEX_ERROR_RECIPIENTS { get { if (CACHED_APEX_ERROR_RECIPIENTS == null) { CACHED_APEX_ERROR_RECIPIENTS = queryApexErrrorRecipients(); @@ -82,18 +82,30 @@ public without sharing class LoggerEmailSender { return; } - if (CACHED_APEX_ERROR_RECIPIENTS.isEmpty()) { - if (LoggerParameter.ENABLE_SYSTEM_MESSAGES) { - Logger.info('Logger - no Apex email recipients configured, skipping sending email'); + if (CACHED_APEX_ERROR_RECIPIENTS.isEmpty() == true) { + if (LoggerParameter.ENABLE_SYSTEM_MESSAGES == true) { + // One of a few limited places in the codebase (except tests) that should use System.debug() + // The rest of the codebase should use a method in Logger.cls + System.debug(System.LoggingLevel.WARN, 'Nebula Logger - no Apex email recipients configured, skipping sending email'); // NOPMD } return; } - Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage(); - message.setToAddresses(CACHED_APEX_ERROR_RECIPIENTS); - message.setSubject(buildSubject(errorMessages)); - message.setHtmlBody(buildHtmlBody(sobjectType, errorMessages)); - sendEmail(message); + List messages = new List(); + for (Schema.ApexEmailNotification notification : CACHED_APEX_ERROR_RECIPIENTS) { + Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage(); + message.setSubject(buildSubject(errorMessages)); + message.setHtmlBody(buildHtmlBody(sobjectType, errorMessages)); + + if (notification.UserId != null) { + message.setTargetObjectId(notification.UserId); + message.setSaveAsActivity(false); + } else if (String.isNotBlank(notification.Email) == true) { + message.setToAddresses(new List{ notification.Email }); + } + messages.add(message); + } + sendEmail(messages); } private static List getErrorMessages(List saveResults) { @@ -120,24 +132,27 @@ public without sharing class LoggerEmailSender { return errorMessages; } - private static void sendEmail(Messaging.SingleEmailMessage message) { - SENT_EMAILS.add(message); + private static void sendEmail(List messages) { + SENT_EMAILS.addAll(messages); if (IS_EMAIL_DELIVERABILITY_AVAILABLE) { - List messages = new List{ message }; - List emailResults = Messaging.sendEmail(messages); + List emailResults = System.Messaging.sendEmail(messages); if (LoggerParameter.ENABLE_SYSTEM_MESSAGES == false) { return; - } else if (emailResults.get(0).success) { - Logger.info('Logger - The email was sent successfully'); + } else if (emailResults.get(0).success == true) { + // One of a few limited places in the codebase (except tests) that should use System.debug() + // The rest of the codebase should use a method in Logger.cls + System.debug(System.LoggingLevel.INFO, 'Nebula Logger - The email was sent successfully'); // NOPMD } else { - Logger.warn('Logger - The email failed to send: ' + emailResults.get(0).errors.get(0).message); + // One of a few limited places in the codebase (except tests) that should use System.debug() + // The rest of the codebase should use a method in Logger.cls + System.debug(System.LoggingLevel.WARN, 'Nebula Logger - The email failed to send: ' + emailResults.get(0).errors.get(0).message); // NOPMD } } } private static String buildSubject(List errorMessages) { - String emailSubjectTemplate = 'Logger - Error Notification - {0} ({1})'; + String emailSubjectTemplate = 'Nebula Logger - Error Notification - {0} ({1})'; List emailSubjectInputs = new List{ LoggerEngineDataSelector.getInstance().getCachedOrganization().Name, LoggerEngineDataSelector.getInstance().getCachedOrganization().Id @@ -158,21 +173,13 @@ public without sharing class LoggerEmailSender { return String.format(emailBodyTemplate, emailBodyInputs); } - private static List queryApexErrrorRecipients() { - List apexErrrorRecipients = new List(); + private static List queryApexErrrorRecipients() { List notifications = LogManagementDataSelector.getInstance().getCachedApexEmailNotifications(); if (System.Test.isRunningTest()) { notifications.clear(); notifications.addAll(MOCK_NOTIFICATIONS); } - for (ApexEmailNotification notification : notifications) { - if (notification.UserId != null) { - apexErrrorRecipients.add(notification.UserId); - } else if (String.isNotBlank(notification.Email)) { - apexErrrorRecipients.addAll(notification.Email.split(';')); - } - } - return apexErrrorRecipients; + return notifications; } } diff --git a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls index 0150e087b..8f4a73347 100644 --- a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls +++ b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls @@ -774,7 +774,7 @@ global with sharing class LogEntryEventBuilder { this.debugMessage = message; } - // One of few limited places in the codebase (except tests) that should use System.debug() + // One of a few limited places in the codebase (except tests) that should use System.debug() // The rest of the codebase should use a method in Logger.cls System.debug(this.entryLoggingLevel, this.debugMessage); } diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 00220b0f9..d00c6f2bc 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -15,7 +15,7 @@ global with sharing class Logger { // There's no reliable way to get the version number dynamically in Apex @TestVisible - private static final String CURRENT_VERSION_NUMBER = 'v4.11.10'; + private static final String CURRENT_VERSION_NUMBER = 'v4.11.11'; private static final System.LoggingLevel FALLBACK_LOGGING_LEVEL = System.LoggingLevel.DEBUG; private static final Set IGNORED_APEX_CLASSES = initializeIgnoredApexClasses(); private static final List LOG_ENTRIES_BUFFER = new List(); @@ -97,7 +97,7 @@ global with sharing class Logger { } static { - // One of few limited places in the codebase (except tests) that should use System.debug() + // One of a few limited places in the codebase (except tests) that should use System.debug() // The rest of the codebase should use a method in Logger.cls System.debug(System.LoggingLevel.INFO, 'Nebula Logger - Version Number: ' + getVersionNumber()); System.debug(System.LoggingLevel.INFO, 'Nebula Logger - Transaction ID: ' + getTransactionId()); @@ -3041,7 +3041,7 @@ global with sharing class Logger { global static void setScenario(String scenario) { if (LoggerParameter.USE_FIRST_SCENARIO_FOR_TRANSACTION == false || String.isBlank(transactionScenario)) { transactionScenario = scenario; - // One of few limited places in the codebase (except tests) that should use System.debug() + // One of a few limited places in the codebase (except tests) that should use System.debug() // The rest of the codebase should use a method in Logger.cls if (String.isNotBlank(transactionScenario)) { System.debug(System.LoggingLevel.INFO, 'Nebula Logger - Transaction Scenario: ' + transactionScenario); @@ -3054,7 +3054,7 @@ global with sharing class Logger { currentEntryScenario = scenario; orderedScenarios.add(scenario); - // One of few limited places in the codebase (except tests) that should use System.debug() + // One of a few limited places in the codebase (except tests) that should use System.debug() // The rest of the codebase should use a method in Logger.cls if (String.isNotBlank(transactionScenario)) { System.debug(System.LoggingLevel.INFO, 'Nebula Logger - Entry Scenario: ' + currentEntryScenario); diff --git a/nebula-logger/core/main/logger-engine/lwc/logger/logger.js b/nebula-logger/core/main/logger-engine/lwc/logger/logger.js index d8b7d56b0..c180c4546 100644 --- a/nebula-logger/core/main/logger-engine/lwc/logger/logger.js +++ b/nebula-logger/core/main/logger-engine/lwc/logger/logger.js @@ -6,7 +6,7 @@ import { LightningElement, api } from 'lwc'; import { createLoggerService } from './loggerService'; -const CURRENT_VERSION_NUMBER = 'v4.11.10'; +const CURRENT_VERSION_NUMBER = 'v4.11.11'; export default class Logger extends LightningElement { #loggerService = createLoggerService(); diff --git a/nebula-logger/core/tests/log-management/classes/LoggerEmailSender_Tests.cls b/nebula-logger/core/tests/log-management/classes/LoggerEmailSender_Tests.cls index f62611b92..548700232 100644 --- a/nebula-logger/core/tests/log-management/classes/LoggerEmailSender_Tests.cls +++ b/nebula-logger/core/tests/log-management/classes/LoggerEmailSender_Tests.cls @@ -45,42 +45,18 @@ private class LoggerEmailSender_Tests { System.Assert.isFalse(LoggerEmailSender.IS_EMAIL_DELIVERABILITY_AVAILABLE); } - @IsTest - static void it_should_filter_apex_error_recipients() { - ApexEmailNotification emailListNotification = new ApexEmailNotification(Email = 'hello@test.com;fake.person@not.real.com.biz', UserId = null); - ApexEmailNotification userNotification = new ApexEmailNotification(Email = null, UserId = System.UserInfo.getUserId()); - ApexEmailNotification invalidNotification = new ApexEmailNotification(Email = null, UserId = null); - LoggerEmailSender.MOCK_NOTIFICATIONS.addAll(new List{ emailListNotification, userNotification, invalidNotification }); - - List returnedRecipients = LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS; - - System.Assert.areEqual(3, returnedRecipients.size(), 'Should have returned 3 recipients: 1 for the user ID, and 2 for the email addresses'); - for (String recipient : returnedRecipients) { - Boolean matchesUserNotification = String.valueOf(userNotification.UserId) == recipient; - Boolean matchesEmailListNotification = new Set(emailListNotification.Email.split(';')).contains(recipient.trim()); - System.Assert.areEqual( - true, - matchesUserNotification || matchesEmailListNotification, - 'Returned recipient ' + - recipient + - ' should match either the user notification or the email list notification\n' + - JSON.serializePretty(LoggerEmailSender.MOCK_NOTIFICATIONS) - ); - } - } - @IsTest static void it_should_send_email_notification_for_saveResult_errors_when_enabled() { - LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.add(System.UserInfo.getUserId()); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(Email = 'some.email@test.com')); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(UserId = System.UserInfo.getUserId())); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List saveResultsWithErrors = new List{ LoggerMockDataCreator.createDatabaseSaveResult(false) }; - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, saveResultsWithErrors); + Database.SaveResult saveResultWithError = LoggerMockDataCreator.createDatabaseSaveResult(false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ saveResultWithError }); System.Assert.areEqual( true, - LoggerEmailSender.SENT_EMAILS.get(0).getHtmlBody().contains(saveResultsWithErrors.get(0).errors.get(0).getMessage()), + LoggerEmailSender.SENT_EMAILS.get(0).getHtmlBody().contains(saveResultWithError.errors.get(0).getMessage()), 'Email message should contain SaveResult error message' ); if (LoggerEmailSender.IS_EMAIL_DELIVERABILITY_AVAILABLE) { @@ -97,9 +73,8 @@ private class LoggerEmailSender_Tests { LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.clear(); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List saveResultsWithErrors = new List{ LoggerMockDataCreator.createDatabaseSaveResult(false) }; - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, saveResultsWithErrors); + Database.SaveResult saveResultWithError = LoggerMockDataCreator.createDatabaseSaveResult(false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ saveResultWithError }); System.Assert.isTrue(LoggerEmailSender.SENT_EMAILS.isEmpty(), 'No email messages should have been generated'); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent'); @@ -109,12 +84,12 @@ private class LoggerEmailSender_Tests { static void it_should_not_send_email_notification_for_saveResult_errors_when_disabled() { LoggerTestConfigurator.setMock(new LoggerParameter__mdt(DeveloperName = 'SendErrorEmailNotifications', Value__c = 'false')); System.Assert.isFalse(LoggerParameter.SEND_ERROR_EMAIL_NOTIFICATIONS); - LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.add(System.UserInfo.getUserId()); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(Email = 'some.email@test.com')); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(UserId = System.UserInfo.getUserId())); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List saveResultsWithErrors = new List{ LoggerMockDataCreator.createDatabaseSaveResult(false) }; - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, saveResultsWithErrors); + Database.SaveResult saveResultWithError = LoggerMockDataCreator.createDatabaseSaveResult(false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ saveResultWithError }); System.Assert.isTrue(LoggerEmailSender.SENT_EMAILS.isEmpty(), 'No email messages should have been generated'); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent'); @@ -122,16 +97,16 @@ private class LoggerEmailSender_Tests { @IsTest static void it_should_send_email_notification_for_upsertResult_errors_when_enabled() { - LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.add(System.UserInfo.getUserId()); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(Email = 'some.email@test.com')); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(UserId = System.UserInfo.getUserId())); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List upsertResultsWithErrors = Database.upsert(new List{ new LogEntry__c() }, false); - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, upsertResultsWithErrors); + Database.UpsertResult upsertResultWithError = LoggerMockDataCreator.createDatabaseUpsertResult(false, false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ upsertResultWithError }); System.Assert.areEqual( true, - LoggerEmailSender.SENT_EMAILS.get(0).getHtmlBody().contains(upsertResultsWithErrors.get(0).errors.get(0).getMessage()), + LoggerEmailSender.SENT_EMAILS.get(0).getHtmlBody().contains(upsertResultWithError.errors.get(0).getMessage()), 'Email message should contain UpsertResult error message' ); if (LoggerEmailSender.IS_EMAIL_DELIVERABILITY_AVAILABLE) { @@ -148,9 +123,8 @@ private class LoggerEmailSender_Tests { LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.clear(); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List upsertResultsWithErrors = Database.upsert(new List{ new LogEntry__c() }, false); - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, upsertResultsWithErrors); + Database.UpsertResult upsertResultWithError = LoggerMockDataCreator.createDatabaseUpsertResult(false, false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ upsertResultWithError }); System.Assert.isTrue(LoggerEmailSender.SENT_EMAILS.isEmpty(), 'No email messages should have been generated'); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent'); @@ -160,12 +134,12 @@ private class LoggerEmailSender_Tests { static void it_should_not_send_email_notification_for_upsertResult_errors_when_disabled() { LoggerTestConfigurator.setMock(new LoggerParameter__mdt(DeveloperName = 'SendErrorEmailNotifications', Value__c = 'false')); System.Assert.isFalse(LoggerParameter.SEND_ERROR_EMAIL_NOTIFICATIONS); - LoggerEmailSender.CACHED_APEX_ERROR_RECIPIENTS.add(System.UserInfo.getUserId()); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(Email = 'some.email@test.com')); + LoggerEmailSender.MOCK_NOTIFICATIONS.add(new ApexEmailNotification(UserId = System.UserInfo.getUserId())); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent yet'); - // LogEntry__c requires a Log__c parent record, so inserting a LogEntry__c with no fields set will (intentionally) fail - List upsertResultsWithErrors = Database.upsert(new List{ new LogEntry__c() }, false); - LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, upsertResultsWithErrors); + Database.UpsertResult upsertResultWithError = LoggerMockDataCreator.createDatabaseUpsertResult(false, false); + LoggerEmailSender.sendErrorEmail(Schema.LogEntry__c.SObjectType, new List{ upsertResultWithError }); System.Assert.areEqual(0, System.Limits.getEmailInvocations(), 'No emails should have been sent'); System.Assert.isTrue(LoggerEmailSender.SENT_EMAILS.isEmpty(), 'No email messages should have been generated'); diff --git a/package.json b/package.json index 89f5571c0..a5da418ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nebula-logger", - "version": "4.11.10", + "version": "4.11.11", "description": "The most robust logger for Salesforce. Works with Apex, Lightning Components, Flow, Process Builder & Integrations. Designed for Salesforce admins, developers & architects.", "author": "Jonathan Gillespie", "license": "MIT", diff --git a/sfdx-project.json b/sfdx-project.json index 58ebca49a..a478e2485 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -13,9 +13,9 @@ "package": "Nebula Logger - Core", "path": "./nebula-logger/core", "definitionFile": "./config/scratch-orgs/base-scratch-def.json", - "versionNumber": "4.11.10.NEXT", - "versionName": "Conditional Visibility for HTTP Response Headers", - "versionDescription": "Added several new checkbox fields on LogEntry__c that correspond to each long textarea field, and updated LogEntryRecordPage.flexipage to have conditional visibility for the fields HttpResponseHeaderKeys__c and HttpResponseHeaders__c based on new checkbox fields", + "versionNumber": "4.11.11.NEXT", + "versionName": "Reduced Usage of Email Limits Consumption in LoggerEmailSender", + "versionDescription": "Updated LoggerEmailSender to use the instance method Messaging.SingleEmailMessage.setTargetObjectId() when sending failure emails to internal users, which does not count towards the transactional email limits", "releaseNotesUrl": "https://github.com/jongpie/NebulaLogger/releases", "unpackagedMetadata": { "path": "./nebula-logger/extra-tests" @@ -158,6 +158,7 @@ "Nebula Logger - Core@4.11.8-new-field-logentry__c.httpresponseheaders__c": "04t5Y000001Oig9QAC", "Nebula Logger - Core@4.11.9-new-fields-log__c.loggedbyusernametext__c-and-logentry__c.loggedbyusernametext__c": "04t5Y000001OigJQAS", "Nebula Logger - Core@4.11.10-conditional-visibility-for-http-response-headers": "04t5Y000001OigxQAC", + "Nebula Logger - Core@4.11.11-reduced-usage-of-email-limits-consumption-in-loggeremailsender": "04t5Y000001Oih7QAC", "Nebula Logger - Core Plugin - Async Failure Additions": "0Ho5Y000000blO4SAI", "Nebula Logger - Core Plugin - Async Failure Additions@1.0.0": "04t5Y0000015lhiQAA", "Nebula Logger - Core Plugin - Async Failure Additions@1.0.1": "04t5Y0000015lhsQAA", diff --git a/supplemental-metadata/main/SF-Compliance-Metadata-Auditor/customMetadata/Data_Classification.default.md-meta.xml b/supplemental-metadata/main/SF-Compliance-Metadata-Auditor/customMetadata/Data_Classification.default.md-meta.xml deleted file mode 100644 index e619f4d63..000000000 --- a/supplemental-metadata/main/SF-Compliance-Metadata-Auditor/customMetadata/Data_Classification.default.md-meta.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - false - - Omitted_Fields__c - ["CreatedBy","CreatedDate","DeveloperName","EventUuid","Id","IsDeleted","Label","Language","LastActivityDate","LastModifiedBy","LastModifiedDate","LastModifiedDateBy","LastReferencedDate","LastViewedDate","MasterLabel","MasterRecordId","Name","NamespacePrefix","Owner","QualifiedApiName","RecordVisibility","ReplayId","SetupOwnerId","SystemModstamp","UserRecordAccess"] - - - reportable_entity_json__c - ["LogEntryArchive__b","LogEntryDataMaskRule__mdt","LogEntryEvent__e","LogEntryTagRule__mdt","LogEntryTag__c","LogEntry__c","LoggerScenarioRule__mdt","LogStatus__mdt","Log__c","LoggerParameter__mdt","LoggerPlugin__mdt","LogRetentionRule__mdt","LogRetentionRuleCondition__mdt","LoggerSObjectHandler__mdt","LoggerSObjectHandlerParameter__mdt","LoggerSObjectHandlerPlugin__mdt","LoggerSObjectHandlerPluginParameter__mdt","LoggerSettings__c","LoggerTag__c"] - -