<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project xmlns="http://schemas.microsoft.com/project">
  <Name>attribute-driven-migration.xml</Name>
  <Title>Attribute-Driven Migration: The Cross-Track Attribute Foundation</Title>
  <ScheduleFromStart>1</ScheduleFromStart>
  <StartDate>2027-01-04T08:00:00</StartDate>
  <DefaultStartTime>08:00:00</DefaultStartTime>
  <DefaultFinishTime>17:00:00</DefaultFinishTime>
  <MinutesPerDay>480</MinutesPerDay>
  <MinutesPerWeek>2400</MinutesPerWeek>
  <DaysPerMonth>20</DaysPerMonth>
  <DurationFormat>7</DurationFormat>
  <CalendarUID>1</CalendarUID>
  <Calendars>
    <Calendar>
      <UID>1</UID>
      <Name>Standard</Name>
      <IsBaseCalendar>1</IsBaseCalendar>
      <BaseCalendarUID>-1</BaseCalendarUID>
      <WeekDays>
        <WeekDay>
          <DayType>1</DayType>
          <DayWorking>0</DayWorking>
        </WeekDay>
        <WeekDay>
          <DayType>2</DayType>
          <DayWorking>1</DayWorking>
          <WorkingTimes>
            <WorkingTime><FromTime>08:00:00</FromTime><ToTime>12:00:00</ToTime></WorkingTime>
            <WorkingTime><FromTime>13:00:00</FromTime><ToTime>17:00:00</ToTime></WorkingTime>
          </WorkingTimes>
        </WeekDay>
        <WeekDay>
          <DayType>3</DayType>
          <DayWorking>1</DayWorking>
          <WorkingTimes>
            <WorkingTime><FromTime>08:00:00</FromTime><ToTime>12:00:00</ToTime></WorkingTime>
            <WorkingTime><FromTime>13:00:00</FromTime><ToTime>17:00:00</ToTime></WorkingTime>
          </WorkingTimes>
        </WeekDay>
        <WeekDay>
          <DayType>4</DayType>
          <DayWorking>1</DayWorking>
          <WorkingTimes>
            <WorkingTime><FromTime>08:00:00</FromTime><ToTime>12:00:00</ToTime></WorkingTime>
            <WorkingTime><FromTime>13:00:00</FromTime><ToTime>17:00:00</ToTime></WorkingTime>
          </WorkingTimes>
        </WeekDay>
        <WeekDay>
          <DayType>5</DayType>
          <DayWorking>1</DayWorking>
          <WorkingTimes>
            <WorkingTime><FromTime>08:00:00</FromTime><ToTime>12:00:00</ToTime></WorkingTime>
            <WorkingTime><FromTime>13:00:00</FromTime><ToTime>17:00:00</ToTime></WorkingTime>
          </WorkingTimes>
        </WeekDay>
        <WeekDay>
          <DayType>6</DayType>
          <DayWorking>1</DayWorking>
          <WorkingTimes>
            <WorkingTime><FromTime>08:00:00</FromTime><ToTime>12:00:00</ToTime></WorkingTime>
            <WorkingTime><FromTime>13:00:00</FromTime><ToTime>17:00:00</ToTime></WorkingTime>
          </WorkingTimes>
        </WeekDay>
        <WeekDay>
          <DayType>7</DayType>
          <DayWorking>0</DayWorking>
        </WeekDay>
      </WeekDays>
    </Calendar>
  </Calendars>
  <Tasks>
    <Task>
      <UID>1</UID>
      <ID>1</ID>
      <Name>Phase 0 — Read the tree</Name>
      <OutlineNumber>1</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-04T08:00:00</Start>
      <Finish>2027-01-29T17:00:00</Finish>
    </Task>
    <Task>
      <UID>2</UID>
      <ID>2</ID>
      <Name>AT0.1 OU tree exported read-only: placement and size, GPO links at domain, OU and site, inheritance, and hand-made delegations; every OU and each GPO half tagged with its track</Name>
      <OutlineNumber>1.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-04T08:00:00</Start>
      <Finish>2027-01-13T17:00:00</Finish>
      <Duration>PT64H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-0-read-what-the-ou-tree-encodes</Notes>
    </Task>
    <Task>
      <UID>3</UID>
      <ID>3</ID>
      <Name>AT0.2 A decision for every security group: keep synced, convert to cloud-only, convert to dynamic, or retire</Name>
      <OutlineNumber>1.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-14T08:00:00</Start>
      <Finish>2027-01-25T17:00:00</Finish>
      <Duration>PT64H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with application owners</Contact>
      <Notes>Owner or approver: Identity engineering, with application owners
Source: ../books/b02-identity/09-building-the-entra-target.md#the-per-group-decision</Notes>
      <PredecessorLink>
        <PredecessorUID>2</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>4</UID>
      <ID>4</ID>
      <Name>AT0.3 OU-to-unit mapping drafted: which OU delegations become administrative units, and which become Azure RBAC scopes for servers</Name>
      <OutlineNumber>1.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-14T08:00:00</Start>
      <Finish>2027-01-19T17:00:00</Finish>
      <Duration>PT32H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b02-identity/09-building-the-entra-target.md#organizational-units</Notes>
      <PredecessorLink>
        <PredecessorUID>2</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>5</UID>
      <ID>5</ID>
      <Name>AT0.4 GPO settings split by track: user halves to the HR track's policy design, computer halves to the Endpoint plan</Name>
      <OutlineNumber>1.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-14T08:00:00</Start>
      <Finish>2027-01-19T17:00:00</Finish>
      <Duration>PT32H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with the endpoint lead</Contact>
      <Notes>Owner or approver: Identity engineering, with the endpoint lead
Source: ../books/guides/attribute-driven-migration.md#four-tracks</Notes>
      <PredecessorLink>
        <PredecessorUID>2</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>6</UID>
      <ID>6</ID>
      <Name>X-EG0 Device and server observation signed off (Endpoint plan, Gate 0)</Name>
      <OutlineNumber>1.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-29T17:00:00</Start>
      <Finish>2027-01-29T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO / ISSO (Endpoint &amp; Device Modernization plan)</Contact>
      <Notes>Owner or approver: CISO / ISSO (Endpoint &amp; Device Modernization plan)
If decided late: The Endpoint plan triages Group Policy without knowing which halves belong to people
Source: endpoint-device.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-29T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>5</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>7</UID>
      <ID>7</ID>
      <Name>X-NPG0 Non-person identities inventoried (Non-Person Identity plan, Gate 0)</Name>
      <OutlineNumber>1.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T17:00:00</Start>
      <Finish>2027-01-27T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ISSO (Non-Person Identity Modernization plan)</Contact>
      <Notes>Owner or approver: ISSO (Non-Person Identity Modernization plan)
If decided late: Service accounts in the tree are inventoried without their OU placement and delegations
Source: non-person-identity.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-27T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>2</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>8</UID>
      <ID>8</ID>
      <Name>ATG0 Gate 0 — The tree read</Name>
      <OutlineNumber>1.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-25T17:00:00</Start>
      <Finish>2027-01-25T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Identity engineering lead</Contact>
      <Notes>Owner or approver: Identity engineering lead
Criteria: Inventory in Git, site-linked GPOs included; every OU and every GPO half tagged with its track; a decision for every group; the OU-to-unit mapping drafted; nothing changed in the forest
Source: ../books/b02-identity/10-migrating-and-governing.md#phase-0-assessment</Notes>
      <PredecessorLink>
        <PredecessorUID>3</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>4</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>5</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>9</UID>
      <ID>9</ID>
      <Name>X-G0 Program G0 — Ready to Plan: the read-only assessment committed</Name>
      <OutlineNumber>1.8</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-29T17:00:00</Start>
      <Finish>2027-01-29T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Steward (backup: executive sponsor; program)</Contact>
      <Notes>Owner or approver: Steward (backup: executive sponsor; program)
If decided late: The program plans Phase 1 without knowing what the OU tree encodes
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-29T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>8</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>10</UID>
      <ID>10</ID>
      <Name>Phase 1 — Schema and slots</Name>
      <OutlineNumber>2</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-04T08:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
    </Task>
    <Task>
      <UID>11</UID>
      <ID>11</ID>
      <Name>AT1.1 AD attribute inventory: which attributes are populated, by whom and how fully; which extension attributes are free to carry codes</Name>
      <OutlineNumber>2.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-04T08:00:00</Start>
      <Finish>2027-01-08T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#compared-with-active-directory</Notes>
    </Task>
    <Task>
      <UID>12</UID>
      <ID>12</ID>
      <Name>X-DI1 Enterprise person key, and how source keys map to it (Identity Lifecycle plan, D-I1)</Name>
      <OutlineNumber>2.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-08T17:00:00</Start>
      <Finish>2027-01-08T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ICAM governance body, with HR and identity engineering (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: ICAM governance body, with HR and identity engineering (Identity Lifecycle &amp; Provisioning plan)
If decided late: The mapping has no key to carry in employeeId
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-08T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>13</UID>
      <ID>13</ID>
      <Name>AT1.2 AD-to-Entra mapping for every attribute that drives access, per object type: users, devices, Arc servers, service principals; the store for each from the store table</Name>
      <OutlineNumber>2.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-11T08:00:00</Start>
      <Finish>2027-01-19T17:00:00</Finish>
      <Duration>PT56H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Data architect, with identity engineering</Contact>
      <Notes>Owner or approver: Data architect, with identity engineering
Source: ../books/guides/attribute-driven-migration.md#the-attribute-stores-in-the-order-to-reach-for-them</Notes>
      <PredecessorLink>
        <PredecessorUID>11</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>12</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>14</UID>
      <ID>14</ID>
      <Name>X-I12 Attribute authority map signed (Identity Lifecycle plan, I1.2)</Name>
      <OutlineNumber>2.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-20T17:00:00</Start>
      <Finish>2027-01-20T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ICAM governance body (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: ICAM governance body (Identity Lifecycle &amp; Provisioning plan)
If decided late: The schema can't name a writer for an attribute whose authority isn't decided
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-20T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>15</UID>
      <ID>15</ID>
      <Name>D-AT1 Attribute schema: the store and the single writer for every attribute that drives access, in all four tracks</Name>
      <OutlineNumber>2.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-20T17:00:00</Start>
      <Finish>2027-01-20T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Data architect</Contact>
      <Notes>Owner or approver: Data architect
Options: Native properties first, then extension attributes 1–15 for what rules read, directory extensions for more slots, custom security attributes for sensitive values rules don't need, device properties, Azure tags and certificateUserIds (the store table); or a broader use of directory extensions from the start
If decided late: No slot can be assigned, and every group rule, persona and targeting convention waits
Source: ../books/guides/attribute-driven-migration.md#attributes</Notes>
      <PredecessorLink>
        <PredecessorUID>13</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>14</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>16</UID>
      <ID>16</ID>
      <Name>D-AT2 The coded slot register: which extension attribute carries which code, on users and on devices</Name>
      <OutlineNumber>2.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-20T17:00:00</Start>
      <Finish>2027-01-20T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Data architect, with HR for the code lists</Contact>
      <Notes>Owner or approver: Data architect, with HR for the code lists
Options: The program attribute map (organization, worker type and position category in extensionAttribute10 to 12; region, cost center, division, account type, clearance and DoNotSync in their slots; device tier, role and environment on the device object); or an agency map that keeps the same rule: codes, never names, one writer per slot
If decided late: Rules and filters are written against slots that may move, and every one is rewritten later
Source: ../books/b03-hr-identity/06-canonical-attribute-schema.md#program-attribute-map</Notes>
      <PredecessorLink>
        <PredecessorUID>15</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>17</UID>
      <ID>17</ID>
      <Name>AT1.3 Slot register published: one writer per slot, the code list owner, what reads it; the help desk, self-service and Exchange write paths listed for removal</Name>
      <OutlineNumber>2.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-01-26T17:00:00</Finish>
      <Duration>PT32H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Data architect</Contact>
      <Notes>Owner or approver: Data architect
Source: ../books/b03-hr-identity/06-canonical-attribute-schema.md#writers</Notes>
      <PredecessorLink>
        <PredecessorUID>16</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>18</UID>
      <ID>18</ID>
      <Name>AT1.4 Device, server and non-person attribute authorities named: the procurement record through the Autopilot group tag, the asset record through Arc onboarding tags, the owning system's record</Name>
      <OutlineNumber>2.8</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-01-25T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Data architect, with the endpoint lead</Contact>
      <Notes>Owner or approver: Data architect, with the endpoint lead
Source: ../books/guides/attribute-driven-migration.md#stage-1-source-the-attributes</Notes>
      <PredecessorLink>
        <PredecessorUID>15</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>19</UID>
      <ID>19</ID>
      <Name>ATG1 Gate 1 — Schema and slots signed</Name>
      <OutlineNumber>2.9</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-26T17:00:00</Start>
      <Finish>2027-01-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ICAM governance body</Contact>
      <Notes>Owner or approver: ICAM governance body
Criteria: Every attribute that drives access has one store, one writer and one owner, in all four tracks; the slot register published; the person key carried in employeeId in both directories; codes, never display names, in anything a rule reads
Source: ../books/b03-hr-identity/12-execution-plan.md#phase-1-attribute-authority-and-schema</Notes>
      <PredecessorLink>
        <PredecessorUID>17</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>18</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>20</UID>
      <ID>20</ID>
      <Name>X-P11 Attribute taxonomy finalized (program P1.1)</Name>
      <OutlineNumber>2.10</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-05T17:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: The program's taxonomy is finalized without the cross-track slot register
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-05T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>21</UID>
      <ID>21</ID>
      <Name>Phase 2 — Prove the attributes</Name>
      <OutlineNumber>3</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
    </Task>
    <Task>
      <UID>22</UID>
      <ID>22</ID>
      <Name>X-I15 HR data baselined; employeeId populated; orphan candidates owned (Identity Lifecycle plan, I1.5)</Name>
      <OutlineNumber>3.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-26T17:00:00</Start>
      <Finish>2027-01-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>HR (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: HR (Identity Lifecycle &amp; Provisioning plan)
If decided late: The coverage baseline measures data the HR plan hasn't yet corrected
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-26T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>23</UID>
      <ID>23</ID>
      <Name>AT2.1 Coverage baseline across the tracks: uncorrelated accounts, empty coded slots, counts per organization code against an HR export, duplicate keys; device and server attribute coverage</Name>
      <OutlineNumber>3.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-2-prove-the-attributes-are-true-before-anything-depends-on-them</Notes>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>22</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>24</UID>
      <ID>24</ID>
      <Name>D-AT3 Correlation threshold before any rule grants access</Name>
      <OutlineNumber>3.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-02T17:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Authorizing official, through the agency's risk governance</Contact>
      <Notes>Owner or approver: Authorizing official, through the agency's risk governance
Options: 99% of the pilot cohort correlated (a proposed starting point); a risk-tiered threshold, stricter for privileged and leaver-sensitive populations; 100% with a dated exception list
If decided late: No group can be piloted, because nobody has said how true the attributes must be
Source: ../books/b03-hr-identity/12-execution-plan.md#sequencing-principle</Notes>
      <PredecessorLink>
        <PredecessorUID>23</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>25</UID>
      <ID>25</ID>
      <Name>AT2.2 Other write paths removed: help desk and self-service edits to the access slots, Exchange custom-attribute cmdlets, write rights on the target OUs</Name>
      <OutlineNumber>3.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT64H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with security</Contact>
      <Notes>Owner or approver: Identity engineering, with security
Source: ../books/b03-hr-identity/06-canonical-attribute-schema.md#writers</Notes>
      <PredecessorLink>
        <PredecessorUID>17</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>26</UID>
      <ID>26</ID>
      <Name>AT2.3 Entra ID sign-in, audit and provisioning logs routed outside Entra ID before the pilot's first change</Name>
      <OutlineNumber>3.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Security operations</Contact>
      <Notes>Owner or approver: Security operations
Source: ../books/b03-hr-identity/11-drift-metrics-and-evidence.md#the-evidence-each-event-leaves</Notes>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>27</UID>
      <ID>27</ID>
      <Name>ATG2 Gate 2 — Attributes proven for the pilot</Name>
      <OutlineNumber>3.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-05T17:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: Correlation threshold met on the pilot cohort; every enabled account correlated or on a dated exception list; no duplicate keys; every other write path to the access slots removed in AD and Entra ID; logs leaving Entra ID
Source: ../books/b03-hr-identity/12-execution-plan.md#phase-1-attribute-authority-and-schema</Notes>
      <PredecessorLink>
        <PredecessorUID>24</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>25</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>26</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>28</UID>
      <ID>28</ID>
      <Name>Phase 3 — Sync</Name>
      <OutlineNumber>4</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-26T17:00:00</Finish>
    </Task>
    <Task>
      <UID>29</UID>
      <ID>29</ID>
      <Name>AT3.1 Sync mapping for the slot register: carriers in the provisioning apps' target lists, date mappings, the transitional account-type rule, the DoNotSync filter; soft and hard match blocked</Name>
      <OutlineNumber>4.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-3-map-the-attributes-through-sync</Notes>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>30</UID>
      <ID>30</ID>
      <Name>X-P17 Sync and DNS Private Resolver designs (program P1.7)</Name>
      <OutlineNumber>4.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-12T17:00:00</Start>
      <Finish>2027-02-12T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: The sync design is approved without the attribute flow for the coded slots
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-12T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>29</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>31</UID>
      <ID>31</ID>
      <Name>X-IG3 HR feed live for the foundation scope, shadow differences explained (Identity Lifecycle plan, Gate 3)</Name>
      <OutlineNumber>4.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-26T17:00:00</Start>
      <Finish>2027-02-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ISSO (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: ISSO (Identity Lifecycle &amp; Provisioning plan)
If decided late: The coded slots have no live writer, so the group library can't be shadowed on real data
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-26T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>32</UID>
      <ID>32</ID>
      <Name>ATG3 Gate 3 — Attributes flowing</Name>
      <OutlineNumber>4.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-26T17:00:00</Start>
      <Finish>2027-02-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Identity engineering lead</Contact>
      <Notes>Owner or approver: Identity engineering lead
Criteria: Object counts within ±1%; no sync errors; every slot in the register arrives in Entra ID with the value HR sent; shadow-mode differences explained; both match types blocked outside a planned window
Source: ../books/b02-identity/10-migrating-and-governing.md#phase-1-sync-deployment-and-initial-sync</Notes>
      <PredecessorLink>
        <PredecessorUID>29</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>31</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>27</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>33</UID>
      <ID>33</ID>
      <Name>Phase 4 — Groups and administrative units</Name>
      <OutlineNumber>5</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-20T08:00:00</Start>
      <Finish>2027-03-12T17:00:00</Finish>
    </Task>
    <Task>
      <UID>34</UID>
      <ID>34</ID>
      <Name>AT4.1 Dynamic user group library: node and functional rules on codes; every access rule guarded by accountEnabled and userType and excluding agents' accounts; nesting flattened; no memberOf</Name>
      <OutlineNumber>5.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with application owners</Contact>
      <Notes>Owner or approver: Identity engineering, with application owners
Source: ../books/guides/attribute-driven-migration.md#stage-4-materialize-ou-subtrees-as-dynamic-groups</Notes>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>3</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>35</UID>
      <ID>35</ID>
      <Name>AT4.2 Rules checked before they exist in production: guards, codes not names, paused processing; each rule tested against named users</Name>
      <OutlineNumber>5.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-03T08:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b06-data-platform/17-dynamic-membership-delegation-and-privilege.md#writing-naming-and-testing-rules</Notes>
      <PredecessorLink>
        <PredecessorUID>34</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>36</UID>
      <ID>36</ID>
      <Name>D-AT4 Restricted management, unit by unit, before each unit exists</Name>
      <OutlineNumber>5.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-19T17:00:00</Start>
      <Finish>2027-01-19T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Options: No (the default): the unit scopes writes and stays in governance automation; yes, for a small set of sensitive accounts, accepting that they leave PIM, entitlement management, Lifecycle Workflows and access reviews
If decided late: A unit is created without the decision, and restriction can't be changed afterward
Source: ../books/b02-identity/05-delegation-without-ous.md#restricted-management-a-per-au-decision</Notes>
      <PredecessorLink>
        <PredecessorUID>4</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>37</UID>
      <ID>37</ID>
      <Name>AT4.3 Unit registry: tenant readers, department and division units whose rules mirror the group rules; scoped roles to PIM-eligible role-assignable groups; each unit created before the groups it holds</Name>
      <OutlineNumber>5.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T08:00:00</Start>
      <Finish>2027-02-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-5-delegate-with-administrative-units</Notes>
      <PredecessorLink>
        <PredecessorUID>36</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>19</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>38</UID>
      <ID>38</ID>
      <Name>ATG4 Gate 4 — Group library and units designed</Name>
      <OutlineNumber>5.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-05T17:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Identity engineering lead</Contact>
      <Notes>Owner or approver: Identity engineering lead
Criteria: Every governed group on one of the two patterns, on codes, with guards; every unit rule mirroring its group rule; restriction decided for every unit; every role assignment in the matrix
Source: ../books/b01-transformation-arc/04-identity-transformation.md#verification</Notes>
      <PredecessorLink>
        <PredecessorUID>35</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>37</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>39</UID>
      <ID>39</ID>
      <Name>X-P12 Dynamic group design tested; enterprise groups and administrative units built (program P1.2)</Name>
      <OutlineNumber>5.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-17T17:00:00</Start>
      <Finish>2027-02-17T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: The program builds groups and units from a design that hasn't been checked
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-17T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>38</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>40</UID>
      <ID>40</ID>
      <Name>X-P21S Pilot attributes, groups and units going live (program P2.1, its start)</Name>
      <OutlineNumber>5.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-26T17:00:00</Start>
      <Finish>2027-02-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: There's no live pilot data to shadow the rules against
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-26T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>41</UID>
      <ID>41</ID>
      <Name>AT4.4 Shadow comparison on the pilot: each dynamic group against the group it replaces, every add and remove explained; membership-delta alerts on</Name>
      <OutlineNumber>5.8</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-01T08:00:00</Start>
      <Finish>2027-03-10T17:00:00</Finish>
      <Duration>PT64H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with application owners</Contact>
      <Notes>Owner or approver: Identity engineering, with application owners
Source: ../books/guides/attribute-driven-migration.md#dynamic-user-groups-hr-track</Notes>
      <PredecessorLink>
        <PredecessorUID>40</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>32</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>42</UID>
      <ID>42</ID>
      <Name>X-P22 Pilot Conditional Access and Intune policies assigned (program P2.2, its start)</Name>
      <OutlineNumber>5.9</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-12T17:00:00</Start>
      <Finish>2027-03-12T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: Policies are assigned to groups whose membership hasn't been reconciled
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-03-12T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>41</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>43</UID>
      <ID>43</ID>
      <Name>Phase 5 — Personas and targeting conventions</Name>
      <OutlineNumber>6</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-02-12T17:00:00</Finish>
    </Task>
    <Task>
      <UID>44</UID>
      <ID>44</ID>
      <Name>AT5.1 Conditional Access personas from coded attributes (worker type for internals and externals); every grant paired with a block; empty-slot users reported; emergency access excluded</Name>
      <OutlineNumber>6.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-01-27T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-6-replace-gpo-inheritance-with-conditional-access-and-intune-targeting</Notes>
      <PredecessorLink>
        <PredecessorUID>16</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>45</UID>
      <ID>45</ID>
      <Name>D-AT5 The persona set the Conditional Access library targets</Name>
      <OutlineNumber>6.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T17:00:00</Start>
      <Finish>2027-01-27T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Options: The program's personas, built from the worker type and account type codes; personas plus division-specific overlays; fewer personas with more exclusions (not recommended)
If decided late: The Conditional Access design runs in report-only without the groups it will enforce on
Source: ../books/b04-access/03-the-conditional-access-model.md#naming-and-the-persona-model</Notes>
      <PredecessorLink>
        <PredecessorUID>44</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>46</UID>
      <ID>46</ID>
      <Name>X-P15 Conditional Access design running in report-only (program P1.5)</Name>
      <OutlineNumber>6.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-12T17:00:00</Start>
      <Finish>2027-02-12T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO (program)</Contact>
      <Notes>Owner or approver: CISO (program)
If decided late: Report-only runs against personas that may change
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-12T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>45</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>47</UID>
      <ID>47</ID>
      <Name>AT5.2 Device targeting conventions: device slots written at registration by the provisioning service; dynamic device groups only where a rule reads tier or role; filters otherwise; no dynamic device group as an exclusion</Name>
      <OutlineNumber>6.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-01-25T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Endpoint lead, with the data architect</Contact>
      <Notes>Owner or approver: Endpoint lead, with the data architect
Source: ../books/guides/attribute-driven-migration.md#intune-track</Notes>
      <PredecessorLink>
        <PredecessorUID>16</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>48</UID>
      <ID>48</ID>
      <Name>X-E12 Intune policy library built unassigned, with groups, filters and scope tags (Endpoint plan, E1.2, its start)</Name>
      <OutlineNumber>6.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-29T17:00:00</Start>
      <Finish>2027-01-29T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Endpoint engineering (Endpoint &amp; Device Modernization plan)</Contact>
      <Notes>Owner or approver: Endpoint engineering (Endpoint &amp; Device Modernization plan)
If decided late: The policy library is built on targeting the foundation may change
Source: endpoint-device.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-29T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>47</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>49</UID>
      <ID>49</ID>
      <Name>AT5.3 Server targeting conventions: the Arc tag taxonomy drawn from the asset record and aligned with the device slots; resource groups as the delegation scope</Name>
      <OutlineNumber>6.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-26T08:00:00</Start>
      <Finish>2027-01-28T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Server infrastructure, with the data architect</Contact>
      <Notes>Owner or approver: Server infrastructure, with the data architect
Source: ../books/guides/attribute-driven-migration.md#arc-track</Notes>
      <PredecessorLink>
        <PredecessorUID>18</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>50</UID>
      <ID>50</ID>
      <Name>X-E42 Tag taxonomy fixed from the asset record (Endpoint plan, E4.2)</Name>
      <OutlineNumber>6.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-05T17:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Server infrastructure (Endpoint &amp; Device Modernization plan)</Contact>
      <Notes>Owner or approver: Server infrastructure (Endpoint &amp; Device Modernization plan)
If decided late: Arc servers are tagged with a taxonomy the device and user sides don't share
Source: endpoint-device.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-02-05T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>49</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>51</UID>
      <ID>51</ID>
      <Name>AT5.4 Non-person conventions: owners and sponsors recorded by the enterprise person key; custom security attributes for service principals (system, environment, tier) defined</Name>
      <OutlineNumber>6.8</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-21T08:00:00</Start>
      <Finish>2027-01-25T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with the identity governance officer</Contact>
      <Notes>Owner or approver: Identity engineering, with the identity governance officer
Source: ../books/guides/attribute-driven-migration.md#what-microsoft-documents-for-targeting-service-principals-by-attribute-partly</Notes>
      <PredecessorLink>
        <PredecessorUID>15</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>52</UID>
      <ID>52</ID>
      <Name>X-NP12 AI accountability: sponsors mastered in HR (Non-Person Identity plan, NP1.2, its start)</Name>
      <OutlineNumber>6.9</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-27T17:00:00</Start>
      <Finish>2027-01-27T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Sponsoring offices, with the identity governance officer (Non-Person Identity Modernization plan)</Contact>
      <Notes>Owner or approver: Sponsoring offices, with the identity governance officer (Non-Person Identity Modernization plan)
If decided late: Sponsors are recorded by name rather than by key, and a sponsor's move or departure can't be matched
Source: non-person-identity.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-01-27T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>51</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>53</UID>
      <ID>53</ID>
      <Name>ATG5 Gate 5 — Targeting conventions set</Name>
      <OutlineNumber>6.10</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-01-28T17:00:00</Start>
      <Finish>2027-01-28T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: Personas from authoritative codes, grant and block in pairs, empty slots reported; device and server conventions published and handed to the Endpoint plan; non-person owners and sponsors keyed to the person key
Source: ../books/guides/attribute-driven-migration.md#attribute-to-mechanism-crosswalk</Notes>
      <PredecessorLink>
        <PredecessorUID>45</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>47</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>49</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>51</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>54</UID>
      <ID>54</ID>
      <Name>Phase 6 — PIV and CAC binding</Name>
      <OutlineNumber>7</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-03-01T08:00:00</Start>
      <Finish>2027-09-10T17:00:00</Finish>
    </Task>
    <Task>
      <UID>55</UID>
      <ID>55</ID>
      <Name>AT6.1 Binding coverage measured: certificateUserIds or altSecurityIdentities present and correct for every pilot card holder; the card management system named as the binding writer</Name>
      <OutlineNumber>7.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-01T08:00:00</Start>
      <Finish>2027-03-05T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with the PIV program office</Contact>
      <Notes>Owner or approver: Identity engineering, with the PIV program office
Source: ../books/guides/attribute-driven-migration.md#pki-binding</Notes>
      <PredecessorLink>
        <PredecessorUID>32</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>56</UID>
      <ID>56</ID>
      <Name>D-AT6 Required affinity binding for PIV and CAC</Name>
      <OutlineNumber>7.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-05T17:00:00</Start>
      <Finish>2027-03-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Options: High affinity in production (the program's position), with a custom rule per issuer during the pilot; low affinity until coverage is complete, with a dated end; mixed by issuer
If decided late: PIV sign-in goes to the pilot at the tenant default, which is low affinity
Source: ../books/b07-pki/06-device-and-user-certificates.md#username-bindings-and-affinity</Notes>
      <PredecessorLink>
        <PredecessorUID>55</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>57</UID>
      <ID>57</ID>
      <Name>AT6.2 High affinity piloted on the pilot cohort before the tenant setting changes; multifactor binding rule by issuer or policy OID</Name>
      <OutlineNumber>7.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-08T08:00:00</Start>
      <Finish>2027-03-12T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b03-hr-identity/09-credentials-and-certificates.md#binding-the-piv-certificate-to-the-entra-user</Notes>
      <PredecessorLink>
        <PredecessorUID>56</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>58</UID>
      <ID>58</ID>
      <Name>X-P28 Certificate-based authentication for PIV and CAC holders (program P2.8)</Name>
      <OutlineNumber>7.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-24T17:00:00</Start>
      <Finish>2027-03-24T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: PIV sign-in reaches the pilot with bindings nobody has measured
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-03-24T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>57</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>59</UID>
      <ID>59</ID>
      <Name>D-AT7 Who writes the binding after AD</Name>
      <OutlineNumber>7.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-12T17:00:00</Start>
      <Finish>2027-03-12T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ICAM governance body</Contact>
      <Notes>Owner or approver: ICAM governance body
Options: The card management system writes certificateUserIds through Microsoft Graph at issuance (design guidance, an open pilot); Entra Connect keeps syncing from altSecurityIdentities while any AD remains; manual entry by a Privileged Authentication Administrator (not at scale)
If decided late: User issuance can't move off AD CS, because nothing writes the binding without AD
Source: ../books/guides/attribute-driven-migration.md#pki-binding</Notes>
      <PredecessorLink>
        <PredecessorUID>57</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>60</UID>
      <ID>60</ID>
      <Name>X-P45 User and device issuance off AD CS; smart-card logon GPO retired (program P4.5, its start)</Name>
      <OutlineNumber>7.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-10T17:00:00</Start>
      <Finish>2027-09-10T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: Issuance moves off AD CS with no writer for the binding
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-09-10T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>59</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>61</UID>
      <ID>61</ID>
      <Name>ATG6 Gate 6 — PIV binding proven on the pilot</Name>
      <OutlineNumber>7.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-12T17:00:00</Start>
      <Finish>2027-03-12T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: Every pilot card holder bound; high affinity piloted with no lockouts; phishing-resistant strength for CBA users; the leaver removes the binding as well as revoking the card
Source: ../books/guides/attribute-driven-migration.md#pki-binding</Notes>
      <PredecessorLink>
        <PredecessorUID>57</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>62</UID>
      <ID>62</ID>
      <Name>Phase 7 — The mover proof</Name>
      <OutlineNumber>8</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-03-29T08:00:00</Start>
      <Finish>2027-04-23T17:00:00</Finish>
    </Task>
    <Task>
      <UID>63</UID>
      <ID>63</ID>
      <Name>X-I43 Joiner and mover automation (Identity Lifecycle plan, I4.3)</Name>
      <OutlineNumber>8.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-26T17:00:00</Start>
      <Finish>2027-03-26T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Identity engineering (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: Identity engineering (Identity Lifecycle &amp; Provisioning plan)
If decided late: There's no mover workflow to prove the foundation against
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-03-26T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>64</UID>
      <ID>64</ID>
      <Name>AT7.1 Mover proof on the pilot: one personnel action moves a test user's organization code; groups, unit, persona and access packages change with no ticket; the device stays put; a drift scan comes back clean</Name>
      <OutlineNumber>8.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-29T08:00:00</Start>
      <Finish>2027-04-02T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering, with HR</Contact>
      <Notes>Owner or approver: Identity engineering, with HR
Source: ../books/guides/attribute-driven-migration.md#worked-example-one-user-and-one-mover-event</Notes>
      <PredecessorLink>
        <PredecessorUID>63</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>42</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>53</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>65</UID>
      <ID>65</ID>
      <Name>ATG7 Gate 7 — Mover proven across the tracks</Name>
      <OutlineNumber>8.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-02T17:00:00</Start>
      <Finish>2027-04-02T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: The test mover's access changed only through the attributes, within the measured latency; nothing assigned by hand; the device's groups unchanged; the sponsor of any non-person identity the user sponsors notified; the change traced from the personnel action to the drift report
Source: ../books/guides/attribute-driven-migration.md#worked-example-one-user-and-one-mover-event</Notes>
      <PredecessorLink>
        <PredecessorUID>64</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>61</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>66</UID>
      <ID>66</ID>
      <Name>X-G2 Program G2 — Pilot Clean</Name>
      <OutlineNumber>8.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-23T17:00:00</Start>
      <Finish>2027-04-23T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Steward and executive sponsor (co-signed; program)</Contact>
      <Notes>Owner or approver: Steward and executive sponsor (co-signed; program)
If decided late: The pilot is called clean without a mover having been proved
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-04-23T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>65</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>67</UID>
      <ID>67</ID>
      <Name>Phase 8 — Cut-over and the OU tree</Name>
      <OutlineNumber>9</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-04-05T08:00:00</Start>
      <Finish>2027-11-05T17:00:00</Finish>
    </Task>
    <Task>
      <UID>68</UID>
      <ID>68</ID>
      <Name>AT8.1 Wave scopes written as attribute queries whose groups already exist; leaver automation first in every wave</Name>
      <OutlineNumber>9.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-05T08:00:00</Start>
      <Finish>2027-04-07T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#stage-7-cut-over-in-phases</Notes>
      <PredecessorLink>
        <PredecessorUID>65</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>69</UID>
      <ID>69</ID>
      <Name>X-D07 Wave plan: which divisions, in which order (program D07)</Name>
      <OutlineNumber>9.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-23T17:00:00</Start>
      <Finish>2027-04-23T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Executive sponsor and steering committee (program)</Contact>
      <Notes>Owner or approver: Executive sponsor and steering committee (program)
If decided late: Waves are drawn by OU, not by attribute value
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-04-23T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>68</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>70</UID>
      <ID>70</ID>
      <Name>AT8.2 Per-wave attribute gate: coverage of the wave's query, shadow diff, a dry run with writes off, then seven days in which every change traces to HR before the ticket path closes</Name>
      <OutlineNumber>9.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-08T08:00:00</Start>
      <Finish>2027-04-14T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b03-hr-identity/appendix-c-acceptance-and-cutover.md#proving-hr-is-the-sole-source</Notes>
      <PredecessorLink>
        <PredecessorUID>68</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>71</UID>
      <ID>71</ID>
      <Name>X-P31 Wave 1, first region (program P3.1)</Name>
      <OutlineNumber>9.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-05-25T17:00:00</Start>
      <Finish>2027-05-25T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: Wave 1 closes with no attribute gate
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-05-25T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>70</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>72</UID>
      <ID>72</ID>
      <Name>X-IG5 Populations cloud-mastered (Identity Lifecycle plan, Gate 5)</Name>
      <OutlineNumber>9.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-07-02T17:00:00</Start>
      <Finish>2027-07-02T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>ISSO (Identity Lifecycle &amp; Provisioning plan)</Contact>
      <Notes>Owner or approver: ISSO (Identity Lifecycle &amp; Provisioning plan)
If decided late: Shown for reference: the HR plan's own cut-over
Source: identity-lifecycle.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-07-02T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>73</UID>
      <ID>73</ID>
      <Name>X-G3 Program G3 — Rollout Complete</Name>
      <OutlineNumber>9.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-10T17:00:00</Start>
      <Finish>2027-09-10T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Executive sponsor and steering committee (program)</Contact>
      <Notes>Owner or approver: Executive sponsor and steering committee (program)
If decided late: The transitional sync rules that read OU placement can't come out while any population still depends on them
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-09-10T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>74</UID>
      <ID>74</ID>
      <Name>AT8.3 Transitional rules removed: the account-type sync rule that reads OU placement, OU-based scoping filters and the provisioning OU computation for cloud-mastered populations</Name>
      <OutlineNumber>9.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-13T08:00:00</Start>
      <Finish>2027-09-24T17:00:00</Finish>
      <Duration>PT80H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b02-identity/09-building-the-entra-target.md#attribute-flow-and-transformations</Notes>
      <PredecessorLink>
        <PredecessorUID>73</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>75</UID>
      <ID>75</ID>
      <Name>X-P42 OU-based security groups retired (program P4.2)</Name>
      <OutlineNumber>9.8</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-24T17:00:00</Start>
      <Finish>2027-09-24T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Platform teams (program)</Contact>
      <Notes>Owner or approver: Platform teams (program)
If decided late: The OU tree still grants access through its groups
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-09-24T17:00:00</ConstraintDate>
    </Task>
    <Task>
      <UID>76</UID>
      <ID>76</ID>
      <Name>AT8.4 OU tree frozen: hand-made delegations removed; no OU drives access, scoping or policy; the tree's final export archived in Git as the record</Name>
      <OutlineNumber>9.9</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-27T08:00:00</Start>
      <Finish>2027-10-08T17:00:00</Finish>
      <Duration>PT80H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/b01-transformation-arc/04-identity-transformation.md#phase-4-legacy-retirement</Notes>
      <PredecessorLink>
        <PredecessorUID>74</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>75</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>77</UID>
      <ID>77</ID>
      <Name>ATG8 Gate 8 — OU tree retired as a control</Name>
      <OutlineNumber>9.10</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-10-08T17:00:00</Start>
      <Finish>2027-10-08T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: Every population cut over by attribute query with its gate passed; no sync rule, scoping filter, group, delegation or policy reads OU placement; the final tree archived; rollback by re-enabling, never by re-creating
Source: ../books/guides/attribute-driven-migration.md#stage-7-cut-over-in-phases</Notes>
      <PredecessorLink>
        <PredecessorUID>76</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>78</UID>
      <ID>78</ID>
      <Name>X-P51 AD changes frozen; final assessment (program P5.1, its start)</Name>
      <OutlineNumber>9.11</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-11-05T17:00:00</Start>
      <Finish>2027-11-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Program office (program)</Contact>
      <Notes>Owner or approver: Program office (program)
If decided late: AD is frozen while something still reads the OU tree
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-11-05T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>77</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>79</UID>
      <ID>79</ID>
      <Name>Phase 9 — Drift, limits and steady state</Name>
      <OutlineNumber>10</OutlineNumber>
      <OutlineLevel>1</OutlineLevel>
      <Summary>1</Summary>
      <Start>2027-02-08T08:00:00</Start>
      <Finish>2027-12-03T17:00:00</Finish>
    </Task>
    <Task>
      <UID>80</UID>
      <ID>80</ID>
      <Name>D-AT8 Drift severity and response times</Name>
      <OutlineNumber>10.1</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-05T17:00:00</Start>
      <Finish>2027-02-05T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Options: Book 03's classes (missing identity, stale access, orphan account, attribute drift, unauthorized write, credential drift, contractor credential drift, schema drift), which the program's own drift model, Book 13's five classes, groups (the mapping is not yet specified here), with high severity closed in days and the rest on a dated plan; a stricter clock for unauthorized writes to the access slots
If decided late: Drift findings pile up with nobody obliged to close them
Source: ../books/b03-hr-identity/11-drift-metrics-and-evidence.md#drift-between-hr-and-the-directory</Notes>
      <PredecessorLink>
        <PredecessorUID>27</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>81</UID>
      <ID>81</ID>
      <Name>AT9.1 Drift scans scheduled: HR against the directory, the unit and role registry against the tenant, membership deltas; each track's own reconciliation pointed at the same findings queue</Name>
      <OutlineNumber>10.2</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-03-01T08:00:00</Start>
      <Finish>2027-03-05T17:00:00</Finish>
      <Duration>PT40H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Security operations</Contact>
      <Notes>Owner or approver: Security operations
Source: ../books/guides/attribute-driven-migration.md#stage-8-detect-and-correct-drift</Notes>
      <PredecessorLink>
        <PredecessorUID>38</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>32</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>80</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>82</UID>
      <ID>82</ID>
      <Name>X-P211 Drift-clean hold on the pilot (program P2.11, its start)</Name>
      <OutlineNumber>10.3</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-04-09T17:00:00</Start>
      <Finish>2027-04-09T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Program office (program)</Contact>
      <Notes>Owner or approver: Program office (program)
If decided late: The drift-clean hold has no scan to measure it
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-04-09T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>81</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>83</UID>
      <ID>83</ID>
      <Name>AT9.2 Limits register: dynamic group and rule limits, the 100-workflow Lifecycle Workflows budget, administrative unit limits, dynamic units' cloud availability; reviewed with every design change</Name>
      <OutlineNumber>10.4</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-02-08T08:00:00</Start>
      <Finish>2027-02-10T17:00:00</Finish>
      <Duration>PT24H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Identity engineering</Contact>
      <Notes>Owner or approver: Identity engineering
Source: ../books/guides/attribute-driven-migration.md#limits</Notes>
      <PredecessorLink>
        <PredecessorUID>38</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>84</UID>
      <ID>84</ID>
      <Name>AT9.3 A full drift cycle on the whole estate: findings closed at the source; the nightly plan zero-action</Name>
      <OutlineNumber>10.5</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-09-27T08:00:00</Start>
      <Finish>2027-10-08T17:00:00</Finish>
      <Duration>PT80H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>0</Milestone>
      <Contact>Security operations, with HR</Contact>
      <Notes>Owner or approver: Security operations, with HR
Source: ../books/b01-transformation-arc/04-identity-transformation.md#verification</Notes>
      <PredecessorLink>
        <PredecessorUID>81</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>74</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>85</UID>
      <ID>85</ID>
      <Name>ATG9 Gate 9 — Attributes kept true</Name>
      <OutlineNumber>10.6</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-10-08T17:00:00</Start>
      <Finish>2027-10-08T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>CISO</Contact>
      <Notes>Owner or approver: CISO
Criteria: Valid attributes for every HR-listed worker; every group on one of the two patterns; every unit rule mirroring its group with processing on; every policy targeting only governed groups; zero open high-severity drift findings; logs outside Entra ID; the six lifecycle metrics on the ConMon cadence
Source: ../books/b03-hr-identity/12-execution-plan.md#phase-6-sustained-posture</Notes>
      <PredecessorLink>
        <PredecessorUID>83</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>84</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
      <PredecessorLink>
        <PredecessorUID>77</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
    <Task>
      <UID>86</UID>
      <ID>86</ID>
      <Name>X-G5 Program G5 — AD Retired</Name>
      <OutlineNumber>10.7</OutlineNumber>
      <OutlineLevel>2</OutlineLevel>
      <Start>2027-12-03T17:00:00</Start>
      <Finish>2027-12-03T17:00:00</Finish>
      <Duration>PT0H0M0S</Duration>
      <DurationFormat>7</DurationFormat>
      <Milestone>1</Milestone>
      <Contact>Executive sponsor and CIO (program)</Contact>
      <Notes>Owner or approver: Executive sponsor and CIO (program)
If decided late: AD is retired with attribute drift still open
Source: program-master-schedule.md</Notes>
      <ConstraintType>4</ConstraintType>
      <ConstraintDate>2027-12-03T17:00:00</ConstraintDate>
      <PredecessorLink>
        <PredecessorUID>85</PredecessorUID>
        <Type>1</Type>
        <LinkLag>0</LinkLag>
        <LagFormat>7</LagFormat>
      </PredecessorLink>
    </Task>
  </Tasks>
</Project>
