Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install Apple App Store apps on macOS #18867

Closed
27 of 45 tasks
noahtalerman opened this issue May 9, 2024 · 11 comments
Closed
27 of 45 tasks

Install Apple App Store apps on macOS #18867

noahtalerman opened this issue May 9, 2024 · 11 comments
Assignees
Labels
customer-easterwood customer-eponym customer-figali customer-rosner customer-starchik ~experimental This feature is experimental, breaking changes may be made. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) story A user story defining an entire feature
Milestone

Comments

@noahtalerman
Copy link
Member

noahtalerman commented May 9, 2024

Goal

User story
As an IT admin,
I want to install Apple App Store apps on my macOS hosts
so that I can give my end user's access to software that my organization ordered for them in Apple Business Manager (ex. Xcode).

Context

This story requires connecting Fleet to Apple's Volume Purchasing Program (VPP)

This is user story applies to this Fleet Q2 OKR:

  • Increase product maturity and fulfill customer promises

Changes

Product

  • UI changes: Figma link
  • CLI usage changes: Figma link
  • REST API changes: API design: Install Apple App Store apps on macOS #19291
  • Permissions changes:
    • Maintainers and admins (team and global) can view, add, and delete VPP software. GitOps user can manage VPP software via Fleet YAML. (Team roles can do specified actions to software added to their team(s) and can add VPP software to teams they are assigned to.)
    • Maintainers and admins (team and global) can install VPP software on a specific host. (Team roles can do install VPP software on hosts assigned to their team(s))
    • Observers (team and global) can view VPP software (Team observers can view only VPP software added to their team(s).)
    • Fleet admin (global) can enable VPP, disable VPP, renew VPP token.
  • Outdated documentation changes:
    • Document VPP integration steps and how to add and install VPP software. Write an article on how to enable VPP (consider account password change), how to find App Store ID Screenshot 2024-06-10 at 21 00 30
    • GitOps reference docs: GitOps docs: Install software #20502
  • Changes to paid features or tiers: Available in Fleet Premium
  • Other requirements:
    • GET /api/v1/fleet/software/app_store_apps checks for available purchased app in ABM and pulls metadata for each app (name, latestVersionInfo and bundleId ) and returns the list of available apps.
      • It shouldn't return an app that's already added to a team. (e.g. If user added Pages app to a team, next time when hit this API for that team Logic Pro shouldn't be returned since it's already added to software title
      • If VPP app is removed from software title, it should be available in this API again.
      • List apps that have macOS in supportedPlatforms and productType is App
    • Adding VPP app via POST /api/v1/fleet/software/app_store_apps/:app_store_id uses app_store_id of VPP app.
    • When disabling VPP (DELETE /api/v1/fleet/mdm/apple/vpp_token) we want to delete content token (.vpptoken) from database. All activities associated with VPP apps should remain.
    • For VPP apps POST /api/v1/fleet/hosts/:id/software/install/:software_title_id should first assign license to the host (using Apple API), if Apple returns an error, we'll throw a generic error message, except in 2 cases: when we get the error that there are no enough licenses and when VPP token is expired.
      • After license was successfully assigned (we got success from Apple), send InstallApplication MDM command, using this temaplate.
    • GET /api/v1/fleet/hosts/:idd/software should return "package_available_for_install": "" for App Store app

Engineering

  • Database schema migrations: TODO
  • Load testing: TODO

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

QA

Risk assessment

  • Risk level: Low

Manual testing steps

Prerequisites -

  • VPP token shared in 1Password

VPP Integration

  • Verify new VPP tab is available on the Settings/Integrations page
  • Ensure Turn on MDM link works for new setups
  • When/if MDM is turned on, ensure ENABLE button works
  • Verify all copy matches Figma
  • Download VPP Token from ABM, upload to Fleet
  • Ensure file type validation is working. Verify errors against copy in Figma
  • Upon successful upload, ensure green toast message and new copy
  • Click EDIT and ensure disable and renew functionality
  • Go thru entire Renewal workflow
  • Under software titles page in UI, verify VPP apps are listed, check against Figma
  • Add software modal should have a new tab for VPP
  • Ensure spinner appears when adding/waiting for VPP list to populate
  • Validate empty state
  • Validate list matches ABM
  • Validate errors match Figma
  • Ensure error toast if title already exists

Software Title Details page

  • Logo from app store displays
  • Self Service Tag is present when enabled
  • Test Actions -> Delete
  • Ensure app name gets updated after OS Query runs
  • Verify API has new app_store object

Host details Software page

  • Actions -> install = ensure apps are installing via mdm commands
  • Verify loading state
  • Verify successes and failures against Figma copy

Activity Feed

  • Verify host activity feed
  • Verify Global activity feed

Test GitOps workflow

  • Yaml config file

Test API

  • Functionality
  • verify Errors

Other Considerations

  • iOS (future support) vs macOS version displayed?
  • License counts displayed?
  • What happens when a license is revoked?
  • What happens when you exceed license count?

Testing notes

Confirmation

  1. Engineer (@____): Added comment to user story confirming successful completion of QA.
  2. QA (@____): Added comment to user story confirming successful completion of QA.
@noahtalerman noahtalerman added story A user story defining an entire feature ~feature fest Will be reviewed at next Feature Fest :product Product Design department (shows up on 🦢 Drafting board) #g-mdm MDM product group and removed ~feature fest Will be reviewed at next Feature Fest labels May 9, 2024
@noahtalerman
Copy link
Member Author

noahtalerman commented May 10, 2024

Hey @lukeheath, do you have admin (create user) access in Fleet's Apple Business Manager account?

If yes, can you please create an account for @marko-lisica? That way, Marko can do some research on how we would purchases licenses in ABM.

Screenshot 2024-05-10 at 10 39 24 AM

@lukeheath
Copy link
Member

@marko-lisica @noahtalerman Done! You should receive an email.

I've also made @georgekarrv an ABM admin so he can help manage the instance.

@marko-lisica
Copy link
Member

Hey @lukeheath, I didn't get the email yet. Can you or @georgekarrv try to add me again?

@georgekarrv
Copy link
Member

I'll take a look here in ~5m

@georgekarrv
Copy link
Member

Should be sent now

@noahtalerman noahtalerman changed the title Assign licenses using Apple's Volume Purchasing Program (VPP) Install apps on macOS using Apple's Volume Purchasing Program (VPP) May 23, 2024
@marko-lisica marko-lisica added the ~feature fest Will be reviewed at next Feature Fest label May 30, 2024
@noahtalerman noahtalerman removed the ~feature fest Will be reviewed at next Feature Fest label May 31, 2024
@noahtalerman noahtalerman changed the title Install apps on macOS using Apple's Volume Purchasing Program (VPP) Install Apple App Store apps on macOS Jun 10, 2024
@marko-lisica
Copy link
Member

Hey @georgekarrv , heads up the story is ready to be specified.

@georgekarrv georgekarrv added Epic DO NOT USE. Auto-created by ZenHub, cannot be disabled. and removed Epic DO NOT USE. Auto-created by ZenHub, cannot be disabled. labels Jun 19, 2024
@noahtalerman
Copy link
Member Author

noahtalerman commented Jun 24, 2024

Hey @marko-lisica just checking, do we want “software” in the activity feed copy? (first item in screenshot below)

I see we’re using "software" for App Store apps but not custom packages. Is that intentional?

Screenshot 2024-06-24 at 12 16 02 PM

@georgekarrv georgekarrv added :release Ready to write code. Scheduled in a release. See "Making changes" in handbook. and removed :product Product Design department (shows up on 🦢 Drafting board) labels Jun 24, 2024
@marko-lisica
Copy link
Member

Hey @marko-lisica just checking, do we want “software” in the activity feed copy? (first item in screenshot below)
I see we’re using "software" for App Store apps but not custom packages. Is that intentional?

@noahtalerman Thanks for catching this. It was a mistake since we decided to cut the and software from activities related to both VPP and custom software packages.

@lukeheath lukeheath added this to the 4.55.0-tentative milestone Jul 9, 2024
noahtalerman added a commit that referenced this issue Jul 19, 2024
- Update GitOps reference to cover the following user stories:
  - #14921 (4.50)
  - #18867 (4.55)
  - #19447 (4.56)
  - #19550 (4.56)
jahzielv added a commit that referenced this issue Jul 25, 2024
> Related issue: #18867

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] Added/updated tests
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- [x] Manual QA for all new/changed functionality
@PezHub
Copy link
Contributor

PezHub commented Jul 30, 2024

QA Notes:

  • See list of items above that were tested and not tested (for various reasons e.g future enhancements).
  • spent a good deal of time on the UI and worked out a few UI bugs with the team
  • spent less time testing API and GitOps functionality due to limited time and resources, but basic tests pass.

Over all things are looking great!

@georgekarrv georgekarrv added :demo and removed :demo labels Aug 2, 2024
@lukeheath lukeheath added :product Product Design department (shows up on 🦢 Drafting board) and removed :release Ready to write code. Scheduled in a release. See "Making changes" in handbook. labels Aug 9, 2024
@noahtalerman noahtalerman added the ~experimental This feature is experimental, breaking changes may be made. label Aug 16, 2024
@noahtalerman
Copy link
Member Author

noahtalerman commented Aug 16, 2024

Hey @Patagonia121 and @dherder heads up that this customer/prospect request was shipped in Fleet 4.55.

Heads up that we marked the feature as experimental. Here's what that means: https://fleetdm.com/handbook/company/product-groups#experimental-features

PR to call this out in the API docs is here: #21379

UDPATE: The above PR is merged! (@noahtalerman)

@marko-lisica I passed this issue to you. Can you please close this issue once the PR is merged? Thanks :)

noahtalerman added a commit that referenced this issue Aug 17, 2024
@fleet-release
Copy link
Contributor

Apps from the cloud,
Ease for admins bestowed,
Work flows as water.

zayhanlon pushed a commit that referenced this issue Aug 26, 2024
- Zero-touch for iOS/iPadOS (#18119) shipped in Fleet 4.51
- Exclude labels from configuration profiles (#17315) shipped in 4.54
  - `customer-rosner` commit
- Configuration profiles for iOS/iPadOS (#19319) shipped in 4.54
- MDM commands for iOS/iPadOS (#18119) shipped in 4.51
- Deploy Apple App Store apps on macOS (#18867) and iOS/iPadOS (#19447)
shipped in 4.55
  - `customer-rosner` commit

---------

Co-authored-by: Sarah Gillespie <73313222+gillespi314@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
customer-easterwood customer-eponym customer-figali customer-rosner customer-starchik ~experimental This feature is experimental, breaking changes may be made. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) story A user story defining an entire feature
Development

No branches or pull requests

10 participants