sync: auto-sync from Mikes-MacBook-Air.local at 2026-06-12 13:52:32
Author: Mike Swanson Machine: Mikes-MacBook-Air.local Timestamp: 2026-06-12 13:52:32
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
# Alternative fix: Use calendar folder permissions (delegate access)
|
||||||
|
# This bypasses the sharing policy entirely
|
||||||
|
|
||||||
|
# Connect to Exchange Online
|
||||||
|
Connect-ExchangeOnline
|
||||||
|
|
||||||
|
# Grant Leeann permission to Jim's calendar directly
|
||||||
|
Write-Host "`n=== Granting Calendar Permissions ===" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Option 1: Reviewer access (read-only, see all details)
|
||||||
|
Add-MailboxFolderPermission -Identity "jim@jparkinsonaz.com:\Calendar" -User "leeann@lamaddux.com" -AccessRights Reviewer
|
||||||
|
|
||||||
|
# Option 2: Editor access (read + create/edit items) - uncomment if needed
|
||||||
|
# Add-MailboxFolderPermission -Identity "jim@jparkinsonaz.com:\Calendar" -User "leeann@lamaddux.com" -AccessRights Editor
|
||||||
|
|
||||||
|
Write-Host "`nCalendar permissions granted successfully." -ForegroundColor Green
|
||||||
|
|
||||||
|
# Verify the permissions
|
||||||
|
Write-Host "`n=== Current Calendar Permissions ===" -ForegroundColor Cyan
|
||||||
|
Get-MailboxFolderPermission -Identity "jim@jparkinsonaz.com:\Calendar" | Format-Table User, AccessRights
|
||||||
|
|
||||||
|
Write-Host "`n=== Next Steps ===" -ForegroundColor Yellow
|
||||||
|
Write-Host "1. Leeann should open Outlook"
|
||||||
|
Write-Host "2. Go to File > Account Settings > Account Settings > Internet Calendars"
|
||||||
|
Write-Host "3. Or in Outlook: Add Calendar > From Address Book > select Jim Parkinson"
|
||||||
|
Write-Host "4. Jim's calendar will appear in her calendar list"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "NOTE: This uses delegate permissions, not 'sharing' - bypasses the policy restriction."
|
||||||
29
clients/lamaddux/scripts/fix-lamaddux-calendar-sharing.ps1
Normal file
29
clients/lamaddux/scripts/fix-lamaddux-calendar-sharing.ps1
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Fix calendar sharing between jim@jparkinsonaz.com and leeann@lamaddux.com
|
||||||
|
# Issue: "Calendar sharing is not available... because of permission settings"
|
||||||
|
# Cause: Default sharing policy doesn't treat custom domains as internal
|
||||||
|
|
||||||
|
# Connect to Exchange Online
|
||||||
|
Connect-ExchangeOnline
|
||||||
|
|
||||||
|
# Option 1: Check current sharing policy
|
||||||
|
Write-Host "`n=== Current Sharing Policy ===" -ForegroundColor Cyan
|
||||||
|
Get-SharingPolicy | Where-Object {$_.Default -eq $true} | Format-List Name, Enabled, Domains
|
||||||
|
|
||||||
|
# Option 2: Update the default sharing policy to allow internal domain sharing
|
||||||
|
Write-Host "`n=== Updating Sharing Policy ===" -ForegroundColor Cyan
|
||||||
|
$policy = Get-SharingPolicy | Where-Object {$_.Default -eq $true}
|
||||||
|
|
||||||
|
# Add both domains with full calendar sharing permissions
|
||||||
|
# CalendarSharingFreeBusyReviewer = Can see free/busy + subject/location
|
||||||
|
Set-SharingPolicy -Identity $policy.Name -Domains @{Add='lamaddux.com:CalendarSharingFreeBusyReviewer','jparkinsonaz.com:CalendarSharingFreeBusyReviewer'}
|
||||||
|
|
||||||
|
Write-Host "`nSharing policy updated. Both domains now allow calendar sharing." -ForegroundColor Green
|
||||||
|
|
||||||
|
# Verify the change
|
||||||
|
Write-Host "`n=== Verified Policy ===" -ForegroundColor Cyan
|
||||||
|
Get-SharingPolicy -Identity $policy.Name | Format-List Name, Enabled, Domains
|
||||||
|
|
||||||
|
Write-Host "`n=== Next Steps ===" -ForegroundColor Yellow
|
||||||
|
Write-Host "1. Jim should close and reopen Outlook"
|
||||||
|
Write-Host "2. Try sharing the calendar again with leeann@lamaddux.com"
|
||||||
|
Write-Host "3. The 'permission settings' error should be resolved"
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# 2026-06-12 — Lamaddux Calendar Sharing Fix (Jim ↔ Leeann)
|
||||||
|
|
||||||
|
## User
|
||||||
|
- **User:** Mike Swanson (mike)
|
||||||
|
- **Machine:** Mikes-MacBook-Air
|
||||||
|
- **Role:** admin
|
||||||
|
|
||||||
|
## Session Summary
|
||||||
|
|
||||||
|
The session addressed calendar sharing issues between users jim@jparkinsonaz.com and leeann@lamaddux.com on lamaddux.com. The error "Calendar sharing is not available with the following entries because of permission settings on your network" was traced to an Exchange sharing policy misconfiguration. Although both users reside in the same tenant (2f0c4c92-c608-4ee0-bdc2-87d5fd8fe929), the policy did not recognize jparkinsonaz.com as an internal domain. PowerShell scripts were developed to resolve this. The first script, fix-lamaddux-calendar-sharing.ps1, updated the sharing policy to include both domains. A second script, fix-lamaddux-calendar-delegation.ps1, was created to use direct delegate permissions as a workaround. Additionally, an automation issue was encountered with the remediation-tool on macOS due to a missing PyJWT dependency in the externally managed Python environment.
|
||||||
|
|
||||||
|
## Key Decisions
|
||||||
|
|
||||||
|
- Implemented PowerShell scripts to update Exchange sharing policies rather than attempting automated remediation-tool execution
|
||||||
|
- Applied direct delegate permissions as a workaround for sharing restrictions
|
||||||
|
- Created two solution paths: policy fix (recommended long-term) vs delegate permissions (immediate workaround)
|
||||||
|
- Deferred PyJWT installation to preserve system Python environment integrity
|
||||||
|
|
||||||
|
## Problems Encountered
|
||||||
|
|
||||||
|
- Exchange sharing policy did not recognize jparkinsonaz.com as internal domain despite both users being in same tenant
|
||||||
|
- Calendar sharing failed with "permission settings on your network" error when Jim attempted to share with Leeann
|
||||||
|
- Remediation-tool automation blocked by missing PyJWT dependency on macOS externally-managed Python environment (pip install blocked)
|
||||||
|
- Homebrew package `pyjwt` not available (suggested `pywhat` instead), preventing automated token acquisition
|
||||||
|
|
||||||
|
## Configuration Changes
|
||||||
|
|
||||||
|
### Files Created
|
||||||
|
- `tmp/fix-lamaddux-calendar-sharing.ps1` — PowerShell script to update tenant sharing policy
|
||||||
|
- `tmp/fix-lamaddux-calendar-delegation.ps1` — PowerShell script for direct calendar delegation workaround
|
||||||
|
|
||||||
|
### Files Modified
|
||||||
|
- None (solutions not yet executed by user)
|
||||||
|
|
||||||
|
## Credentials & Secrets
|
||||||
|
|
||||||
|
None created or discovered. Existing credentials referenced from vault:
|
||||||
|
- Tenant: lamaddux.com `2f0c4c92-c608-4ee0-bdc2-87d5fd8fe929`
|
||||||
|
- Users: jim@jparkinsonaz.com (obj `387dc966-fd91-4512-9b0f-d80b125769f4`), leeann@lamaddux.com
|
||||||
|
- Vault: `clients/lamaddux/jim-parkinson-m365.sops.yaml` (referenced, not accessed)
|
||||||
|
|
||||||
|
## Infrastructure & Servers
|
||||||
|
|
||||||
|
- **Tenant:** lamaddux.com / 2f0c4c92-c608-4ee0-bdc2-87d5fd8fe929
|
||||||
|
- **Custom Domains:** lamaddux.com (primary), jparkinsonaz.com (verified custom domain)
|
||||||
|
- **Users:**
|
||||||
|
- jim@jparkinsonaz.com — Exchange Online Plan 1, object ID 387dc966-fd91-4512-9b0f-d80b125769f4
|
||||||
|
- leeann@lamaddux.com — tenant owner
|
||||||
|
- **Apps Referenced:**
|
||||||
|
- ComputerGuru Security Investigator (bfbc12a4-f0dd-4e12-b06d-997e7271e10c) — for read-only Exchange checks
|
||||||
|
- Vault: `msp-tools/computerguru-security-investigator.sops.yaml`
|
||||||
|
|
||||||
|
## Commands & Outputs
|
||||||
|
|
||||||
|
### Attempted Token Acquisition (Failed)
|
||||||
|
```bash
|
||||||
|
export VAULT_ROOT_ENV="/Users/azcomputerguru/vault" && \
|
||||||
|
cd /Users/azcomputerguru/.claude/skills/remediation-tool && \
|
||||||
|
bash scripts/get-token.sh 2f0c4c92-c608-4ee0-bdc2-87d5fd8fe929 investigator-exo
|
||||||
|
```
|
||||||
|
**Error:** `ERROR: PyJWT not installed (pip install PyJWT cryptography)`
|
||||||
|
|
||||||
|
### Python Package Installation Attempts
|
||||||
|
```bash
|
||||||
|
python3 -m pip install --quiet PyJWT cryptography
|
||||||
|
```
|
||||||
|
**Error:** `error: externally-managed-environment` (macOS Homebrew Python restriction)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install pyjwt
|
||||||
|
```
|
||||||
|
**Error:** `No available formula with the name "pyjwt". Did you mean pywhat?`
|
||||||
|
|
||||||
|
### PowerShell Solution Scripts Created
|
||||||
|
|
||||||
|
**Script 1: Policy Fix (Recommended)**
|
||||||
|
Location: `tmp/fix-lamaddux-calendar-sharing.ps1`
|
||||||
|
- Updates default sharing policy
|
||||||
|
- Adds both domains with `CalendarSharingFreeBusyReviewer` permission
|
||||||
|
- Command: `Set-SharingPolicy -Identity $policy.Name -Domains @{Add='lamaddux.com:CalendarSharingFreeBusyReviewer','jparkinsonaz.com:CalendarSharingFreeBusyReviewer'}`
|
||||||
|
|
||||||
|
**Script 2: Delegation Workaround**
|
||||||
|
Location: `tmp/fix-lamaddux-calendar-delegation.ps1`
|
||||||
|
- Grants direct mailbox folder permission
|
||||||
|
- Command: `Add-MailboxFolderPermission -Identity "jim@jparkinsonaz.com:\Calendar" -User "leeann@lamaddux.com" -AccessRights Reviewer`
|
||||||
|
- Bypasses sharing policy entirely
|
||||||
|
|
||||||
|
## Pending / Incomplete Tasks
|
||||||
|
|
||||||
|
1. **User to execute PowerShell fix** — Mike needs to run one of the provided scripts:
|
||||||
|
- Recommended: `tmp/fix-lamaddux-calendar-sharing.ps1` (long-term policy fix)
|
||||||
|
- Alternative: `tmp/fix-lamaddux-calendar-delegation.ps1` (immediate workaround)
|
||||||
|
2. **Verify calendar sharing works** — After script execution, Jim should close/reopen Outlook and retry sharing
|
||||||
|
3. **Resolve PyJWT dependency** — For future remediation-tool automation:
|
||||||
|
- Option A: Create venv for remediation-tool
|
||||||
|
- Option B: Install via system package manager if available
|
||||||
|
- Option C: Document manual PowerShell workflow as standard for Exchange policy changes
|
||||||
|
4. **Graduate tmp/ scripts** — If PowerShell approach becomes standard, consider moving scripts to `clients/lamaddux/scripts/` or `projects/msp-tools/remediation-tool/scripts/`
|
||||||
|
|
||||||
|
## Reference Information
|
||||||
|
|
||||||
|
- **Session Log Reference:** session-logs/2026-06-12-mike-jparkinson-mail-migration.md (Jim's initial M365 migration context)
|
||||||
|
- **Related Ticket:** Syncro #32411 (id 112542872) — mail migration to resolve calendar sync
|
||||||
|
- **Exchange Sharing Policy Documentation:**
|
||||||
|
- Default policy allows same-tenant sharing, but custom domains may not be recognized automatically
|
||||||
|
- Domains parameter format: `'domain.com:CalendarSharingFreeBusyReviewer'`
|
||||||
|
- Permission levels: CalendarSharingFreeBusySimple | FreeBusyDetail | FreeBusyReviewer | FullDetails
|
||||||
|
- **Remediation Tool:**
|
||||||
|
- Base: `/Users/azcomputerguru/.claude/skills/remediation-tool`
|
||||||
|
- Token script: `scripts/get-token.sh`
|
||||||
|
- Tier: `investigator-exo` for Exchange Online read operations
|
||||||
|
- Tier: `exchange-op` for write operations (not used this session)
|
||||||
|
- **Migration Context:** Jim migrated from Neptune on-prem Exchange to lamaddux.com M365 tenant on 2026-06-12
|
||||||
|
- **Domain Setup:** jparkinsonaz.com added as verified custom domain, DNS cut over to O365
|
||||||
|
|
||||||
|
---
|
||||||
|
*Session saved: 2026-06-12 13:37 PT*
|
||||||
Reference in New Issue
Block a user