<?xml version="1.0" encoding="UTF-8"?>

<xs:schema targetNamespace="http://www.immigration.gov/xmlschema/sevisbatch/Trans" xmlns:trans="http://www.immigration.gov/xmlschema/sevisbatch/Trans" xmlns:table="http://www.immigration.gov/xmlschema/sevisbatch/Table" xmlns:common="http://www.immigration.gov/xmlschema/sevisbatch/Common" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0">
	<xs:import namespace="http://www.immigration.gov/xmlschema/sevisbatch/Table" schemaLocation="SEVISTable.xsd"/>
	<xs:import namespace="http://www.immigration.gov/xmlschema/sevisbatch/Common" schemaLocation="Common.xsd"/>
	<xs:complexType name="TRANSACTION_LOGType">
		<xs:sequence>
			<xs:element name="TRANS_HEADER">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="DateTimeStamp" type="table:DateTimeType">
							<xs:annotation>
								<xs:documentation>Date and time file was uploaded</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="FileName">
							<xs:annotation>
								<xs:documentation>Name of file uploaded</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:whiteSpace value="preserve"/>
									<xs:maxLength value="30"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="BatchID" type="common:BatchIDType">
							<xs:annotation>
								<xs:documentation>Batch ID provided in upload</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="FileUploadResult">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="FileErrorCode" type="xs:string" minOccurs="0">
										<xs:annotation>
											<xs:documentation>SEVIS defined error code </xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="status" type="table:IndicatorYesNoType" use="required"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="FileValidation" type="trans:ValidationType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Pass/Fail indicator for file validation against schema</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="RequestNum" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Total number of records in file upload</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="5"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="SuccessfulRequest" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Total number of successfully processed records</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="5"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="TRANS_BODY" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="RECORD" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="UserDefinedA" type="table:OptionalKey1" id="createstudent:userdefinedA" minOccurs="0">
										<xs:annotation>
											<xs:documentation>10 character</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="UserDefinedB" type="table:OptionalKey2" id="createstudent:userdefinedA" minOccurs="0">
										<xs:annotation>
											<xs:documentation>14 character</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="ProcessDate" type="table:DateTimeType">
										<xs:annotation>
											<xs:documentation>Date and time transaction was processed</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="RequestResult" type="trans:RequestResultType"/>
									<xs:element name="DEPENDENT_RECORD" minOccurs="0" maxOccurs="unbounded">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="UserDefinedA" type="table:OptionalKey1" id="createstudent:userdefinedA" minOccurs="0">
													<xs:annotation>
														<xs:documentation>10 character</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="UserDefinedB" type="table:OptionalKey2" id="createstudent:userdefinedA" minOccurs="0">
													<xs:annotation>
														<xs:documentation>14 character</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="RequestResult" type="trans:RequestResultType"/>
											</xs:sequence>
											<xs:attribute name="dependentSevisID" type="common:SevisIDType" use="optional"/>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="sevisID" type="common:SevisIDType" use="optional"/>
								<xs:attribute name="userID" type="common:UserIdType" use="optional"/>
								<xs:attribute name="requestID" type="common:RequestID" use="required"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="schemaVersion" type="xs:decimal" use="optional" fixed="1.0"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="RequestResultType">
		<xs:sequence>
			<xs:element name="SEVIS_ErrorCode" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>SEVIS errors returned from business rules</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="SEVIS_ErrorElement" type="common:RemarksType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="Status" type="table:IndicatorYesNoType" use="required"/>
	</xs:complexType>
	<xs:complexType name="ValidationType">
		<xs:sequence>
			<xs:element name="Errors" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Error" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="ErrorCode" type="common:ErrorCodeType" minOccurs="0">
										<xs:annotation>
											<xs:documentation>SEVIS defined error code</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="ErrorMessage" type="common:RemarksType" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Generated parser defined error message</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="status" type="table:IndicatorYesNoType" use="required"/>
	</xs:complexType>
</xs:schema>
