sfdx-hardis 5.37.1 → 5.38.0

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.
@@ -1699,6 +1699,117 @@
1699
1699
  "purge-references:misc:hardis"
1700
1700
  ]
1701
1701
  },
1702
+ "hardis:misc:servicenow-report": {
1703
+ "aliases": [],
1704
+ "args": {},
1705
+ "description": "This command retrieves user stories from Salesforce and enriches them with data from ServiceNow.\n\nDefine the following environment variables (in CICD variables or locally in a **.env** file):\n\n- SERVICENOW_URL: The base URL of the ServiceNow API (ex: https://your-instance.service-now.com/)\n- SERVICENOW_USERNAME: The username for ServiceNow API authentication.\n- SERVICENOW_PASSWORD: The password for ServiceNow API authentication.\n\nYou also need to define JSON configuration file(e) in folder **config/user-stories/**\n\nExample:\n\n```json\n{\n \"userStoriesConfig\": {\n \"fields\": [\n \"Id\",\n \"Name\",\n \"Ticket_Number__c\",\n \"copado__User_Story_Title__c\",\n \"CreatedBy.Name\",\n \"copado__Release__r.Name\",\n \"copado__Environment__r.Name\"\n ],\n \"table\": \"copado__User_Story__c\",\n \"where\": \"copado__Environment__r.Name ='UAT'\",\n \"whereChoices\": {\n \"UAT all\": \"copado__Environment__r.Name ='UAT'\",\n \"UAT postponed\": \"copado__Environment__r.Name ='UAT' AND copado__Release__r.Name = 'postponed'\",\n \"UAT in progress\": \"copado__Environment__r.Name ='UAT' AND copado__Release__r.Name != 'postponed' AND copado__Release__r.Name != 'cancelled'\"\n },\n \"orderBy\": \"Ticket_Number__c ASC\",\n \"ticketField\": \"Ticket_Number__c\",\n \"reportFields\": [\n { \"key\": \"US Name\", \"path\": \"Name\" },\n { \"key\": \"US SN Identifier\", \"path\": \"Ticket_Number__c\" },\n { \"key\": \"US Title\", \"path\": \"copado__User_Story_Title__c\" },\n { \"key\": \"US Created By\", \"path\": \"CreatedBy.Name\" },\n { \"key\": \"US Environment\", \"path\": \"copado__Environment__r.Name\" },\n { \"key\": \"US Release\", \"path\": \"copado__Release__r.Name\" },\n { \"key\": \"SN Identifier\", \"path\": \"serviceNowInfo.number\", \"default\": \"NOT FOUND\" },\n { \"key\": \"SN Title\", \"path\": \"serviceNowInfo.short_description\", \"default\": \"NOT FOUND\" },\n { \"key\": \"SN Status\", \"path\": \"serviceNowInfo.state\", \"default\": \"NOT FOUND\" },\n { \"key\": \"SN Created By\", \"path\": \"serviceNowInfo.sys_created_by\", \"default\": \"NOT FOUND\" },\n { \"key\": \"SN URL\", \"special\": \"serviceNowTicketUrl\" }\n ]\n },\n \"serviceNowConfig\": {\n \"tables\": [\n { \"tableName\": \"demand\" },\n { \"tableName\": \"incident\" }\n ]\n }\n}\n```\n ",
1706
+ "examples": [
1707
+ "$ sf hardis:misc:servicenow-report"
1708
+ ],
1709
+ "flags": {
1710
+ "json": {
1711
+ "description": "Format output as json.",
1712
+ "helpGroup": "GLOBAL",
1713
+ "name": "json",
1714
+ "allowNo": false,
1715
+ "type": "boolean"
1716
+ },
1717
+ "flags-dir": {
1718
+ "helpGroup": "GLOBAL",
1719
+ "name": "flags-dir",
1720
+ "summary": "Import flag values from a directory.",
1721
+ "hasDynamicHelp": false,
1722
+ "multiple": false,
1723
+ "type": "option"
1724
+ },
1725
+ "config": {
1726
+ "char": "c",
1727
+ "description": "Path to JSON config file containing user stories and ServiceNow configuration",
1728
+ "name": "config",
1729
+ "hasDynamicHelp": false,
1730
+ "multiple": false,
1731
+ "type": "option"
1732
+ },
1733
+ "where-choice": {
1734
+ "char": "w",
1735
+ "description": "Where selection for user stories. If not provided, you will be prompted to select one from the config file.",
1736
+ "name": "where-choice",
1737
+ "hasDynamicHelp": false,
1738
+ "multiple": false,
1739
+ "type": "option"
1740
+ },
1741
+ "outputfile": {
1742
+ "char": "f",
1743
+ "description": "Force the path and name of output report file. Must end with .csv",
1744
+ "name": "outputfile",
1745
+ "hasDynamicHelp": false,
1746
+ "multiple": false,
1747
+ "type": "option"
1748
+ },
1749
+ "debug": {
1750
+ "char": "d",
1751
+ "description": "Activate debug mode (more logs)",
1752
+ "name": "debug",
1753
+ "allowNo": false,
1754
+ "type": "boolean"
1755
+ },
1756
+ "websocket": {
1757
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1758
+ "name": "websocket",
1759
+ "hasDynamicHelp": false,
1760
+ "multiple": false,
1761
+ "type": "option"
1762
+ },
1763
+ "skipauth": {
1764
+ "description": "Skip authentication check when a default username is required",
1765
+ "name": "skipauth",
1766
+ "allowNo": false,
1767
+ "type": "boolean"
1768
+ },
1769
+ "target-org": {
1770
+ "aliases": [
1771
+ "targetusername",
1772
+ "u"
1773
+ ],
1774
+ "char": "o",
1775
+ "deprecateAliases": true,
1776
+ "name": "target-org",
1777
+ "noCacheDefault": true,
1778
+ "summary": "Username or alias of the target org.",
1779
+ "hasDynamicHelp": true,
1780
+ "multiple": false,
1781
+ "type": "option"
1782
+ }
1783
+ },
1784
+ "hasDynamicHelp": true,
1785
+ "hiddenAliases": [],
1786
+ "id": "hardis:misc:servicenow-report",
1787
+ "pluginAlias": "sfdx-hardis",
1788
+ "pluginName": "sfdx-hardis",
1789
+ "pluginType": "core",
1790
+ "strict": true,
1791
+ "enableJsonFlag": true,
1792
+ "title": "ServiceNow Report",
1793
+ "supportsDevhubUsername": false,
1794
+ "requiresProject": true,
1795
+ "isESM": true,
1796
+ "relativePath": [
1797
+ "lib",
1798
+ "commands",
1799
+ "hardis",
1800
+ "misc",
1801
+ "servicenow-report.js"
1802
+ ],
1803
+ "aliasPermutations": [],
1804
+ "permutations": [
1805
+ "hardis:misc:servicenow-report",
1806
+ "misc:hardis:servicenow-report",
1807
+ "misc:servicenow-report:hardis",
1808
+ "hardis:servicenow-report:misc",
1809
+ "servicenow-report:hardis:misc",
1810
+ "servicenow-report:misc:hardis"
1811
+ ]
1812
+ },
1702
1813
  "hardis:misc:toml2csv": {
1703
1814
  "aliases": [],
1704
1815
  "args": {},
@@ -5286,15 +5397,12 @@
5286
5397
  "import:data:org:hardis"
5287
5398
  ]
5288
5399
  },
5289
- "hardis:org:diagnose:audittrail": {
5400
+ "hardis:org:files:export": {
5290
5401
  "aliases": [],
5291
5402
  "args": {},
5292
- "description": "Export Audit trail into a CSV file with selected criteria, and highlight suspect actions\n\nAlso detects updates of Custom Settings values (disable by defining `SKIP_AUDIT_TRAIL_CUSTOM_SETTINGS=true`)\n\nRegular setup actions performed in major orgs are filtered.\n\n- \"\"\n - createScratchOrg\n - changedsenderemail\n - deleteScratchOrg\n - loginasgrantedtopartnerbt\n- Certificate and Key Management\n - insertCertificate\n- Custom App Licenses\n - addeduserpackagelicense\n - granteduserpackagelicense\n - revokeduserpackagelicense\n- Customer Portal\n - createdcustomersuccessuser\n - CSPUserDisabled\n- Currency\n - updateddatedexchrate\n- Data Management\n - queueMembership\n- Email Administration\n - dkimRotationPreparationSuccessful\n - dkimRotationSuccessful\n- Groups\n - groupMembership\n- Holidays\n - holiday_insert\n- Inbox mobile and legacy desktop apps\n - enableSIQUserNonEAC\n- Manage Users\n - activateduser\n - createduser\n - changedcommunitynickname\n - changedemail\n - changedfederationid\n - changedpassword\n - changedinteractionuseroffon\n - changedinteractionuseronoff\n - changedmarketinguseroffon\n - changedmarketinguseronoff\n - changedofflineuseroffon\n - changedprofileforuserstdtostd\n - changedprofileforuser\n - changedprofileforusercusttostd\n - changedprofileforuserstdtocust\n - changedroleforusertonone\n - changedroleforuser\n - changedroleforuserfromnone\n - changedUserEmailVerifiedStatusUnverified\n - changedUserEmailVerifiedStatusVerified\n - changedknowledgeuseroffon\n - changedsfcontentuseroffon\n - changedsupportuseroffon\n - changedUserPhoneNumber\n - changedUserPhoneVerifiedStatusUnverified\n - deactivateduser\n - deleteAuthenticatorPairing\n - deleteTwoFactorInfo2\n - deleteTwoFactorTempCode\n - frozeuser\n - insertAuthenticatorPairing\n - insertTwoFactorInfo2\n - insertTwoFactorTempCode\n - lightningloginenroll\n - PermSetAssign\n - PermSetGroupAssign\n - PermSetGroupUnassign\n - PermSetLicenseAssign\n - PermSetUnassign\n - PermSetLicenseUnassign\n - registeredUserPhoneNumber\n - resetpassword\n - suNetworkAdminLogin\n - suNetworkAdminLogout\n - suOrgAdminLogin\n - suOrgAdminLogout\n - unfrozeuser\n - useremailchangesent\n- Mobile Administration\n - assigneduserstomobileconfig\n- Reporting Snapshots\n - createdReportJob\n - deletedReportJob\n- Sandboxes\n - DeleteSandbox\n\nBy default, deployment user defined in .sfdx-hardis.yml targetUsername property will be excluded.\n\nYou can define additional users to exclude in .sfdx-hardis.yml **monitoringExcludeUsernames** property.\n\nYou can also add more sections / actions considered as not suspect using property **monitoringAllowedSectionsActions**\n\nExample:\n\n```yaml\nmonitoringExcludeUsernames:\n - deploymentuser@cloudity.com\n - marketingcloud@cloudity.com\n - integration-user@cloudity.com\n\nmonitoringAllowedSectionsActions:\n \"Some section\": [] // Will ignore all actions from such section\n \"Some other section\": [\"actionType1\",\"actionType2\",\"actionType3\"] // Will ignore only those 3 actions from section \"Some other section\". Other actions in the same section will be considered as suspect.\n```\n\n## Excel output example\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-monitoring-audittrail-excel.jpg)\n\n## Local output example\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-monitoring-audittrail-local.jpg)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-suspect-audit-trail/) and can output Grafana, Slack and MsTeams Notifications.\n",
5403
+ "description": "Export file attachments from a Salesforce org\n\nHandles:\n\n- ContentVersion\n- Attachment\n\nSee article below:\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
5293
5404
  "examples": [
5294
- "$ sf hardis:org:diagnose:audittrail",
5295
- "$ sf hardis:org:diagnose:audittrail --excludeusers baptiste@titi.com",
5296
- "$ sf hardis:org:diagnose:audittrail --excludeusers baptiste@titi.com,bertrand@titi.com",
5297
- "$ sf hardis:org:diagnose:audittrail --lastndays 5"
5405
+ "$ sf hardis:org:files:export"
5298
5406
  ],
5299
5407
  "flags": {
5300
5408
  "json": {
@@ -5312,26 +5420,37 @@
5312
5420
  "multiple": false,
5313
5421
  "type": "option"
5314
5422
  },
5315
- "excludeusers": {
5316
- "char": "e",
5317
- "description": "Comma-separated list of usernames to exclude",
5318
- "name": "excludeusers",
5423
+ "path": {
5424
+ "char": "p",
5425
+ "description": "Path to the file export project",
5426
+ "name": "path",
5319
5427
  "hasDynamicHelp": false,
5320
5428
  "multiple": false,
5321
5429
  "type": "option"
5322
5430
  },
5323
- "lastndays": {
5431
+ "chunksize": {
5432
+ "char": "c",
5433
+ "description": "Number of records to add in a chunk before it is processed",
5434
+ "name": "chunksize",
5435
+ "default": 1000,
5436
+ "hasDynamicHelp": false,
5437
+ "multiple": false,
5438
+ "type": "option"
5439
+ },
5440
+ "polltimeout": {
5324
5441
  "char": "t",
5325
- "description": "Number of days to extract from today (included)",
5326
- "name": "lastndays",
5442
+ "description": "Timeout in MS for Bulk API calls",
5443
+ "name": "polltimeout",
5444
+ "default": 300000,
5327
5445
  "hasDynamicHelp": false,
5328
5446
  "multiple": false,
5329
5447
  "type": "option"
5330
5448
  },
5331
- "outputfile": {
5332
- "char": "f",
5333
- "description": "Force the path and name of output report file. Must end with .csv",
5334
- "name": "outputfile",
5449
+ "startchunknumber": {
5450
+ "char": "s",
5451
+ "description": "Chunk number to start from",
5452
+ "name": "startchunknumber",
5453
+ "default": 0,
5335
5454
  "hasDynamicHelp": false,
5336
5455
  "multiple": false,
5337
5456
  "type": "option"
@@ -5374,13 +5493,13 @@
5374
5493
  },
5375
5494
  "hasDynamicHelp": true,
5376
5495
  "hiddenAliases": [],
5377
- "id": "hardis:org:diagnose:audittrail",
5496
+ "id": "hardis:org:files:export",
5378
5497
  "pluginAlias": "sfdx-hardis",
5379
5498
  "pluginName": "sfdx-hardis",
5380
5499
  "pluginType": "core",
5381
5500
  "strict": true,
5382
5501
  "enableJsonFlag": true,
5383
- "title": "Diagnose content of Setup Audit Trail",
5502
+ "title": "Export files",
5384
5503
  "requiresProject": false,
5385
5504
  "isESM": true,
5386
5505
  "relativePath": [
@@ -5388,43 +5507,43 @@
5388
5507
  "commands",
5389
5508
  "hardis",
5390
5509
  "org",
5391
- "diagnose",
5392
- "audittrail.js"
5510
+ "files",
5511
+ "export.js"
5393
5512
  ],
5394
5513
  "aliasPermutations": [],
5395
5514
  "permutations": [
5396
- "hardis:org:diagnose:audittrail",
5397
- "org:hardis:diagnose:audittrail",
5398
- "org:diagnose:hardis:audittrail",
5399
- "org:diagnose:audittrail:hardis",
5400
- "hardis:diagnose:org:audittrail",
5401
- "diagnose:hardis:org:audittrail",
5402
- "diagnose:org:hardis:audittrail",
5403
- "diagnose:org:audittrail:hardis",
5404
- "hardis:diagnose:audittrail:org",
5405
- "diagnose:hardis:audittrail:org",
5406
- "diagnose:audittrail:hardis:org",
5407
- "diagnose:audittrail:org:hardis",
5408
- "hardis:org:audittrail:diagnose",
5409
- "org:hardis:audittrail:diagnose",
5410
- "org:audittrail:hardis:diagnose",
5411
- "org:audittrail:diagnose:hardis",
5412
- "hardis:audittrail:org:diagnose",
5413
- "audittrail:hardis:org:diagnose",
5414
- "audittrail:org:hardis:diagnose",
5415
- "audittrail:org:diagnose:hardis",
5416
- "hardis:audittrail:diagnose:org",
5417
- "audittrail:hardis:diagnose:org",
5418
- "audittrail:diagnose:hardis:org",
5419
- "audittrail:diagnose:org:hardis"
5515
+ "hardis:org:files:export",
5516
+ "org:hardis:files:export",
5517
+ "org:files:hardis:export",
5518
+ "org:files:export:hardis",
5519
+ "hardis:files:org:export",
5520
+ "files:hardis:org:export",
5521
+ "files:org:hardis:export",
5522
+ "files:org:export:hardis",
5523
+ "hardis:files:export:org",
5524
+ "files:hardis:export:org",
5525
+ "files:export:hardis:org",
5526
+ "files:export:org:hardis",
5527
+ "hardis:org:export:files",
5528
+ "org:hardis:export:files",
5529
+ "org:export:hardis:files",
5530
+ "org:export:files:hardis",
5531
+ "hardis:export:org:files",
5532
+ "export:hardis:org:files",
5533
+ "export:org:hardis:files",
5534
+ "export:org:files:hardis",
5535
+ "hardis:export:files:org",
5536
+ "export:hardis:files:org",
5537
+ "export:files:hardis:org",
5538
+ "export:files:org:hardis"
5420
5539
  ]
5421
5540
  },
5422
- "hardis:org:diagnose:instanceupgrade": {
5541
+ "hardis:org:files:import": {
5423
5542
  "aliases": [],
5424
5543
  "args": {},
5425
- "description": "Get the date when the org instance will be upgraded (to Spring, Summer or Winter)\n ",
5544
+ "description": "Import file attachments into a Salesforce org\n\nSee article below to see how to Export them.\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
5426
5545
  "examples": [
5427
- "$ sf hardis:org:diagnose:instanceupgrade"
5546
+ "$ sf hardis:org:files:import"
5428
5547
  ],
5429
5548
  "flags": {
5430
5549
  "json": {
@@ -5442,6 +5561,21 @@
5442
5561
  "multiple": false,
5443
5562
  "type": "option"
5444
5563
  },
5564
+ "path": {
5565
+ "char": "p",
5566
+ "description": "Path to the file export project",
5567
+ "name": "path",
5568
+ "hasDynamicHelp": false,
5569
+ "multiple": false,
5570
+ "type": "option"
5571
+ },
5572
+ "overwrite": {
5573
+ "char": "f",
5574
+ "description": "Override existing files (doubles the number of API calls)",
5575
+ "name": "overwrite",
5576
+ "allowNo": false,
5577
+ "type": "boolean"
5578
+ },
5445
5579
  "debug": {
5446
5580
  "char": "d",
5447
5581
  "description": "Activate debug mode (more logs)",
@@ -5480,13 +5614,13 @@
5480
5614
  },
5481
5615
  "hasDynamicHelp": true,
5482
5616
  "hiddenAliases": [],
5483
- "id": "hardis:org:diagnose:instanceupgrade",
5617
+ "id": "hardis:org:files:import",
5484
5618
  "pluginAlias": "sfdx-hardis",
5485
5619
  "pluginName": "sfdx-hardis",
5486
5620
  "pluginType": "core",
5487
5621
  "strict": true,
5488
5622
  "enableJsonFlag": true,
5489
- "title": "Get Instance Upgrade date",
5623
+ "title": "Import files",
5490
5624
  "requiresProject": false,
5491
5625
  "isESM": true,
5492
5626
  "relativePath": [
@@ -5494,46 +5628,46 @@
5494
5628
  "commands",
5495
5629
  "hardis",
5496
5630
  "org",
5497
- "diagnose",
5498
- "instanceupgrade.js"
5631
+ "files",
5632
+ "import.js"
5499
5633
  ],
5500
5634
  "aliasPermutations": [],
5501
5635
  "permutations": [
5502
- "hardis:org:diagnose:instanceupgrade",
5503
- "org:hardis:diagnose:instanceupgrade",
5504
- "org:diagnose:hardis:instanceupgrade",
5505
- "org:diagnose:instanceupgrade:hardis",
5506
- "hardis:diagnose:org:instanceupgrade",
5507
- "diagnose:hardis:org:instanceupgrade",
5508
- "diagnose:org:hardis:instanceupgrade",
5509
- "diagnose:org:instanceupgrade:hardis",
5510
- "hardis:diagnose:instanceupgrade:org",
5511
- "diagnose:hardis:instanceupgrade:org",
5512
- "diagnose:instanceupgrade:hardis:org",
5513
- "diagnose:instanceupgrade:org:hardis",
5514
- "hardis:org:instanceupgrade:diagnose",
5515
- "org:hardis:instanceupgrade:diagnose",
5516
- "org:instanceupgrade:hardis:diagnose",
5517
- "org:instanceupgrade:diagnose:hardis",
5518
- "hardis:instanceupgrade:org:diagnose",
5519
- "instanceupgrade:hardis:org:diagnose",
5520
- "instanceupgrade:org:hardis:diagnose",
5521
- "instanceupgrade:org:diagnose:hardis",
5522
- "hardis:instanceupgrade:diagnose:org",
5523
- "instanceupgrade:hardis:diagnose:org",
5524
- "instanceupgrade:diagnose:hardis:org",
5525
- "instanceupgrade:diagnose:org:hardis"
5526
- ]
5527
- },
5528
- "hardis:org:diagnose:legacyapi": {
5529
- "aliases": [],
5530
- "args": {},
5531
- "description": "Checks if an org uses retired or someday retired API version\n\n\nSee article below\n\n[![Handle Salesforce API versions Deprecation like a pro](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deprecated-api.jpg)](https://nicolas.vuillamy.fr/handle-salesforce-api-versions-deprecation-like-a-pro-335065f52238)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-deprecated-api-calls/) and can output Grafana, Slack and MsTeams Notifications.\n",
5532
- "examples": [
5533
- "$ sf hardis:org:diagnose:legacyapi",
5534
- "$ sf hardis:org:diagnose:legacyapi -u hardis@myclient.com",
5535
- "$ sf hardis:org:diagnose:legacyapi --outputfile 'c:/path/to/folder/legacyapi.csv'",
5536
- "$ sf hardis:org:diagnose:legacyapi -u hardis@myclient.com --outputfile ./tmp/legacyapi.csv"
5636
+ "hardis:org:files:import",
5637
+ "org:hardis:files:import",
5638
+ "org:files:hardis:import",
5639
+ "org:files:import:hardis",
5640
+ "hardis:files:org:import",
5641
+ "files:hardis:org:import",
5642
+ "files:org:hardis:import",
5643
+ "files:org:import:hardis",
5644
+ "hardis:files:import:org",
5645
+ "files:hardis:import:org",
5646
+ "files:import:hardis:org",
5647
+ "files:import:org:hardis",
5648
+ "hardis:org:import:files",
5649
+ "org:hardis:import:files",
5650
+ "org:import:hardis:files",
5651
+ "org:import:files:hardis",
5652
+ "hardis:import:org:files",
5653
+ "import:hardis:org:files",
5654
+ "import:org:hardis:files",
5655
+ "import:org:files:hardis",
5656
+ "hardis:import:files:org",
5657
+ "import:hardis:files:org",
5658
+ "import:files:hardis:org",
5659
+ "import:files:org:hardis"
5660
+ ]
5661
+ },
5662
+ "hardis:org:diagnose:audittrail": {
5663
+ "aliases": [],
5664
+ "args": {},
5665
+ "description": "Export Audit trail into a CSV file with selected criteria, and highlight suspect actions\n\nAlso detects updates of Custom Settings values (disable by defining `SKIP_AUDIT_TRAIL_CUSTOM_SETTINGS=true`)\n\nRegular setup actions performed in major orgs are filtered.\n\n- \"\"\n - createScratchOrg\n - changedsenderemail\n - deleteScratchOrg\n - loginasgrantedtopartnerbt\n- Certificate and Key Management\n - insertCertificate\n- Custom App Licenses\n - addeduserpackagelicense\n - granteduserpackagelicense\n - revokeduserpackagelicense\n- Customer Portal\n - createdcustomersuccessuser\n - CSPUserDisabled\n- Currency\n - updateddatedexchrate\n- Data Management\n - queueMembership\n- Email Administration\n - dkimRotationPreparationSuccessful\n - dkimRotationSuccessful\n- Groups\n - groupMembership\n- Holidays\n - holiday_insert\n- Inbox mobile and legacy desktop apps\n - enableSIQUserNonEAC\n- Manage Users\n - activateduser\n - createduser\n - changedcommunitynickname\n - changedemail\n - changedfederationid\n - changedpassword\n - changedinteractionuseroffon\n - changedinteractionuseronoff\n - changedmarketinguseroffon\n - changedmarketinguseronoff\n - changedofflineuseroffon\n - changedprofileforuserstdtostd\n - changedprofileforuser\n - changedprofileforusercusttostd\n - changedprofileforuserstdtocust\n - changedroleforusertonone\n - changedroleforuser\n - changedroleforuserfromnone\n - changedUserEmailVerifiedStatusUnverified\n - changedUserEmailVerifiedStatusVerified\n - changedknowledgeuseroffon\n - changedsfcontentuseroffon\n - changedsupportuseroffon\n - changedUserPhoneNumber\n - changedUserPhoneVerifiedStatusUnverified\n - deactivateduser\n - deleteAuthenticatorPairing\n - deleteTwoFactorInfo2\n - deleteTwoFactorTempCode\n - frozeuser\n - insertAuthenticatorPairing\n - insertTwoFactorInfo2\n - insertTwoFactorTempCode\n - lightningloginenroll\n - PermSetAssign\n - PermSetGroupAssign\n - PermSetGroupUnassign\n - PermSetLicenseAssign\n - PermSetUnassign\n - PermSetLicenseUnassign\n - registeredUserPhoneNumber\n - resetpassword\n - suNetworkAdminLogin\n - suNetworkAdminLogout\n - suOrgAdminLogin\n - suOrgAdminLogout\n - unfrozeuser\n - useremailchangesent\n- Mobile Administration\n - assigneduserstomobileconfig\n- Reporting Snapshots\n - createdReportJob\n - deletedReportJob\n- Sandboxes\n - DeleteSandbox\n\nBy default, deployment user defined in .sfdx-hardis.yml targetUsername property will be excluded.\n\nYou can define additional users to exclude in .sfdx-hardis.yml **monitoringExcludeUsernames** property.\n\nYou can also add more sections / actions considered as not suspect using property **monitoringAllowedSectionsActions**\n\nExample:\n\n```yaml\nmonitoringExcludeUsernames:\n - deploymentuser@cloudity.com\n - marketingcloud@cloudity.com\n - integration-user@cloudity.com\n\nmonitoringAllowedSectionsActions:\n \"Some section\": [] // Will ignore all actions from such section\n \"Some other section\": [\"actionType1\",\"actionType2\",\"actionType3\"] // Will ignore only those 3 actions from section \"Some other section\". Other actions in the same section will be considered as suspect.\n```\n\n## Excel output example\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-monitoring-audittrail-excel.jpg)\n\n## Local output example\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-monitoring-audittrail-local.jpg)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-suspect-audit-trail/) and can output Grafana, Slack and MsTeams Notifications.\n",
5666
+ "examples": [
5667
+ "$ sf hardis:org:diagnose:audittrail",
5668
+ "$ sf hardis:org:diagnose:audittrail --excludeusers baptiste@titi.com",
5669
+ "$ sf hardis:org:diagnose:audittrail --excludeusers baptiste@titi.com,bertrand@titi.com",
5670
+ "$ sf hardis:org:diagnose:audittrail --lastndays 5"
5537
5671
  ],
5538
5672
  "flags": {
5539
5673
  "json": {
@@ -5551,20 +5685,18 @@
5551
5685
  "multiple": false,
5552
5686
  "type": "option"
5553
5687
  },
5554
- "eventtype": {
5688
+ "excludeusers": {
5555
5689
  "char": "e",
5556
- "description": "Type of EventLogFile event to analyze",
5557
- "name": "eventtype",
5558
- "default": "ApiTotalUsage",
5690
+ "description": "Comma-separated list of usernames to exclude",
5691
+ "name": "excludeusers",
5559
5692
  "hasDynamicHelp": false,
5560
5693
  "multiple": false,
5561
5694
  "type": "option"
5562
5695
  },
5563
- "limit": {
5564
- "char": "l",
5565
- "description": "Number of latest EventLogFile events to analyze",
5566
- "name": "limit",
5567
- "default": 999,
5696
+ "lastndays": {
5697
+ "char": "t",
5698
+ "description": "Number of days to extract from today (included)",
5699
+ "name": "lastndays",
5568
5700
  "hasDynamicHelp": false,
5569
5701
  "multiple": false,
5570
5702
  "type": "option"
@@ -5615,13 +5747,13 @@
5615
5747
  },
5616
5748
  "hasDynamicHelp": true,
5617
5749
  "hiddenAliases": [],
5618
- "id": "hardis:org:diagnose:legacyapi",
5750
+ "id": "hardis:org:diagnose:audittrail",
5619
5751
  "pluginAlias": "sfdx-hardis",
5620
5752
  "pluginName": "sfdx-hardis",
5621
5753
  "pluginType": "core",
5622
5754
  "strict": true,
5623
5755
  "enableJsonFlag": true,
5624
- "title": "Check for legacy API use",
5756
+ "title": "Diagnose content of Setup Audit Trail",
5625
5757
  "requiresProject": false,
5626
5758
  "isESM": true,
5627
5759
  "relativePath": [
@@ -5630,42 +5762,42 @@
5630
5762
  "hardis",
5631
5763
  "org",
5632
5764
  "diagnose",
5633
- "legacyapi.js"
5765
+ "audittrail.js"
5634
5766
  ],
5635
5767
  "aliasPermutations": [],
5636
5768
  "permutations": [
5637
- "hardis:org:diagnose:legacyapi",
5638
- "org:hardis:diagnose:legacyapi",
5639
- "org:diagnose:hardis:legacyapi",
5640
- "org:diagnose:legacyapi:hardis",
5641
- "hardis:diagnose:org:legacyapi",
5642
- "diagnose:hardis:org:legacyapi",
5643
- "diagnose:org:hardis:legacyapi",
5644
- "diagnose:org:legacyapi:hardis",
5645
- "hardis:diagnose:legacyapi:org",
5646
- "diagnose:hardis:legacyapi:org",
5647
- "diagnose:legacyapi:hardis:org",
5648
- "diagnose:legacyapi:org:hardis",
5649
- "hardis:org:legacyapi:diagnose",
5650
- "org:hardis:legacyapi:diagnose",
5651
- "org:legacyapi:hardis:diagnose",
5652
- "org:legacyapi:diagnose:hardis",
5653
- "hardis:legacyapi:org:diagnose",
5654
- "legacyapi:hardis:org:diagnose",
5655
- "legacyapi:org:hardis:diagnose",
5656
- "legacyapi:org:diagnose:hardis",
5657
- "hardis:legacyapi:diagnose:org",
5658
- "legacyapi:hardis:diagnose:org",
5659
- "legacyapi:diagnose:hardis:org",
5660
- "legacyapi:diagnose:org:hardis"
5769
+ "hardis:org:diagnose:audittrail",
5770
+ "org:hardis:diagnose:audittrail",
5771
+ "org:diagnose:hardis:audittrail",
5772
+ "org:diagnose:audittrail:hardis",
5773
+ "hardis:diagnose:org:audittrail",
5774
+ "diagnose:hardis:org:audittrail",
5775
+ "diagnose:org:hardis:audittrail",
5776
+ "diagnose:org:audittrail:hardis",
5777
+ "hardis:diagnose:audittrail:org",
5778
+ "diagnose:hardis:audittrail:org",
5779
+ "diagnose:audittrail:hardis:org",
5780
+ "diagnose:audittrail:org:hardis",
5781
+ "hardis:org:audittrail:diagnose",
5782
+ "org:hardis:audittrail:diagnose",
5783
+ "org:audittrail:hardis:diagnose",
5784
+ "org:audittrail:diagnose:hardis",
5785
+ "hardis:audittrail:org:diagnose",
5786
+ "audittrail:hardis:org:diagnose",
5787
+ "audittrail:org:hardis:diagnose",
5788
+ "audittrail:org:diagnose:hardis",
5789
+ "hardis:audittrail:diagnose:org",
5790
+ "audittrail:hardis:diagnose:org",
5791
+ "audittrail:diagnose:hardis:org",
5792
+ "audittrail:diagnose:org:hardis"
5661
5793
  ]
5662
5794
  },
5663
- "hardis:org:diagnose:licenses": {
5795
+ "hardis:org:diagnose:instanceupgrade": {
5664
5796
  "aliases": [],
5665
5797
  "args": {},
5666
- "description": "Mostly used for monitoring (Grafana) but you can also use it manually :)",
5798
+ "description": "Get the date when the org instance will be upgraded (to Spring, Summer or Winter)\n ",
5667
5799
  "examples": [
5668
- "$ sf hardis:org:diagnose:licenses"
5800
+ "$ sf hardis:org:diagnose:instanceupgrade"
5669
5801
  ],
5670
5802
  "flags": {
5671
5803
  "json": {
@@ -5683,21 +5815,6 @@
5683
5815
  "multiple": false,
5684
5816
  "type": "option"
5685
5817
  },
5686
- "outputfile": {
5687
- "char": "f",
5688
- "description": "Force the path and name of output report file. Must end with .csv",
5689
- "name": "outputfile",
5690
- "hasDynamicHelp": false,
5691
- "multiple": false,
5692
- "type": "option"
5693
- },
5694
- "usedonly": {
5695
- "char": "u",
5696
- "description": "Filter to have only used licenses",
5697
- "name": "usedonly",
5698
- "allowNo": false,
5699
- "type": "boolean"
5700
- },
5701
5818
  "debug": {
5702
5819
  "char": "d",
5703
5820
  "description": "Activate debug mode (more logs)",
@@ -5736,13 +5853,13 @@
5736
5853
  },
5737
5854
  "hasDynamicHelp": true,
5738
5855
  "hiddenAliases": [],
5739
- "id": "hardis:org:diagnose:licenses",
5856
+ "id": "hardis:org:diagnose:instanceupgrade",
5740
5857
  "pluginAlias": "sfdx-hardis",
5741
5858
  "pluginName": "sfdx-hardis",
5742
5859
  "pluginType": "core",
5743
5860
  "strict": true,
5744
5861
  "enableJsonFlag": true,
5745
- "title": "List licenses subscribed and used in a Salesforce org",
5862
+ "title": "Get Instance Upgrade date",
5746
5863
  "requiresProject": false,
5747
5864
  "isESM": true,
5748
5865
  "relativePath": [
@@ -5751,42 +5868,45 @@
5751
5868
  "hardis",
5752
5869
  "org",
5753
5870
  "diagnose",
5754
- "licenses.js"
5871
+ "instanceupgrade.js"
5755
5872
  ],
5756
5873
  "aliasPermutations": [],
5757
5874
  "permutations": [
5758
- "hardis:org:diagnose:licenses",
5759
- "org:hardis:diagnose:licenses",
5760
- "org:diagnose:hardis:licenses",
5761
- "org:diagnose:licenses:hardis",
5762
- "hardis:diagnose:org:licenses",
5763
- "diagnose:hardis:org:licenses",
5764
- "diagnose:org:hardis:licenses",
5765
- "diagnose:org:licenses:hardis",
5766
- "hardis:diagnose:licenses:org",
5767
- "diagnose:hardis:licenses:org",
5768
- "diagnose:licenses:hardis:org",
5769
- "diagnose:licenses:org:hardis",
5770
- "hardis:org:licenses:diagnose",
5771
- "org:hardis:licenses:diagnose",
5772
- "org:licenses:hardis:diagnose",
5773
- "org:licenses:diagnose:hardis",
5774
- "hardis:licenses:org:diagnose",
5775
- "licenses:hardis:org:diagnose",
5776
- "licenses:org:hardis:diagnose",
5777
- "licenses:org:diagnose:hardis",
5778
- "hardis:licenses:diagnose:org",
5779
- "licenses:hardis:diagnose:org",
5780
- "licenses:diagnose:hardis:org",
5781
- "licenses:diagnose:org:hardis"
5875
+ "hardis:org:diagnose:instanceupgrade",
5876
+ "org:hardis:diagnose:instanceupgrade",
5877
+ "org:diagnose:hardis:instanceupgrade",
5878
+ "org:diagnose:instanceupgrade:hardis",
5879
+ "hardis:diagnose:org:instanceupgrade",
5880
+ "diagnose:hardis:org:instanceupgrade",
5881
+ "diagnose:org:hardis:instanceupgrade",
5882
+ "diagnose:org:instanceupgrade:hardis",
5883
+ "hardis:diagnose:instanceupgrade:org",
5884
+ "diagnose:hardis:instanceupgrade:org",
5885
+ "diagnose:instanceupgrade:hardis:org",
5886
+ "diagnose:instanceupgrade:org:hardis",
5887
+ "hardis:org:instanceupgrade:diagnose",
5888
+ "org:hardis:instanceupgrade:diagnose",
5889
+ "org:instanceupgrade:hardis:diagnose",
5890
+ "org:instanceupgrade:diagnose:hardis",
5891
+ "hardis:instanceupgrade:org:diagnose",
5892
+ "instanceupgrade:hardis:org:diagnose",
5893
+ "instanceupgrade:org:hardis:diagnose",
5894
+ "instanceupgrade:org:diagnose:hardis",
5895
+ "hardis:instanceupgrade:diagnose:org",
5896
+ "instanceupgrade:hardis:diagnose:org",
5897
+ "instanceupgrade:diagnose:hardis:org",
5898
+ "instanceupgrade:diagnose:org:hardis"
5782
5899
  ]
5783
5900
  },
5784
- "hardis:org:diagnose:releaseupdates": {
5901
+ "hardis:org:diagnose:legacyapi": {
5785
5902
  "aliases": [],
5786
5903
  "args": {},
5787
- "description": "Export Release Updates into a CSV file with selected criteria, and highlight Release Updates that should be checked.\n\nBefore publishing **Breaking Changes** ❌, Salesforce announce them in the setup menu [**Release Updates**](https://help.salesforce.com/s/articleView?id=sf.release_updates.htm&type=5)\n\n⚠️ Some of them are very important, because if you don't make the related upgrades in time (ex: before Winter 25) , your production org can crash !\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
5904
+ "description": "Checks if an org uses retired or someday retired API version\n\n\nSee article below\n\n[![Handle Salesforce API versions Deprecation like a pro](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deprecated-api.jpg)](https://nicolas.vuillamy.fr/handle-salesforce-api-versions-deprecation-like-a-pro-335065f52238)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-deprecated-api-calls/) and can output Grafana, Slack and MsTeams Notifications.\n",
5788
5905
  "examples": [
5789
- "$ sf hardis:org:diagnose:releaseupdates"
5906
+ "$ sf hardis:org:diagnose:legacyapi",
5907
+ "$ sf hardis:org:diagnose:legacyapi -u hardis@myclient.com",
5908
+ "$ sf hardis:org:diagnose:legacyapi --outputfile 'c:/path/to/folder/legacyapi.csv'",
5909
+ "$ sf hardis:org:diagnose:legacyapi -u hardis@myclient.com --outputfile ./tmp/legacyapi.csv"
5790
5910
  ],
5791
5911
  "flags": {
5792
5912
  "json": {
@@ -5804,6 +5924,24 @@
5804
5924
  "multiple": false,
5805
5925
  "type": "option"
5806
5926
  },
5927
+ "eventtype": {
5928
+ "char": "e",
5929
+ "description": "Type of EventLogFile event to analyze",
5930
+ "name": "eventtype",
5931
+ "default": "ApiTotalUsage",
5932
+ "hasDynamicHelp": false,
5933
+ "multiple": false,
5934
+ "type": "option"
5935
+ },
5936
+ "limit": {
5937
+ "char": "l",
5938
+ "description": "Number of latest EventLogFile events to analyze",
5939
+ "name": "limit",
5940
+ "default": 999,
5941
+ "hasDynamicHelp": false,
5942
+ "multiple": false,
5943
+ "type": "option"
5944
+ },
5807
5945
  "outputfile": {
5808
5946
  "char": "f",
5809
5947
  "description": "Force the path and name of output report file. Must end with .csv",
@@ -5850,13 +5988,13 @@
5850
5988
  },
5851
5989
  "hasDynamicHelp": true,
5852
5990
  "hiddenAliases": [],
5853
- "id": "hardis:org:diagnose:releaseupdates",
5991
+ "id": "hardis:org:diagnose:legacyapi",
5854
5992
  "pluginAlias": "sfdx-hardis",
5855
5993
  "pluginName": "sfdx-hardis",
5856
5994
  "pluginType": "core",
5857
5995
  "strict": true,
5858
5996
  "enableJsonFlag": true,
5859
- "title": "Check Release Updates of an org",
5997
+ "title": "Check for legacy API use",
5860
5998
  "requiresProject": false,
5861
5999
  "isESM": true,
5862
6000
  "relativePath": [
@@ -5865,52 +6003,51 @@
5865
6003
  "hardis",
5866
6004
  "org",
5867
6005
  "diagnose",
5868
- "releaseupdates.js"
6006
+ "legacyapi.js"
5869
6007
  ],
5870
6008
  "aliasPermutations": [],
5871
6009
  "permutations": [
5872
- "hardis:org:diagnose:releaseupdates",
5873
- "org:hardis:diagnose:releaseupdates",
5874
- "org:diagnose:hardis:releaseupdates",
5875
- "org:diagnose:releaseupdates:hardis",
5876
- "hardis:diagnose:org:releaseupdates",
5877
- "diagnose:hardis:org:releaseupdates",
5878
- "diagnose:org:hardis:releaseupdates",
5879
- "diagnose:org:releaseupdates:hardis",
5880
- "hardis:diagnose:releaseupdates:org",
5881
- "diagnose:hardis:releaseupdates:org",
5882
- "diagnose:releaseupdates:hardis:org",
5883
- "diagnose:releaseupdates:org:hardis",
5884
- "hardis:org:releaseupdates:diagnose",
5885
- "org:hardis:releaseupdates:diagnose",
5886
- "org:releaseupdates:hardis:diagnose",
5887
- "org:releaseupdates:diagnose:hardis",
5888
- "hardis:releaseupdates:org:diagnose",
5889
- "releaseupdates:hardis:org:diagnose",
5890
- "releaseupdates:org:hardis:diagnose",
5891
- "releaseupdates:org:diagnose:hardis",
5892
- "hardis:releaseupdates:diagnose:org",
5893
- "releaseupdates:hardis:diagnose:org",
5894
- "releaseupdates:diagnose:hardis:org",
5895
- "releaseupdates:diagnose:org:hardis"
5896
- ]
5897
- },
5898
- "hardis:org:diagnose:unused-apex-classes": {
5899
- "aliases": [],
5900
- "args": {},
5901
- "description": "List all async Apex classes (Batch,Queueable,Schedulable) that has not been called for more than 365 days.\n \nThe result class list probably can be removed from the project, and that will improve your test classes performances :)\n\nThe number of unused day is overridable using --days option. \n\nThe command uses queries on AsyncApexJob and CronTrigger technical tables to build the result.\n\nApex Classes CreatedBy and CreatedOn fields are calculated from MIN(date from git, date from org)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-apex-classes/) and can output Grafana, Slack and MsTeams Notifications.\n\n![](https://sfdx-hardis.cloudity.com/assets/images/screenshot-monitoring-unused-apex-grafana.jpg)\n",
5902
- "examples": [
5903
- "$ sf hardis:org:diagnose:unused-apex-classes",
5904
- "$ sf hardis:org:diagnose:unused-apex-classes --days 700"
5905
- ],
5906
- "flags": {
5907
- "json": {
5908
- "description": "Format output as json.",
5909
- "helpGroup": "GLOBAL",
5910
- "name": "json",
5911
- "allowNo": false,
5912
- "type": "boolean"
5913
- },
6010
+ "hardis:org:diagnose:legacyapi",
6011
+ "org:hardis:diagnose:legacyapi",
6012
+ "org:diagnose:hardis:legacyapi",
6013
+ "org:diagnose:legacyapi:hardis",
6014
+ "hardis:diagnose:org:legacyapi",
6015
+ "diagnose:hardis:org:legacyapi",
6016
+ "diagnose:org:hardis:legacyapi",
6017
+ "diagnose:org:legacyapi:hardis",
6018
+ "hardis:diagnose:legacyapi:org",
6019
+ "diagnose:hardis:legacyapi:org",
6020
+ "diagnose:legacyapi:hardis:org",
6021
+ "diagnose:legacyapi:org:hardis",
6022
+ "hardis:org:legacyapi:diagnose",
6023
+ "org:hardis:legacyapi:diagnose",
6024
+ "org:legacyapi:hardis:diagnose",
6025
+ "org:legacyapi:diagnose:hardis",
6026
+ "hardis:legacyapi:org:diagnose",
6027
+ "legacyapi:hardis:org:diagnose",
6028
+ "legacyapi:org:hardis:diagnose",
6029
+ "legacyapi:org:diagnose:hardis",
6030
+ "hardis:legacyapi:diagnose:org",
6031
+ "legacyapi:hardis:diagnose:org",
6032
+ "legacyapi:diagnose:hardis:org",
6033
+ "legacyapi:diagnose:org:hardis"
6034
+ ]
6035
+ },
6036
+ "hardis:org:diagnose:licenses": {
6037
+ "aliases": [],
6038
+ "args": {},
6039
+ "description": "Mostly used for monitoring (Grafana) but you can also use it manually :)",
6040
+ "examples": [
6041
+ "$ sf hardis:org:diagnose:licenses"
6042
+ ],
6043
+ "flags": {
6044
+ "json": {
6045
+ "description": "Format output as json.",
6046
+ "helpGroup": "GLOBAL",
6047
+ "name": "json",
6048
+ "allowNo": false,
6049
+ "type": "boolean"
6050
+ },
5914
6051
  "flags-dir": {
5915
6052
  "helpGroup": "GLOBAL",
5916
6053
  "name": "flags-dir",
@@ -5927,13 +6064,12 @@
5927
6064
  "multiple": false,
5928
6065
  "type": "option"
5929
6066
  },
5930
- "days": {
5931
- "char": "t",
5932
- "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
5933
- "name": "days",
5934
- "hasDynamicHelp": false,
5935
- "multiple": false,
5936
- "type": "option"
6067
+ "usedonly": {
6068
+ "char": "u",
6069
+ "description": "Filter to have only used licenses",
6070
+ "name": "usedonly",
6071
+ "allowNo": false,
6072
+ "type": "boolean"
5937
6073
  },
5938
6074
  "debug": {
5939
6075
  "char": "d",
@@ -5973,13 +6109,13 @@
5973
6109
  },
5974
6110
  "hasDynamicHelp": true,
5975
6111
  "hiddenAliases": [],
5976
- "id": "hardis:org:diagnose:unused-apex-classes",
6112
+ "id": "hardis:org:diagnose:licenses",
5977
6113
  "pluginAlias": "sfdx-hardis",
5978
6114
  "pluginName": "sfdx-hardis",
5979
6115
  "pluginType": "core",
5980
6116
  "strict": true,
5981
6117
  "enableJsonFlag": true,
5982
- "title": "Detect unused Apex classes in an org",
6118
+ "title": "List licenses subscribed and used in a Salesforce org",
5983
6119
  "requiresProject": false,
5984
6120
  "isESM": true,
5985
6121
  "relativePath": [
@@ -5988,42 +6124,42 @@
5988
6124
  "hardis",
5989
6125
  "org",
5990
6126
  "diagnose",
5991
- "unused-apex-classes.js"
6127
+ "licenses.js"
5992
6128
  ],
5993
6129
  "aliasPermutations": [],
5994
6130
  "permutations": [
5995
- "hardis:org:diagnose:unused-apex-classes",
5996
- "org:hardis:diagnose:unused-apex-classes",
5997
- "org:diagnose:hardis:unused-apex-classes",
5998
- "org:diagnose:unused-apex-classes:hardis",
5999
- "hardis:diagnose:org:unused-apex-classes",
6000
- "diagnose:hardis:org:unused-apex-classes",
6001
- "diagnose:org:hardis:unused-apex-classes",
6002
- "diagnose:org:unused-apex-classes:hardis",
6003
- "hardis:diagnose:unused-apex-classes:org",
6004
- "diagnose:hardis:unused-apex-classes:org",
6005
- "diagnose:unused-apex-classes:hardis:org",
6006
- "diagnose:unused-apex-classes:org:hardis",
6007
- "hardis:org:unused-apex-classes:diagnose",
6008
- "org:hardis:unused-apex-classes:diagnose",
6009
- "org:unused-apex-classes:hardis:diagnose",
6010
- "org:unused-apex-classes:diagnose:hardis",
6011
- "hardis:unused-apex-classes:org:diagnose",
6012
- "unused-apex-classes:hardis:org:diagnose",
6013
- "unused-apex-classes:org:hardis:diagnose",
6014
- "unused-apex-classes:org:diagnose:hardis",
6015
- "hardis:unused-apex-classes:diagnose:org",
6016
- "unused-apex-classes:hardis:diagnose:org",
6017
- "unused-apex-classes:diagnose:hardis:org",
6018
- "unused-apex-classes:diagnose:org:hardis"
6131
+ "hardis:org:diagnose:licenses",
6132
+ "org:hardis:diagnose:licenses",
6133
+ "org:diagnose:hardis:licenses",
6134
+ "org:diagnose:licenses:hardis",
6135
+ "hardis:diagnose:org:licenses",
6136
+ "diagnose:hardis:org:licenses",
6137
+ "diagnose:org:hardis:licenses",
6138
+ "diagnose:org:licenses:hardis",
6139
+ "hardis:diagnose:licenses:org",
6140
+ "diagnose:hardis:licenses:org",
6141
+ "diagnose:licenses:hardis:org",
6142
+ "diagnose:licenses:org:hardis",
6143
+ "hardis:org:licenses:diagnose",
6144
+ "org:hardis:licenses:diagnose",
6145
+ "org:licenses:hardis:diagnose",
6146
+ "org:licenses:diagnose:hardis",
6147
+ "hardis:licenses:org:diagnose",
6148
+ "licenses:hardis:org:diagnose",
6149
+ "licenses:org:hardis:diagnose",
6150
+ "licenses:org:diagnose:hardis",
6151
+ "hardis:licenses:diagnose:org",
6152
+ "licenses:hardis:diagnose:org",
6153
+ "licenses:diagnose:hardis:org",
6154
+ "licenses:diagnose:org:hardis"
6019
6155
  ]
6020
6156
  },
6021
- "hardis:org:diagnose:unused-connected-apps": {
6157
+ "hardis:org:diagnose:releaseupdates": {
6022
6158
  "aliases": [],
6023
6159
  "args": {},
6024
- "description": "Request objects ConnectedApp, LoginHistory and OAuthToken to find which connected apps might not be used anymore, and could be deleted for security / technical debt reasons.\n\nCheck with Connected Apps metadatas if the app is still active (inactive = \"Admin Users are pre-authorized + no Profile or Permission set assigned\")\n\nThe following default Salesforce Connected Apps are ignored:\n\n- Ant Migration Tool\n- Chatter Desktop\n- Chatter Mobile for BlackBerry\n- Force.com IDE\n- OIQ_Integration\n- Salesforce CLI\n- Salesforce Files\n- Salesforce Mobile Dashboards\n- Salesforce Touch\n- Salesforce for Outlook\n- SalesforceA\n- SalesforceA for Android\n- SalesforceA for iOS\n- SalesforceDX Namespace Registry\n- SalesforceIQ\n\nYou can add more ignored apps by defining a comma-separated list of names in variable ALLOWED_INACTIVE_CONNECTED_APPS\n\n_Example: ALLOWED_INACTIVE_CONNECTED_APPS=My App 1,My App 2, My App 3_\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
6160
+ "description": "Export Release Updates into a CSV file with selected criteria, and highlight Release Updates that should be checked.\n\nBefore publishing **Breaking Changes** ❌, Salesforce announce them in the setup menu [**Release Updates**](https://help.salesforce.com/s/articleView?id=sf.release_updates.htm&type=5)\n\n⚠️ Some of them are very important, because if you don't make the related upgrades in time (ex: before Winter 25) , your production org can crash !\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
6025
6161
  "examples": [
6026
- "$ sf hardis:org:diagnose:unused-connected-apps"
6162
+ "$ sf hardis:org:diagnose:releaseupdates"
6027
6163
  ],
6028
6164
  "flags": {
6029
6165
  "json": {
@@ -6087,30 +6223,13 @@
6087
6223
  },
6088
6224
  "hasDynamicHelp": true,
6089
6225
  "hiddenAliases": [],
6090
- "id": "hardis:org:diagnose:unused-connected-apps",
6226
+ "id": "hardis:org:diagnose:releaseupdates",
6091
6227
  "pluginAlias": "sfdx-hardis",
6092
6228
  "pluginName": "sfdx-hardis",
6093
6229
  "pluginType": "core",
6094
6230
  "strict": true,
6095
6231
  "enableJsonFlag": true,
6096
- "title": "Unused Connected Apps in an org",
6097
- "allowedInactiveConnectedApps": [
6098
- "Ant Migration Tool",
6099
- "Chatter Desktop",
6100
- "Chatter Mobile for BlackBerry",
6101
- "Force.com IDE",
6102
- "OIQ_Integration",
6103
- "Salesforce CLI",
6104
- "Salesforce Files",
6105
- "Salesforce Mobile Dashboards",
6106
- "Salesforce Touch",
6107
- "Salesforce for Outlook",
6108
- "SalesforceA",
6109
- "SalesforceA for Android",
6110
- "SalesforceA for iOS",
6111
- "SalesforceDX Namespace Registry",
6112
- "SalesforceIQ"
6113
- ],
6232
+ "title": "Check Release Updates of an org",
6114
6233
  "requiresProject": false,
6115
6234
  "isESM": true,
6116
6235
  "relativePath": [
@@ -6119,43 +6238,43 @@
6119
6238
  "hardis",
6120
6239
  "org",
6121
6240
  "diagnose",
6122
- "unused-connected-apps.js"
6241
+ "releaseupdates.js"
6123
6242
  ],
6124
6243
  "aliasPermutations": [],
6125
6244
  "permutations": [
6126
- "hardis:org:diagnose:unused-connected-apps",
6127
- "org:hardis:diagnose:unused-connected-apps",
6128
- "org:diagnose:hardis:unused-connected-apps",
6129
- "org:diagnose:unused-connected-apps:hardis",
6130
- "hardis:diagnose:org:unused-connected-apps",
6131
- "diagnose:hardis:org:unused-connected-apps",
6132
- "diagnose:org:hardis:unused-connected-apps",
6133
- "diagnose:org:unused-connected-apps:hardis",
6134
- "hardis:diagnose:unused-connected-apps:org",
6135
- "diagnose:hardis:unused-connected-apps:org",
6136
- "diagnose:unused-connected-apps:hardis:org",
6137
- "diagnose:unused-connected-apps:org:hardis",
6138
- "hardis:org:unused-connected-apps:diagnose",
6139
- "org:hardis:unused-connected-apps:diagnose",
6140
- "org:unused-connected-apps:hardis:diagnose",
6141
- "org:unused-connected-apps:diagnose:hardis",
6142
- "hardis:unused-connected-apps:org:diagnose",
6143
- "unused-connected-apps:hardis:org:diagnose",
6144
- "unused-connected-apps:org:hardis:diagnose",
6145
- "unused-connected-apps:org:diagnose:hardis",
6146
- "hardis:unused-connected-apps:diagnose:org",
6147
- "unused-connected-apps:hardis:diagnose:org",
6148
- "unused-connected-apps:diagnose:hardis:org",
6149
- "unused-connected-apps:diagnose:org:hardis"
6245
+ "hardis:org:diagnose:releaseupdates",
6246
+ "org:hardis:diagnose:releaseupdates",
6247
+ "org:diagnose:hardis:releaseupdates",
6248
+ "org:diagnose:releaseupdates:hardis",
6249
+ "hardis:diagnose:org:releaseupdates",
6250
+ "diagnose:hardis:org:releaseupdates",
6251
+ "diagnose:org:hardis:releaseupdates",
6252
+ "diagnose:org:releaseupdates:hardis",
6253
+ "hardis:diagnose:releaseupdates:org",
6254
+ "diagnose:hardis:releaseupdates:org",
6255
+ "diagnose:releaseupdates:hardis:org",
6256
+ "diagnose:releaseupdates:org:hardis",
6257
+ "hardis:org:releaseupdates:diagnose",
6258
+ "org:hardis:releaseupdates:diagnose",
6259
+ "org:releaseupdates:hardis:diagnose",
6260
+ "org:releaseupdates:diagnose:hardis",
6261
+ "hardis:releaseupdates:org:diagnose",
6262
+ "releaseupdates:hardis:org:diagnose",
6263
+ "releaseupdates:org:hardis:diagnose",
6264
+ "releaseupdates:org:diagnose:hardis",
6265
+ "hardis:releaseupdates:diagnose:org",
6266
+ "releaseupdates:hardis:diagnose:org",
6267
+ "releaseupdates:diagnose:hardis:org",
6268
+ "releaseupdates:diagnose:org:hardis"
6150
6269
  ]
6151
6270
  },
6152
- "hardis:org:diagnose:unusedlicenses": {
6271
+ "hardis:org:diagnose:unused-apex-classes": {
6153
6272
  "aliases": [],
6154
6273
  "args": {},
6155
- "description": "When you assign a Permission Set to a user, and that this Permission Set is related to a Permission Set License, a Permission Set License Assignment is automatically created for the user.\n\nBut when you unassign this Permission Set from the user, **the Permission Set License Assignment is not deleted**.\n\nThis leads that you can be **charged for Permission Set Licenses that are not used** !\n\nThis command detects such useless Permission Set Licenses Assignments and suggests to delete them.\n\nMany thanks to [Vincent Finet](https://www.linkedin.com/in/vincentfinet/) for the inspiration during his great speaker session at [French Touch Dreamin '23](https://frenchtouchdreamin.com/), and his kind agreement for reusing such inspiration in this command :)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-licenses/) and can output Grafana, Slack and MsTeams Notifications.\n",
6274
+ "description": "List all async Apex classes (Batch,Queueable,Schedulable) that has not been called for more than 365 days.\n \nThe result class list probably can be removed from the project, and that will improve your test classes performances :)\n\nThe number of unused day is overridable using --days option. \n\nThe command uses queries on AsyncApexJob and CronTrigger technical tables to build the result.\n\nApex Classes CreatedBy and CreatedOn fields are calculated from MIN(date from git, date from org)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-apex-classes/) and can output Grafana, Slack and MsTeams Notifications.\n\n![](https://sfdx-hardis.cloudity.com/assets/images/screenshot-monitoring-unused-apex-grafana.jpg)\n",
6156
6275
  "examples": [
6157
- "$ sf hardis:org:diagnose:unusedlicenses",
6158
- "$ sf hardis:org:diagnose:unusedlicenses --fix"
6276
+ "$ sf hardis:org:diagnose:unused-apex-classes",
6277
+ "$ sf hardis:org:diagnose:unused-apex-classes --days 700"
6159
6278
  ],
6160
6279
  "flags": {
6161
6280
  "json": {
@@ -6181,6 +6300,14 @@
6181
6300
  "multiple": false,
6182
6301
  "type": "option"
6183
6302
  },
6303
+ "days": {
6304
+ "char": "t",
6305
+ "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6306
+ "name": "days",
6307
+ "hasDynamicHelp": false,
6308
+ "multiple": false,
6309
+ "type": "option"
6310
+ },
6184
6311
  "debug": {
6185
6312
  "char": "d",
6186
6313
  "description": "Activate debug mode (more logs)",
@@ -6219,32 +6346,14 @@
6219
6346
  },
6220
6347
  "hasDynamicHelp": true,
6221
6348
  "hiddenAliases": [],
6222
- "id": "hardis:org:diagnose:unusedlicenses",
6349
+ "id": "hardis:org:diagnose:unused-apex-classes",
6223
6350
  "pluginAlias": "sfdx-hardis",
6224
6351
  "pluginName": "sfdx-hardis",
6225
6352
  "pluginType": "core",
6226
6353
  "strict": true,
6227
6354
  "enableJsonFlag": true,
6228
- "title": "Detect unused Permission Set Licenses (beta)",
6355
+ "title": "Detect unused Apex classes in an org",
6229
6356
  "requiresProject": false,
6230
- "additionalPermissionSetsToAlwaysGet": [
6231
- "Sales_User"
6232
- ],
6233
- "permSetsPermSetLicenses": [
6234
- {
6235
- "permSet": "Sales_User",
6236
- "permSetLicense": "SalesUserPsl"
6237
- }
6238
- ],
6239
- "profilesPermissionSetLicenses": [
6240
- {
6241
- "profile": "Salesforce API Only",
6242
- "permSetLicense": "SalesforceAPIIntegrationPsl"
6243
- }
6244
- ],
6245
- "alwaysExcludeForActiveUsersPermissionSetLicenses": [
6246
- "IdentityConnect"
6247
- ],
6248
6357
  "isESM": true,
6249
6358
  "relativePath": [
6250
6359
  "lib",
@@ -6252,46 +6361,42 @@
6252
6361
  "hardis",
6253
6362
  "org",
6254
6363
  "diagnose",
6255
- "unusedlicenses.js"
6364
+ "unused-apex-classes.js"
6256
6365
  ],
6257
6366
  "aliasPermutations": [],
6258
6367
  "permutations": [
6259
- "hardis:org:diagnose:unusedlicenses",
6260
- "org:hardis:diagnose:unusedlicenses",
6261
- "org:diagnose:hardis:unusedlicenses",
6262
- "org:diagnose:unusedlicenses:hardis",
6263
- "hardis:diagnose:org:unusedlicenses",
6264
- "diagnose:hardis:org:unusedlicenses",
6265
- "diagnose:org:hardis:unusedlicenses",
6266
- "diagnose:org:unusedlicenses:hardis",
6267
- "hardis:diagnose:unusedlicenses:org",
6268
- "diagnose:hardis:unusedlicenses:org",
6269
- "diagnose:unusedlicenses:hardis:org",
6270
- "diagnose:unusedlicenses:org:hardis",
6271
- "hardis:org:unusedlicenses:diagnose",
6272
- "org:hardis:unusedlicenses:diagnose",
6273
- "org:unusedlicenses:hardis:diagnose",
6274
- "org:unusedlicenses:diagnose:hardis",
6275
- "hardis:unusedlicenses:org:diagnose",
6276
- "unusedlicenses:hardis:org:diagnose",
6277
- "unusedlicenses:org:hardis:diagnose",
6278
- "unusedlicenses:org:diagnose:hardis",
6279
- "hardis:unusedlicenses:diagnose:org",
6280
- "unusedlicenses:hardis:diagnose:org",
6281
- "unusedlicenses:diagnose:hardis:org",
6282
- "unusedlicenses:diagnose:org:hardis"
6283
- ]
6284
- },
6285
- "hardis:org:diagnose:unusedusers": {
6286
- "aliases": [],
6287
- "args": {},
6288
- "description": "Efficient user management is vital in Salesforce to ensure resources are optimized and costs are controlled. However, inactive or unused user accounts can often go unnoticed, leading to wasted licenses and potential security risks. This tool addresses this challenge by enabling administrators to identify users who haven't logged in within a specified period.\n\nBy analyzing user login activity and last login timestamps, this feature highlights inactive user accounts, allowing administrators to take appropriate action. Whether it's deactivating dormant accounts, freeing up licenses, or ensuring compliance with security policies, this functionality empowers administrators to maintain a lean and secure Salesforce environment.\n\nlicensetypes values are the following:\n\n- all-crm: SFDC,AUL,AUL1,AULL_IGHT\n\n- all-paying: SFDC,AUL,AUL1,AULL_IGHT,PID_Customer_Community,PID_Customer_Community_Login,PID_Partner_Community,PID_Partner_Community_Login\n\nNote: You can see the full list of available license identifiers in [Salesforce Documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm)\n\nUse --returnactiveusers to revert the command and retrieve active users that has logged in during the period.\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-users/) and can output Grafana, Slack and MsTeams Notifications.\n",
6289
- "examples": [
6290
- "$ sf hardis:org:diagnose:unusedusers",
6291
- "$ sf hardis:org:diagnose:unusedusers --days 365",
6292
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm",
6293
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licenseidentifiers SFDC,AUL,AUL1",
6294
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm --returnactiveusers"
6368
+ "hardis:org:diagnose:unused-apex-classes",
6369
+ "org:hardis:diagnose:unused-apex-classes",
6370
+ "org:diagnose:hardis:unused-apex-classes",
6371
+ "org:diagnose:unused-apex-classes:hardis",
6372
+ "hardis:diagnose:org:unused-apex-classes",
6373
+ "diagnose:hardis:org:unused-apex-classes",
6374
+ "diagnose:org:hardis:unused-apex-classes",
6375
+ "diagnose:org:unused-apex-classes:hardis",
6376
+ "hardis:diagnose:unused-apex-classes:org",
6377
+ "diagnose:hardis:unused-apex-classes:org",
6378
+ "diagnose:unused-apex-classes:hardis:org",
6379
+ "diagnose:unused-apex-classes:org:hardis",
6380
+ "hardis:org:unused-apex-classes:diagnose",
6381
+ "org:hardis:unused-apex-classes:diagnose",
6382
+ "org:unused-apex-classes:hardis:diagnose",
6383
+ "org:unused-apex-classes:diagnose:hardis",
6384
+ "hardis:unused-apex-classes:org:diagnose",
6385
+ "unused-apex-classes:hardis:org:diagnose",
6386
+ "unused-apex-classes:org:hardis:diagnose",
6387
+ "unused-apex-classes:org:diagnose:hardis",
6388
+ "hardis:unused-apex-classes:diagnose:org",
6389
+ "unused-apex-classes:hardis:diagnose:org",
6390
+ "unused-apex-classes:diagnose:hardis:org",
6391
+ "unused-apex-classes:diagnose:org:hardis"
6392
+ ]
6393
+ },
6394
+ "hardis:org:diagnose:unused-connected-apps": {
6395
+ "aliases": [],
6396
+ "args": {},
6397
+ "description": "Request objects ConnectedApp, LoginHistory and OAuthToken to find which connected apps might not be used anymore, and could be deleted for security / technical debt reasons.\n\nCheck with Connected Apps metadatas if the app is still active (inactive = \"Admin Users are pre-authorized + no Profile or Permission set assigned\")\n\nThe following default Salesforce Connected Apps are ignored:\n\n- Ant Migration Tool\n- Chatter Desktop\n- Chatter Mobile for BlackBerry\n- Force.com IDE\n- OIQ_Integration\n- Salesforce CLI\n- Salesforce Files\n- Salesforce Mobile Dashboards\n- Salesforce Touch\n- Salesforce for Outlook\n- SalesforceA\n- SalesforceA for Android\n- SalesforceA for iOS\n- SalesforceDX Namespace Registry\n- SalesforceIQ\n\nYou can add more ignored apps by defining a comma-separated list of names in variable ALLOWED_INACTIVE_CONNECTED_APPS\n\n_Example: ALLOWED_INACTIVE_CONNECTED_APPS=My App 1,My App 2, My App 3_\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
6398
+ "examples": [
6399
+ "$ sf hardis:org:diagnose:unused-connected-apps"
6295
6400
  ],
6296
6401
  "flags": {
6297
6402
  "json": {
@@ -6317,41 +6422,6 @@
6317
6422
  "multiple": false,
6318
6423
  "type": "option"
6319
6424
  },
6320
- "days": {
6321
- "char": "t",
6322
- "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6323
- "name": "days",
6324
- "hasDynamicHelp": false,
6325
- "multiple": false,
6326
- "type": "option"
6327
- },
6328
- "licensetypes": {
6329
- "char": "l",
6330
- "description": "Type of licenses to check. If set, do not use licenseidentifiers option. In CI, default is all-crm",
6331
- "name": "licensetypes",
6332
- "hasDynamicHelp": false,
6333
- "multiple": false,
6334
- "options": [
6335
- "all",
6336
- "all-crm",
6337
- "all-paying"
6338
- ],
6339
- "type": "option"
6340
- },
6341
- "licenseidentifiers": {
6342
- "char": "i",
6343
- "description": "Comma-separated list of license identifiers, in case licensetypes is not used.. Identifiers available at https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm",
6344
- "name": "licenseidentifiers",
6345
- "hasDynamicHelp": false,
6346
- "multiple": false,
6347
- "type": "option"
6348
- },
6349
- "returnactiveusers": {
6350
- "description": "Inverts the command by returning the active users",
6351
- "name": "returnactiveusers",
6352
- "allowNo": false,
6353
- "type": "boolean"
6354
- },
6355
6425
  "debug": {
6356
6426
  "char": "d",
6357
6427
  "description": "Activate debug mode (more logs)",
@@ -6390,13 +6460,30 @@
6390
6460
  },
6391
6461
  "hasDynamicHelp": true,
6392
6462
  "hiddenAliases": [],
6393
- "id": "hardis:org:diagnose:unusedusers",
6463
+ "id": "hardis:org:diagnose:unused-connected-apps",
6394
6464
  "pluginAlias": "sfdx-hardis",
6395
6465
  "pluginName": "sfdx-hardis",
6396
6466
  "pluginType": "core",
6397
6467
  "strict": true,
6398
6468
  "enableJsonFlag": true,
6399
- "title": "Detect unused Users in Salesforce",
6469
+ "title": "Unused Connected Apps in an org",
6470
+ "allowedInactiveConnectedApps": [
6471
+ "Ant Migration Tool",
6472
+ "Chatter Desktop",
6473
+ "Chatter Mobile for BlackBerry",
6474
+ "Force.com IDE",
6475
+ "OIQ_Integration",
6476
+ "Salesforce CLI",
6477
+ "Salesforce Files",
6478
+ "Salesforce Mobile Dashboards",
6479
+ "Salesforce Touch",
6480
+ "Salesforce for Outlook",
6481
+ "SalesforceA",
6482
+ "SalesforceA for Android",
6483
+ "SalesforceA for iOS",
6484
+ "SalesforceDX Namespace Registry",
6485
+ "SalesforceIQ"
6486
+ ],
6400
6487
  "requiresProject": false,
6401
6488
  "isESM": true,
6402
6489
  "relativePath": [
@@ -6405,42 +6492,43 @@
6405
6492
  "hardis",
6406
6493
  "org",
6407
6494
  "diagnose",
6408
- "unusedusers.js"
6495
+ "unused-connected-apps.js"
6409
6496
  ],
6410
6497
  "aliasPermutations": [],
6411
6498
  "permutations": [
6412
- "hardis:org:diagnose:unusedusers",
6413
- "org:hardis:diagnose:unusedusers",
6414
- "org:diagnose:hardis:unusedusers",
6415
- "org:diagnose:unusedusers:hardis",
6416
- "hardis:diagnose:org:unusedusers",
6417
- "diagnose:hardis:org:unusedusers",
6418
- "diagnose:org:hardis:unusedusers",
6419
- "diagnose:org:unusedusers:hardis",
6420
- "hardis:diagnose:unusedusers:org",
6421
- "diagnose:hardis:unusedusers:org",
6422
- "diagnose:unusedusers:hardis:org",
6423
- "diagnose:unusedusers:org:hardis",
6424
- "hardis:org:unusedusers:diagnose",
6425
- "org:hardis:unusedusers:diagnose",
6426
- "org:unusedusers:hardis:diagnose",
6427
- "org:unusedusers:diagnose:hardis",
6428
- "hardis:unusedusers:org:diagnose",
6429
- "unusedusers:hardis:org:diagnose",
6430
- "unusedusers:org:hardis:diagnose",
6431
- "unusedusers:org:diagnose:hardis",
6432
- "hardis:unusedusers:diagnose:org",
6433
- "unusedusers:hardis:diagnose:org",
6434
- "unusedusers:diagnose:hardis:org",
6435
- "unusedusers:diagnose:org:hardis"
6499
+ "hardis:org:diagnose:unused-connected-apps",
6500
+ "org:hardis:diagnose:unused-connected-apps",
6501
+ "org:diagnose:hardis:unused-connected-apps",
6502
+ "org:diagnose:unused-connected-apps:hardis",
6503
+ "hardis:diagnose:org:unused-connected-apps",
6504
+ "diagnose:hardis:org:unused-connected-apps",
6505
+ "diagnose:org:hardis:unused-connected-apps",
6506
+ "diagnose:org:unused-connected-apps:hardis",
6507
+ "hardis:diagnose:unused-connected-apps:org",
6508
+ "diagnose:hardis:unused-connected-apps:org",
6509
+ "diagnose:unused-connected-apps:hardis:org",
6510
+ "diagnose:unused-connected-apps:org:hardis",
6511
+ "hardis:org:unused-connected-apps:diagnose",
6512
+ "org:hardis:unused-connected-apps:diagnose",
6513
+ "org:unused-connected-apps:hardis:diagnose",
6514
+ "org:unused-connected-apps:diagnose:hardis",
6515
+ "hardis:unused-connected-apps:org:diagnose",
6516
+ "unused-connected-apps:hardis:org:diagnose",
6517
+ "unused-connected-apps:org:hardis:diagnose",
6518
+ "unused-connected-apps:org:diagnose:hardis",
6519
+ "hardis:unused-connected-apps:diagnose:org",
6520
+ "unused-connected-apps:hardis:diagnose:org",
6521
+ "unused-connected-apps:diagnose:hardis:org",
6522
+ "unused-connected-apps:diagnose:org:hardis"
6436
6523
  ]
6437
6524
  },
6438
- "hardis:org:files:export": {
6525
+ "hardis:org:diagnose:unusedlicenses": {
6439
6526
  "aliases": [],
6440
6527
  "args": {},
6441
- "description": "Export file attachments from a Salesforce org\n\nHandles:\n\n- ContentVersion\n- Attachment\n\nSee article below:\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
6528
+ "description": "When you assign a Permission Set to a user, and that this Permission Set is related to a Permission Set License, a Permission Set License Assignment is automatically created for the user.\n\nBut when you unassign this Permission Set from the user, **the Permission Set License Assignment is not deleted**.\n\nThis leads that you can be **charged for Permission Set Licenses that are not used** !\n\nThis command detects such useless Permission Set Licenses Assignments and suggests to delete them.\n\nMany thanks to [Vincent Finet](https://www.linkedin.com/in/vincentfinet/) for the inspiration during his great speaker session at [French Touch Dreamin '23](https://frenchtouchdreamin.com/), and his kind agreement for reusing such inspiration in this command :)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-licenses/) and can output Grafana, Slack and MsTeams Notifications.\n",
6442
6529
  "examples": [
6443
- "$ sf hardis:org:files:export"
6530
+ "$ sf hardis:org:diagnose:unusedlicenses",
6531
+ "$ sf hardis:org:diagnose:unusedlicenses --fix"
6444
6532
  ],
6445
6533
  "flags": {
6446
6534
  "json": {
@@ -6458,37 +6546,10 @@
6458
6546
  "multiple": false,
6459
6547
  "type": "option"
6460
6548
  },
6461
- "path": {
6462
- "char": "p",
6463
- "description": "Path to the file export project",
6464
- "name": "path",
6465
- "hasDynamicHelp": false,
6466
- "multiple": false,
6467
- "type": "option"
6468
- },
6469
- "chunksize": {
6470
- "char": "c",
6471
- "description": "Number of records to add in a chunk before it is processed",
6472
- "name": "chunksize",
6473
- "default": 1000,
6474
- "hasDynamicHelp": false,
6475
- "multiple": false,
6476
- "type": "option"
6477
- },
6478
- "polltimeout": {
6479
- "char": "t",
6480
- "description": "Timeout in MS for Bulk API calls",
6481
- "name": "polltimeout",
6482
- "default": 300000,
6483
- "hasDynamicHelp": false,
6484
- "multiple": false,
6485
- "type": "option"
6486
- },
6487
- "startchunknumber": {
6488
- "char": "s",
6489
- "description": "Chunk number to start from",
6490
- "name": "startchunknumber",
6491
- "default": 0,
6549
+ "outputfile": {
6550
+ "char": "f",
6551
+ "description": "Force the path and name of output report file. Must end with .csv",
6552
+ "name": "outputfile",
6492
6553
  "hasDynamicHelp": false,
6493
6554
  "multiple": false,
6494
6555
  "type": "option"
@@ -6531,57 +6592,79 @@
6531
6592
  },
6532
6593
  "hasDynamicHelp": true,
6533
6594
  "hiddenAliases": [],
6534
- "id": "hardis:org:files:export",
6595
+ "id": "hardis:org:diagnose:unusedlicenses",
6535
6596
  "pluginAlias": "sfdx-hardis",
6536
6597
  "pluginName": "sfdx-hardis",
6537
6598
  "pluginType": "core",
6538
6599
  "strict": true,
6539
6600
  "enableJsonFlag": true,
6540
- "title": "Export files",
6601
+ "title": "Detect unused Permission Set Licenses (beta)",
6541
6602
  "requiresProject": false,
6603
+ "additionalPermissionSetsToAlwaysGet": [
6604
+ "Sales_User"
6605
+ ],
6606
+ "permSetsPermSetLicenses": [
6607
+ {
6608
+ "permSet": "Sales_User",
6609
+ "permSetLicense": "SalesUserPsl"
6610
+ }
6611
+ ],
6612
+ "profilesPermissionSetLicenses": [
6613
+ {
6614
+ "profile": "Salesforce API Only",
6615
+ "permSetLicense": "SalesforceAPIIntegrationPsl"
6616
+ }
6617
+ ],
6618
+ "alwaysExcludeForActiveUsersPermissionSetLicenses": [
6619
+ "IdentityConnect"
6620
+ ],
6542
6621
  "isESM": true,
6543
6622
  "relativePath": [
6544
6623
  "lib",
6545
6624
  "commands",
6546
6625
  "hardis",
6547
6626
  "org",
6548
- "files",
6549
- "export.js"
6627
+ "diagnose",
6628
+ "unusedlicenses.js"
6550
6629
  ],
6551
6630
  "aliasPermutations": [],
6552
6631
  "permutations": [
6553
- "hardis:org:files:export",
6554
- "org:hardis:files:export",
6555
- "org:files:hardis:export",
6556
- "org:files:export:hardis",
6557
- "hardis:files:org:export",
6558
- "files:hardis:org:export",
6559
- "files:org:hardis:export",
6560
- "files:org:export:hardis",
6561
- "hardis:files:export:org",
6562
- "files:hardis:export:org",
6563
- "files:export:hardis:org",
6564
- "files:export:org:hardis",
6565
- "hardis:org:export:files",
6566
- "org:hardis:export:files",
6567
- "org:export:hardis:files",
6568
- "org:export:files:hardis",
6569
- "hardis:export:org:files",
6570
- "export:hardis:org:files",
6571
- "export:org:hardis:files",
6572
- "export:org:files:hardis",
6573
- "hardis:export:files:org",
6574
- "export:hardis:files:org",
6575
- "export:files:hardis:org",
6576
- "export:files:org:hardis"
6632
+ "hardis:org:diagnose:unusedlicenses",
6633
+ "org:hardis:diagnose:unusedlicenses",
6634
+ "org:diagnose:hardis:unusedlicenses",
6635
+ "org:diagnose:unusedlicenses:hardis",
6636
+ "hardis:diagnose:org:unusedlicenses",
6637
+ "diagnose:hardis:org:unusedlicenses",
6638
+ "diagnose:org:hardis:unusedlicenses",
6639
+ "diagnose:org:unusedlicenses:hardis",
6640
+ "hardis:diagnose:unusedlicenses:org",
6641
+ "diagnose:hardis:unusedlicenses:org",
6642
+ "diagnose:unusedlicenses:hardis:org",
6643
+ "diagnose:unusedlicenses:org:hardis",
6644
+ "hardis:org:unusedlicenses:diagnose",
6645
+ "org:hardis:unusedlicenses:diagnose",
6646
+ "org:unusedlicenses:hardis:diagnose",
6647
+ "org:unusedlicenses:diagnose:hardis",
6648
+ "hardis:unusedlicenses:org:diagnose",
6649
+ "unusedlicenses:hardis:org:diagnose",
6650
+ "unusedlicenses:org:hardis:diagnose",
6651
+ "unusedlicenses:org:diagnose:hardis",
6652
+ "hardis:unusedlicenses:diagnose:org",
6653
+ "unusedlicenses:hardis:diagnose:org",
6654
+ "unusedlicenses:diagnose:hardis:org",
6655
+ "unusedlicenses:diagnose:org:hardis"
6577
6656
  ]
6578
6657
  },
6579
- "hardis:org:files:import": {
6658
+ "hardis:org:diagnose:unusedusers": {
6580
6659
  "aliases": [],
6581
6660
  "args": {},
6582
- "description": "Import file attachments into a Salesforce org\n\nSee article below to see how to Export them.\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
6661
+ "description": "Efficient user management is vital in Salesforce to ensure resources are optimized and costs are controlled. However, inactive or unused user accounts can often go unnoticed, leading to wasted licenses and potential security risks. This tool addresses this challenge by enabling administrators to identify users who haven't logged in within a specified period.\n\nBy analyzing user login activity and last login timestamps, this feature highlights inactive user accounts, allowing administrators to take appropriate action. Whether it's deactivating dormant accounts, freeing up licenses, or ensuring compliance with security policies, this functionality empowers administrators to maintain a lean and secure Salesforce environment.\n\nlicensetypes values are the following:\n\n- all-crm: SFDC,AUL,AUL1,AULL_IGHT\n\n- all-paying: SFDC,AUL,AUL1,AULL_IGHT,PID_Customer_Community,PID_Customer_Community_Login,PID_Partner_Community,PID_Partner_Community_Login\n\nNote: You can see the full list of available license identifiers in [Salesforce Documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm)\n\nUse --returnactiveusers to revert the command and retrieve active users that has logged in during the period.\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-users/) and can output Grafana, Slack and MsTeams Notifications.\n",
6583
6662
  "examples": [
6584
- "$ sf hardis:org:files:import"
6663
+ "$ sf hardis:org:diagnose:unusedusers",
6664
+ "$ sf hardis:org:diagnose:unusedusers --days 365",
6665
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm",
6666
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licenseidentifiers SFDC,AUL,AUL1",
6667
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm --returnactiveusers"
6585
6668
  ],
6586
6669
  "flags": {
6587
6670
  "json": {
@@ -6599,18 +6682,46 @@
6599
6682
  "multiple": false,
6600
6683
  "type": "option"
6601
6684
  },
6602
- "path": {
6603
- "char": "p",
6604
- "description": "Path to the file export project",
6605
- "name": "path",
6685
+ "outputfile": {
6686
+ "char": "f",
6687
+ "description": "Force the path and name of output report file. Must end with .csv",
6688
+ "name": "outputfile",
6606
6689
  "hasDynamicHelp": false,
6607
6690
  "multiple": false,
6608
6691
  "type": "option"
6609
6692
  },
6610
- "overwrite": {
6611
- "char": "f",
6612
- "description": "Override existing files (doubles the number of API calls)",
6613
- "name": "overwrite",
6693
+ "days": {
6694
+ "char": "t",
6695
+ "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6696
+ "name": "days",
6697
+ "hasDynamicHelp": false,
6698
+ "multiple": false,
6699
+ "type": "option"
6700
+ },
6701
+ "licensetypes": {
6702
+ "char": "l",
6703
+ "description": "Type of licenses to check. If set, do not use licenseidentifiers option. In CI, default is all-crm",
6704
+ "name": "licensetypes",
6705
+ "hasDynamicHelp": false,
6706
+ "multiple": false,
6707
+ "options": [
6708
+ "all",
6709
+ "all-crm",
6710
+ "all-paying"
6711
+ ],
6712
+ "type": "option"
6713
+ },
6714
+ "licenseidentifiers": {
6715
+ "char": "i",
6716
+ "description": "Comma-separated list of license identifiers, in case licensetypes is not used.. Identifiers available at https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm",
6717
+ "name": "licenseidentifiers",
6718
+ "hasDynamicHelp": false,
6719
+ "multiple": false,
6720
+ "type": "option"
6721
+ },
6722
+ "returnactiveusers": {
6723
+ "description": "Inverts the command by returning the active users",
6724
+ "name": "returnactiveusers",
6614
6725
  "allowNo": false,
6615
6726
  "type": "boolean"
6616
6727
  },
@@ -6652,13 +6763,13 @@
6652
6763
  },
6653
6764
  "hasDynamicHelp": true,
6654
6765
  "hiddenAliases": [],
6655
- "id": "hardis:org:files:import",
6766
+ "id": "hardis:org:diagnose:unusedusers",
6656
6767
  "pluginAlias": "sfdx-hardis",
6657
6768
  "pluginName": "sfdx-hardis",
6658
6769
  "pluginType": "core",
6659
6770
  "strict": true,
6660
6771
  "enableJsonFlag": true,
6661
- "title": "Import files",
6772
+ "title": "Detect unused Users in Salesforce",
6662
6773
  "requiresProject": false,
6663
6774
  "isESM": true,
6664
6775
  "relativePath": [
@@ -6666,35 +6777,35 @@
6666
6777
  "commands",
6667
6778
  "hardis",
6668
6779
  "org",
6669
- "files",
6670
- "import.js"
6780
+ "diagnose",
6781
+ "unusedusers.js"
6671
6782
  ],
6672
6783
  "aliasPermutations": [],
6673
6784
  "permutations": [
6674
- "hardis:org:files:import",
6675
- "org:hardis:files:import",
6676
- "org:files:hardis:import",
6677
- "org:files:import:hardis",
6678
- "hardis:files:org:import",
6679
- "files:hardis:org:import",
6680
- "files:org:hardis:import",
6681
- "files:org:import:hardis",
6682
- "hardis:files:import:org",
6683
- "files:hardis:import:org",
6684
- "files:import:hardis:org",
6685
- "files:import:org:hardis",
6686
- "hardis:org:import:files",
6687
- "org:hardis:import:files",
6688
- "org:import:hardis:files",
6689
- "org:import:files:hardis",
6690
- "hardis:import:org:files",
6691
- "import:hardis:org:files",
6692
- "import:org:hardis:files",
6693
- "import:org:files:hardis",
6694
- "hardis:import:files:org",
6695
- "import:hardis:files:org",
6696
- "import:files:hardis:org",
6697
- "import:files:org:hardis"
6785
+ "hardis:org:diagnose:unusedusers",
6786
+ "org:hardis:diagnose:unusedusers",
6787
+ "org:diagnose:hardis:unusedusers",
6788
+ "org:diagnose:unusedusers:hardis",
6789
+ "hardis:diagnose:org:unusedusers",
6790
+ "diagnose:hardis:org:unusedusers",
6791
+ "diagnose:org:hardis:unusedusers",
6792
+ "diagnose:org:unusedusers:hardis",
6793
+ "hardis:diagnose:unusedusers:org",
6794
+ "diagnose:hardis:unusedusers:org",
6795
+ "diagnose:unusedusers:hardis:org",
6796
+ "diagnose:unusedusers:org:hardis",
6797
+ "hardis:org:unusedusers:diagnose",
6798
+ "org:hardis:unusedusers:diagnose",
6799
+ "org:unusedusers:hardis:diagnose",
6800
+ "org:unusedusers:diagnose:hardis",
6801
+ "hardis:unusedusers:org:diagnose",
6802
+ "unusedusers:hardis:org:diagnose",
6803
+ "unusedusers:org:hardis:diagnose",
6804
+ "unusedusers:org:diagnose:hardis",
6805
+ "hardis:unusedusers:diagnose:org",
6806
+ "unusedusers:hardis:diagnose:org",
6807
+ "unusedusers:diagnose:hardis:org",
6808
+ "unusedusers:diagnose:org:hardis"
6698
6809
  ]
6699
6810
  },
6700
6811
  "hardis:org:fix:listviewmine": {
@@ -11904,262 +12015,47 @@
11904
12015
  "enableJsonFlag": true,
11905
12016
  "requiresProject": true,
11906
12017
  "isESM": true,
11907
- "relativePath": [
11908
- "lib",
11909
- "commands",
11910
- "hardis",
11911
- "project",
11912
- "deploy",
11913
- "validate.js"
11914
- ],
11915
- "aliasPermutations": [
11916
- "hardis:deploy:validate",
11917
- "deploy:hardis:validate",
11918
- "deploy:validate:hardis",
11919
- "hardis:validate:deploy",
11920
- "validate:hardis:deploy",
11921
- "validate:deploy:hardis"
11922
- ],
11923
- "permutations": [
11924
- "hardis:project:deploy:validate",
11925
- "project:hardis:deploy:validate",
11926
- "project:deploy:hardis:validate",
11927
- "project:deploy:validate:hardis",
11928
- "hardis:deploy:project:validate",
11929
- "deploy:hardis:project:validate",
11930
- "deploy:project:hardis:validate",
11931
- "deploy:project:validate:hardis",
11932
- "hardis:deploy:validate:project",
11933
- "deploy:hardis:validate:project",
11934
- "deploy:validate:hardis:project",
11935
- "deploy:validate:project:hardis",
11936
- "hardis:project:validate:deploy",
11937
- "project:hardis:validate:deploy",
11938
- "project:validate:hardis:deploy",
11939
- "project:validate:deploy:hardis",
11940
- "hardis:validate:project:deploy",
11941
- "validate:hardis:project:deploy",
11942
- "validate:project:hardis:deploy",
11943
- "validate:project:deploy:hardis",
11944
- "hardis:validate:deploy:project",
11945
- "validate:hardis:deploy:project",
11946
- "validate:deploy:hardis:project",
11947
- "validate:deploy:project:hardis"
11948
- ]
11949
- },
11950
- "hardis:project:fix:profiletabs": {
11951
- "aliases": [],
11952
- "args": {},
11953
- "description": "Interactive prompts to add tab visibilities that are not retrieved by project retrieve start",
11954
- "examples": [
11955
- "$ sf hardis:project:fix:profiletabs"
11956
- ],
11957
- "flags": {
11958
- "json": {
11959
- "description": "Format output as json.",
11960
- "helpGroup": "GLOBAL",
11961
- "name": "json",
11962
- "allowNo": false,
11963
- "type": "boolean"
11964
- },
11965
- "flags-dir": {
11966
- "helpGroup": "GLOBAL",
11967
- "name": "flags-dir",
11968
- "summary": "Import flag values from a directory.",
11969
- "hasDynamicHelp": false,
11970
- "multiple": false,
11971
- "type": "option"
11972
- },
11973
- "path": {
11974
- "char": "p",
11975
- "description": "Root folder",
11976
- "name": "path",
11977
- "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
11978
- "hasDynamicHelp": false,
11979
- "multiple": false,
11980
- "type": "option"
11981
- },
11982
- "debug": {
11983
- "char": "d",
11984
- "description": "Activate debug mode (more logs)",
11985
- "name": "debug",
11986
- "allowNo": false,
11987
- "type": "boolean"
11988
- },
11989
- "websocket": {
11990
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11991
- "name": "websocket",
11992
- "hasDynamicHelp": false,
11993
- "multiple": false,
11994
- "type": "option"
11995
- },
11996
- "skipauth": {
11997
- "description": "Skip authentication check when a default username is required",
11998
- "name": "skipauth",
11999
- "allowNo": false,
12000
- "type": "boolean"
12001
- },
12002
- "target-org": {
12003
- "aliases": [
12004
- "targetusername",
12005
- "u"
12006
- ],
12007
- "char": "o",
12008
- "deprecateAliases": true,
12009
- "name": "target-org",
12010
- "noCacheDefault": true,
12011
- "required": true,
12012
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
12013
- "hasDynamicHelp": true,
12014
- "multiple": false,
12015
- "type": "option"
12016
- }
12017
- },
12018
- "hasDynamicHelp": true,
12019
- "hiddenAliases": [],
12020
- "id": "hardis:project:fix:profiletabs",
12021
- "pluginAlias": "sfdx-hardis",
12022
- "pluginName": "sfdx-hardis",
12023
- "pluginType": "core",
12024
- "strict": true,
12025
- "enableJsonFlag": true,
12026
- "title": "Fix profiles to add tabs that are not retrieved by SF CLI",
12027
- "requiresProject": true,
12028
- "isESM": true,
12029
- "relativePath": [
12030
- "lib",
12031
- "commands",
12032
- "hardis",
12033
- "project",
12034
- "fix",
12035
- "profiletabs.js"
12036
- ],
12037
- "aliasPermutations": [],
12038
- "permutations": [
12039
- "hardis:project:fix:profiletabs",
12040
- "project:hardis:fix:profiletabs",
12041
- "project:fix:hardis:profiletabs",
12042
- "project:fix:profiletabs:hardis",
12043
- "hardis:fix:project:profiletabs",
12044
- "fix:hardis:project:profiletabs",
12045
- "fix:project:hardis:profiletabs",
12046
- "fix:project:profiletabs:hardis",
12047
- "hardis:fix:profiletabs:project",
12048
- "fix:hardis:profiletabs:project",
12049
- "fix:profiletabs:hardis:project",
12050
- "fix:profiletabs:project:hardis",
12051
- "hardis:project:profiletabs:fix",
12052
- "project:hardis:profiletabs:fix",
12053
- "project:profiletabs:hardis:fix",
12054
- "project:profiletabs:fix:hardis",
12055
- "hardis:profiletabs:project:fix",
12056
- "profiletabs:hardis:project:fix",
12057
- "profiletabs:project:hardis:fix",
12058
- "profiletabs:project:fix:hardis",
12059
- "hardis:profiletabs:fix:project",
12060
- "profiletabs:hardis:fix:project",
12061
- "profiletabs:fix:hardis:project",
12062
- "profiletabs:fix:project:hardis"
12063
- ]
12064
- },
12065
- "hardis:project:fix:v53flexipages": {
12066
- "aliases": [],
12067
- "args": {},
12068
- "description": "Fix flexipages for apiVersion v53 (Winter22).\n\nNote: Update api version to 53.0 in package.xml and sfdx-project.json",
12069
- "examples": [
12070
- "$ sf hardis:project:fix:v53flexipages"
12071
- ],
12072
- "flags": {
12073
- "json": {
12074
- "description": "Format output as json.",
12075
- "helpGroup": "GLOBAL",
12076
- "name": "json",
12077
- "allowNo": false,
12078
- "type": "boolean"
12079
- },
12080
- "flags-dir": {
12081
- "helpGroup": "GLOBAL",
12082
- "name": "flags-dir",
12083
- "summary": "Import flag values from a directory.",
12084
- "hasDynamicHelp": false,
12085
- "multiple": false,
12086
- "type": "option"
12087
- },
12088
- "path": {
12089
- "char": "p",
12090
- "description": "Root folder",
12091
- "name": "path",
12092
- "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12093
- "hasDynamicHelp": false,
12094
- "multiple": false,
12095
- "type": "option"
12096
- },
12097
- "debug": {
12098
- "char": "d",
12099
- "description": "Activate debug mode (more logs)",
12100
- "name": "debug",
12101
- "allowNo": false,
12102
- "type": "boolean"
12103
- },
12104
- "websocket": {
12105
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12106
- "name": "websocket",
12107
- "hasDynamicHelp": false,
12108
- "multiple": false,
12109
- "type": "option"
12110
- },
12111
- "skipauth": {
12112
- "description": "Skip authentication check when a default username is required",
12113
- "name": "skipauth",
12114
- "allowNo": false,
12115
- "type": "boolean"
12116
- }
12117
- },
12118
- "hasDynamicHelp": false,
12119
- "hiddenAliases": [],
12120
- "id": "hardis:project:fix:v53flexipages",
12121
- "pluginAlias": "sfdx-hardis",
12122
- "pluginName": "sfdx-hardis",
12123
- "pluginType": "core",
12124
- "strict": true,
12125
- "enableJsonFlag": true,
12126
- "title": "Fix flexipages for v53",
12127
- "requiresProject": true,
12128
- "isESM": true,
12129
- "relativePath": [
12130
- "lib",
12131
- "commands",
12132
- "hardis",
12133
- "project",
12134
- "fix",
12135
- "v53flexipages.js"
12136
- ],
12137
- "aliasPermutations": [],
12138
- "permutations": [
12139
- "hardis:project:fix:v53flexipages",
12140
- "project:hardis:fix:v53flexipages",
12141
- "project:fix:hardis:v53flexipages",
12142
- "project:fix:v53flexipages:hardis",
12143
- "hardis:fix:project:v53flexipages",
12144
- "fix:hardis:project:v53flexipages",
12145
- "fix:project:hardis:v53flexipages",
12146
- "fix:project:v53flexipages:hardis",
12147
- "hardis:fix:v53flexipages:project",
12148
- "fix:hardis:v53flexipages:project",
12149
- "fix:v53flexipages:hardis:project",
12150
- "fix:v53flexipages:project:hardis",
12151
- "hardis:project:v53flexipages:fix",
12152
- "project:hardis:v53flexipages:fix",
12153
- "project:v53flexipages:hardis:fix",
12154
- "project:v53flexipages:fix:hardis",
12155
- "hardis:v53flexipages:project:fix",
12156
- "v53flexipages:hardis:project:fix",
12157
- "v53flexipages:project:hardis:fix",
12158
- "v53flexipages:project:fix:hardis",
12159
- "hardis:v53flexipages:fix:project",
12160
- "v53flexipages:hardis:fix:project",
12161
- "v53flexipages:fix:hardis:project",
12162
- "v53flexipages:fix:project:hardis"
12018
+ "relativePath": [
12019
+ "lib",
12020
+ "commands",
12021
+ "hardis",
12022
+ "project",
12023
+ "deploy",
12024
+ "validate.js"
12025
+ ],
12026
+ "aliasPermutations": [
12027
+ "hardis:deploy:validate",
12028
+ "deploy:hardis:validate",
12029
+ "deploy:validate:hardis",
12030
+ "hardis:validate:deploy",
12031
+ "validate:hardis:deploy",
12032
+ "validate:deploy:hardis"
12033
+ ],
12034
+ "permutations": [
12035
+ "hardis:project:deploy:validate",
12036
+ "project:hardis:deploy:validate",
12037
+ "project:deploy:hardis:validate",
12038
+ "project:deploy:validate:hardis",
12039
+ "hardis:deploy:project:validate",
12040
+ "deploy:hardis:project:validate",
12041
+ "deploy:project:hardis:validate",
12042
+ "deploy:project:validate:hardis",
12043
+ "hardis:deploy:validate:project",
12044
+ "deploy:hardis:validate:project",
12045
+ "deploy:validate:hardis:project",
12046
+ "deploy:validate:project:hardis",
12047
+ "hardis:project:validate:deploy",
12048
+ "project:hardis:validate:deploy",
12049
+ "project:validate:hardis:deploy",
12050
+ "project:validate:deploy:hardis",
12051
+ "hardis:validate:project:deploy",
12052
+ "validate:hardis:project:deploy",
12053
+ "validate:project:hardis:deploy",
12054
+ "validate:project:deploy:hardis",
12055
+ "hardis:validate:deploy:project",
12056
+ "validate:hardis:deploy:project",
12057
+ "validate:deploy:hardis:project",
12058
+ "validate:deploy:project:hardis"
12163
12059
  ]
12164
12060
  },
12165
12061
  "hardis:project:generate:bypass": {
@@ -12641,6 +12537,221 @@
12641
12537
  "findduplicates:metadata:project:hardis"
12642
12538
  ]
12643
12539
  },
12540
+ "hardis:project:fix:profiletabs": {
12541
+ "aliases": [],
12542
+ "args": {},
12543
+ "description": "Interactive prompts to add tab visibilities that are not retrieved by project retrieve start",
12544
+ "examples": [
12545
+ "$ sf hardis:project:fix:profiletabs"
12546
+ ],
12547
+ "flags": {
12548
+ "json": {
12549
+ "description": "Format output as json.",
12550
+ "helpGroup": "GLOBAL",
12551
+ "name": "json",
12552
+ "allowNo": false,
12553
+ "type": "boolean"
12554
+ },
12555
+ "flags-dir": {
12556
+ "helpGroup": "GLOBAL",
12557
+ "name": "flags-dir",
12558
+ "summary": "Import flag values from a directory.",
12559
+ "hasDynamicHelp": false,
12560
+ "multiple": false,
12561
+ "type": "option"
12562
+ },
12563
+ "path": {
12564
+ "char": "p",
12565
+ "description": "Root folder",
12566
+ "name": "path",
12567
+ "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12568
+ "hasDynamicHelp": false,
12569
+ "multiple": false,
12570
+ "type": "option"
12571
+ },
12572
+ "debug": {
12573
+ "char": "d",
12574
+ "description": "Activate debug mode (more logs)",
12575
+ "name": "debug",
12576
+ "allowNo": false,
12577
+ "type": "boolean"
12578
+ },
12579
+ "websocket": {
12580
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12581
+ "name": "websocket",
12582
+ "hasDynamicHelp": false,
12583
+ "multiple": false,
12584
+ "type": "option"
12585
+ },
12586
+ "skipauth": {
12587
+ "description": "Skip authentication check when a default username is required",
12588
+ "name": "skipauth",
12589
+ "allowNo": false,
12590
+ "type": "boolean"
12591
+ },
12592
+ "target-org": {
12593
+ "aliases": [
12594
+ "targetusername",
12595
+ "u"
12596
+ ],
12597
+ "char": "o",
12598
+ "deprecateAliases": true,
12599
+ "name": "target-org",
12600
+ "noCacheDefault": true,
12601
+ "required": true,
12602
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
12603
+ "hasDynamicHelp": true,
12604
+ "multiple": false,
12605
+ "type": "option"
12606
+ }
12607
+ },
12608
+ "hasDynamicHelp": true,
12609
+ "hiddenAliases": [],
12610
+ "id": "hardis:project:fix:profiletabs",
12611
+ "pluginAlias": "sfdx-hardis",
12612
+ "pluginName": "sfdx-hardis",
12613
+ "pluginType": "core",
12614
+ "strict": true,
12615
+ "enableJsonFlag": true,
12616
+ "title": "Fix profiles to add tabs that are not retrieved by SF CLI",
12617
+ "requiresProject": true,
12618
+ "isESM": true,
12619
+ "relativePath": [
12620
+ "lib",
12621
+ "commands",
12622
+ "hardis",
12623
+ "project",
12624
+ "fix",
12625
+ "profiletabs.js"
12626
+ ],
12627
+ "aliasPermutations": [],
12628
+ "permutations": [
12629
+ "hardis:project:fix:profiletabs",
12630
+ "project:hardis:fix:profiletabs",
12631
+ "project:fix:hardis:profiletabs",
12632
+ "project:fix:profiletabs:hardis",
12633
+ "hardis:fix:project:profiletabs",
12634
+ "fix:hardis:project:profiletabs",
12635
+ "fix:project:hardis:profiletabs",
12636
+ "fix:project:profiletabs:hardis",
12637
+ "hardis:fix:profiletabs:project",
12638
+ "fix:hardis:profiletabs:project",
12639
+ "fix:profiletabs:hardis:project",
12640
+ "fix:profiletabs:project:hardis",
12641
+ "hardis:project:profiletabs:fix",
12642
+ "project:hardis:profiletabs:fix",
12643
+ "project:profiletabs:hardis:fix",
12644
+ "project:profiletabs:fix:hardis",
12645
+ "hardis:profiletabs:project:fix",
12646
+ "profiletabs:hardis:project:fix",
12647
+ "profiletabs:project:hardis:fix",
12648
+ "profiletabs:project:fix:hardis",
12649
+ "hardis:profiletabs:fix:project",
12650
+ "profiletabs:hardis:fix:project",
12651
+ "profiletabs:fix:hardis:project",
12652
+ "profiletabs:fix:project:hardis"
12653
+ ]
12654
+ },
12655
+ "hardis:project:fix:v53flexipages": {
12656
+ "aliases": [],
12657
+ "args": {},
12658
+ "description": "Fix flexipages for apiVersion v53 (Winter22).\n\nNote: Update api version to 53.0 in package.xml and sfdx-project.json",
12659
+ "examples": [
12660
+ "$ sf hardis:project:fix:v53flexipages"
12661
+ ],
12662
+ "flags": {
12663
+ "json": {
12664
+ "description": "Format output as json.",
12665
+ "helpGroup": "GLOBAL",
12666
+ "name": "json",
12667
+ "allowNo": false,
12668
+ "type": "boolean"
12669
+ },
12670
+ "flags-dir": {
12671
+ "helpGroup": "GLOBAL",
12672
+ "name": "flags-dir",
12673
+ "summary": "Import flag values from a directory.",
12674
+ "hasDynamicHelp": false,
12675
+ "multiple": false,
12676
+ "type": "option"
12677
+ },
12678
+ "path": {
12679
+ "char": "p",
12680
+ "description": "Root folder",
12681
+ "name": "path",
12682
+ "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12683
+ "hasDynamicHelp": false,
12684
+ "multiple": false,
12685
+ "type": "option"
12686
+ },
12687
+ "debug": {
12688
+ "char": "d",
12689
+ "description": "Activate debug mode (more logs)",
12690
+ "name": "debug",
12691
+ "allowNo": false,
12692
+ "type": "boolean"
12693
+ },
12694
+ "websocket": {
12695
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12696
+ "name": "websocket",
12697
+ "hasDynamicHelp": false,
12698
+ "multiple": false,
12699
+ "type": "option"
12700
+ },
12701
+ "skipauth": {
12702
+ "description": "Skip authentication check when a default username is required",
12703
+ "name": "skipauth",
12704
+ "allowNo": false,
12705
+ "type": "boolean"
12706
+ }
12707
+ },
12708
+ "hasDynamicHelp": false,
12709
+ "hiddenAliases": [],
12710
+ "id": "hardis:project:fix:v53flexipages",
12711
+ "pluginAlias": "sfdx-hardis",
12712
+ "pluginName": "sfdx-hardis",
12713
+ "pluginType": "core",
12714
+ "strict": true,
12715
+ "enableJsonFlag": true,
12716
+ "title": "Fix flexipages for v53",
12717
+ "requiresProject": true,
12718
+ "isESM": true,
12719
+ "relativePath": [
12720
+ "lib",
12721
+ "commands",
12722
+ "hardis",
12723
+ "project",
12724
+ "fix",
12725
+ "v53flexipages.js"
12726
+ ],
12727
+ "aliasPermutations": [],
12728
+ "permutations": [
12729
+ "hardis:project:fix:v53flexipages",
12730
+ "project:hardis:fix:v53flexipages",
12731
+ "project:fix:hardis:v53flexipages",
12732
+ "project:fix:v53flexipages:hardis",
12733
+ "hardis:fix:project:v53flexipages",
12734
+ "fix:hardis:project:v53flexipages",
12735
+ "fix:project:hardis:v53flexipages",
12736
+ "fix:project:v53flexipages:hardis",
12737
+ "hardis:fix:v53flexipages:project",
12738
+ "fix:hardis:v53flexipages:project",
12739
+ "fix:v53flexipages:hardis:project",
12740
+ "fix:v53flexipages:project:hardis",
12741
+ "hardis:project:v53flexipages:fix",
12742
+ "project:hardis:v53flexipages:fix",
12743
+ "project:v53flexipages:hardis:fix",
12744
+ "project:v53flexipages:fix:hardis",
12745
+ "hardis:v53flexipages:project:fix",
12746
+ "v53flexipages:hardis:project:fix",
12747
+ "v53flexipages:project:hardis:fix",
12748
+ "v53flexipages:project:fix:hardis",
12749
+ "hardis:v53flexipages:fix:project",
12750
+ "v53flexipages:hardis:fix:project",
12751
+ "v53flexipages:fix:hardis:project",
12752
+ "v53flexipages:fix:project:hardis"
12753
+ ]
12754
+ },
12644
12755
  "hardis:scratch:pool:create": {
12645
12756
  "aliases": [],
12646
12757
  "args": {},
@@ -14615,5 +14726,5 @@
14615
14726
  ]
14616
14727
  }
14617
14728
  },
14618
- "version": "5.37.1"
14729
+ "version": "5.38.0"
14619
14730
  }