Enjoyed the series. Found I had to make this change in the header insert. Otherwise I get a datetime conversion error.
51 INSERT INTO OrderHeader (OrderNumber, OrderDate, CustomerNumber, OrderDate)
52 SELECT
53 x.header.value('@orderNumber[1]', 'varchar(20)') as OrderNumber,
54 x.header.value('@customerNumber[1]', 'varchar(20)') as customerNumber,
55 x.header.value('@orderDate[1]', 'datetime') as OrderDate
56 FROM @OrderInfo.nodes('//salesOrder') as x(header)