diff --git a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1cdeafc94a98cb0cfdb27f716094b94461f5b917 100644
--- a/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md
+++ b/docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CAI.md
@@ -0,0 +1,35 @@
+# CAOS with Cloud Application Integration
+
+[CAOS](https://kb.wisc.edu/registrar/page.php?id=11753) (Curricular and Academic Web Services) is a SOAP API, organized primarily by curricular data. It also sits behind a firewall and is only accessible if your IP has been whitelisted. Our Informatica Secure Agents have been whitelisted, however the Informatica CAI service lives in the cloud, hosted by Informatica and cannot be. While this doesn't prevent us from consuming CAOS data from CAI, it adds a few steps to our process.
+
+Another thing to consider is that setting up an integration to [consume CAOS data is much easier in CDI](docs/tutorials/API_Related/CAOS_SOAP_API/CAOS_with_CDI.md). If you are receiving real-time updates with Webhooks or another messaging service through CAI, you can add a call to a CDI Taskflow or Mapping Task within the CAI Process. In order to do this, you will need to add the [CAI Anonymous User](https://docs.informatica.com/cloud-common-services/administrator/current-version/user-administration/users/application-integration-anonymous-user.html) to the permissions on your CDI objects.
+
+## Cloud Application Integration
+
+The steps for setting up a Process in CAI are as follows:
+
+1) Create Service Connector
+    - For CAOS, you will need to download the .wsdl file instead of refer to the URL, due to the URL only being accessible if your IP is whitelisted.
+2) Create an App Connection and refer it to the Service Connector we created in step 1.
+3) Create a Process and add a step within it that uses the App Connection that refers to the Service Connector.
+
+![CAI_Process](/images/CAI_Process.png)
+
+For more in-depth understanding of this process, please read through section 8 of the [Canvas Tutorial](https://canvas.wisc.edu/courses/378847) we created for general instruction on CAI.
+
+### Specific for CAOS data requests
+
+1) As stated above, the .wsdl will need to be in the form of a file instead of URL to create the Service Connector.
+2) The Start Properties of your Process will need to have the "Run On" setting set to the Secure Agent server you typically work with.
+
+![RunOnSA](/images/RunOnSA.png)
+
+Once you have gotten this far, in order to extract the data and assign it to values for writing to a file, you will need to be familiar with XQuery. This is the language that the Expression Editor recognizes in the Assignment steps. Below is an example of taking a CAOS GetStudents response and assigning data elements. These assignments are later plugged into a File Writer step to write to a .csv.
+
+![ExpressionCAI](/images/ExpressionCAI.png)
+
+## References
+
+* [Canvas Course](https://canvas.wisc.edu/courses/378847) for general IICS training. Section 8 is focused on CAI.
+* [CAOS User Guide](https://git.doit.wisc.edu/road/documentation/-/blob/main/caos/caos-user-guide.md)
+* [Legacy CAOS Wiki](https://git.doit.wisc.edu/road/caos/legacy-wiki)
\ No newline at end of file
diff --git a/images/CAI_Process.png b/images/CAI_Process.png
new file mode 100644
index 0000000000000000000000000000000000000000..237f4a8b006b33921c127ec12cf4618701e32346
Binary files /dev/null and b/images/CAI_Process.png differ
diff --git a/images/ExpressionCAI.png b/images/ExpressionCAI.png
new file mode 100644
index 0000000000000000000000000000000000000000..54392c172ef2af56262cfc95e1657ad86a4171cc
Binary files /dev/null and b/images/ExpressionCAI.png differ
diff --git a/images/RunOnSA.png b/images/RunOnSA.png
new file mode 100644
index 0000000000000000000000000000000000000000..20f8b1c5eafcf34d430d6136494728c043e60074
Binary files /dev/null and b/images/RunOnSA.png differ