Every deep layer in this course has something to build. To build it, a learner needs a small, standard toolkit on their laptop: the Python language, a code editor, Git to keep versions of their work, and a few free accounts.
This topic sets that up once, for the whole course. Each later unit starts with a short "Set up for Unit N" topic that adds only what that unit needs.
The toolkit is free. The SAP side uses SAP's public test system, the sandbox on the SAP Business Accelerator Hub, which holds demo data. The only optional cost is an AI model account, which charges a small amount per request.
If you manage people who are learning this, setup is where most of them quietly stop. Not because it is hard, but because one blocked install on a company laptop, or one confusing error, ends the evening.
Three things make the difference:
A laptop they are allowed to install software on. Many corporate laptops block installs or route traffic through a proxy that blocks new sites.
A rule about data. The course uses only demo data from SAP's sandbox and made-up sample data. Learners should never paste real customer or company data into exercises or into external AI services.
A rule about keys. An API key is a password for a service. Keys belong in a private file on the learner's machine, never in code, chat messages or shared folders.
Keeps a history of your work; your portfolio lives in it
Free
Unit 1
SAP account and sandbox key
Reads SAP demo data through SAP's standard APIs
Free
Unit 1
AI model account
Lets code call a large language model
Small per-request charge
Unit 1 (optional), required from Unit 5
SAP BTP trial and other services
SAP's cloud platform and AI services
Free trial or paid, per unit
Named in each unit's setup topic
Plan for about an hour the first time. A learner who gets the check script at the end of the deep layer to print "All set" is ready for every Unit 1 exercise.
"I need an SAP system to learn this." Not for most units. SAP's sandbox gives read access to demo data through the same APIs a real system offers.
"Setup is a one-off chore for developers." Leaders who do it once understand much better what their teams mean by "environment", "keys" and "the proxy blocked it".
"A trial account is fine for customer work." Trials and sandboxes are for learning. Real projects need proper licensed systems and the customer's approval.
Pick one answer for each question. The explanation appears after you choose.
1What does a learner need to install for this course, and what does it cost?
Answer: A. Python, the VS Code editor, Git and a free SAP account with a sandbox key, all free. The only optional cost is an AI model account, which charges a small amount per request and is required from Unit 5. Plan for about an hour.
2Why do learners most often stall at setup, and how can a manager prevent it?
Answer: D. Usually one blocked install on a company laptop, a proxy that blocks new sites, or one confusing error. Give them a laptop they may install software on, check the network with IT in advance, and set clear rules on data and keys.
3What is the rule about data during the course?
Answer: C. Use only SAP's sandbox demo data and made-up sample data. Never paste real customer or company data into exercises or into external AI services.
4What is an API key, and where should it be kept?
Answer: B. A password that lets a program use a service. It belongs in a private file on the learner's own machine, never in code, chat messages or shared folders.
5Does a learner need access to an SAP system?
Answer: A. Not for most units. SAP's sandbox gives read access to demo data through the same APIs a real system offers. Units that need more, such as an SAP BTP trial, say so in their own setup topic.
6A learner has a locked-down company laptop. What are the options?
Answer: D. Ask IT before starting: install rights for Python, VS Code and Git, access to sandbox.api.sap.com and model APIs, the policy on external AI services, and where to keep keys. If that isn't possible, use a personal machine for the course.
7Can a trial account or sandbox be used for customer work?
Answer: C. No. Trials and sandboxes are for learning. Real projects need properly licensed systems and the customer's approval.
Ask a question
Testing: only staff see this
Stuck on something in this layer? Ask it here. Questions are answered in the order they arrive, and the answer appears under My questions.
Sign in (free) to ask a question. You can ask anonymously.
Deep layer · 40 min read
#Mental model: one course folder, one private Python, one private key file
Everything you build in this course lives in one folder on your computer. Inside it are:
a virtual environment (.venv): a private copy of Python and its libraries, only for this course;
a .env file: your keys, which never leave your machine;
your code, one subfolder per unit, tracked by Git so you can see every change and build a portfolio.
flowchart TB
F[orchestrate-course folder] --> V[.venv<br/>private Python + libraries]
F --> E[.env<br/>your keys, never shared]
F --> C[unit01, unit02, ...<br/>your code]
F --> G[.git<br/>history of your work]
C -->|reads keys from| E
C -->|runs with| V
If something breaks later, it is almost always one of three things: the virtual environment isn't active, a library isn't installed in it, or a key isn't in .env. The check script at the end tests all three.
When you type python triage.py, your terminal finds a Python program, which runs your file. If the virtual environment is active, the terminal uses the private Python in .venv, which has the libraries you installed. If it isn't active, it uses the system Python, which doesn't have them, and you see ModuleNotFoundError.
Keys work the same way. Your code asks for SAP_API_KEY by name. The python-dotenv library reads your .env file and makes its values available under those names. The key itself is never written in your code, so you can share or publish the code safely.
#Build it yourself: set up and check your computer
In your terminal, go to your home folder and create the course folder:
cd ~
mkdir orchestrate-course
cd orchestrate-course
(cd means "change directory". ~ is your home folder; this works in PowerShell too.)
In VS Code, choose File > Open Folder and open orchestrate-course. From now on you can use VS Code's own terminal: Terminal > New Terminal.
#Step 4: Create and turn on the virtual environment
In the terminal, inside orchestrate-course, run:
python -m venv .venv
(Use python3 on macOS or Linux.) This creates a hidden .venv folder.
Turn it on:
Windows (PowerShell):
.venv\Scripts\Activate.ps1
macOS / Linux:
source .venv/bin/activate
Your prompt now starts with (.venv). Do this every time you open a new terminal for the course.
In VS Code, press Ctrl+Shift+P (Cmd+Shift+P on Mac), run Python: Select Interpreter, and choose the one inside .venv. VS Code then activates it for you in new terminals.
Create a new file, paste the script below, and save it as check_setup.py in your course folder.
With (.venv) showing, run:
python check_setup.py
"""Check that your computer is ready for the Orchestrate course.
Run it from your course folder: python check_setup.py
It only reads your setup; it changes nothing and sends no keys anywhere.
"""
import importlib.util
import os
import shutil
import sys
import urllib.error
import urllib.request
problems = 0
def report(ok: bool, label: str, fix: str = "", optional: bool = False) -> None:
"""Print one line: OK, MISSING (must fix) or LATER (optional for now)."""
global problems
if ok:
print(f" OK {label}")
elif optional:
print(f" LATER {label} -> {fix}")
else:
problems += 1
print(f" MISSING {label} -> {fix}")
def reachable(url: str) -> bool:
"""True if the site answers at all. Any HTTP status, even an error, counts."""
try:
urllib.request.urlopen(url, timeout=10)
return True
except urllib.error.HTTPError:
return True # the site answered, it just wants a key
except Exception:
return False
print("\n1. Python")
v = sys.version_info
report(v >= (3, 10), f"Python {v.major}.{v.minor}.{v.micro}", "install Python 3.10 or newer (Step 1)")
in_venv = sys.prefix != sys.base_prefix
report(in_venv, "virtual environment is active", "activate .venv (Step 4)")
print("\n2. Libraries")
for module, package in [("requests", "requests"), ("anthropic", "anthropic"), ("dotenv", "python-dotenv")]:
found = importlib.util.find_spec(module) is not None
report(found, package, "pip install -r requirements.txt (Step 5)")
print("\n3. Keys")
if importlib.util.find_spec("dotenv") is not None:
from dotenv import load_dotenv
load_dotenv() # reads the .env file in this folder, if there is one
report(os.path.exists(".env"), ".env file in this folder", "create it (Step 6)")
report(bool(os.environ.get("SAP_API_KEY")), "SAP_API_KEY", "add it to .env (Step 6)")
report(bool(os.environ.get("ANTHROPIC_API_KEY")), "ANTHROPIC_API_KEY",
"optional until you use a model; add it to .env (Step 6)", optional=True)
print("\n4. Tools")
report(shutil.which("git") is not None, "git", "install Git (Step 7)")
report(os.path.isdir(".git"), "this folder is a Git repository", "run git init (Step 7)", optional=True)
print("\n5. Network")
report(reachable("https://sandbox.api.sap.com/"), "SAP sandbox (sandbox.api.sap.com)",
"blocked: try another network or ask IT to allow it")
report(reachable("https://api.anthropic.com/"), "Model API (api.anthropic.com)",
"blocked: try another network or ask IT to allow it", optional=True)
print()
if problems:
print(f"{problems} item(s) to fix. Fix them in order, then run this again.")
sys.exit(1)
print("All set. Your computer is ready for the course.")
The first run on a fresh computer usually shows a few MISSING lines. That's the point: each one names the step that fixes it. Fix them in order and run the script again. When everything is ready you see:
1. Python
OK Python 3.14.4
OK virtual environment is active
2. Libraries
OK requests
OK anthropic
OK python-dotenv
3. Keys
OK .env file in this folder
OK SAP_API_KEY
OK ANTHROPIC_API_KEY
4. Tools
OK git
OK this folder is a Git repository
5. Network
OK SAP sandbox (sandbox.api.sap.com)
OK Model API (api.anthropic.com)
All set. Your computer is ready for the course.
LATER lines are fine for now. They mark things you need only in later units, such as the model key.
On real projects you will meet the same ideas under SAP names. Keys become service keys and destinations on SAP BTP, created by an administrator instead of pasted into a file. Your private course folder becomes a project in a team repository with review rules. The habits are the same: never put credentials in code, keep a history of every change, and prove the environment works before blaming the code.
Later units add SAP-side setup when they need it, for example an SAP BTP trial account for the platform units. Each unit begins with a short Set up for Unit N topic that lists exactly what to add and why.
Done when:check_setup.py prints All set (or only LATER lines), and git log shows at least two commits. This folder is the start of the portfolio you build through Unit 14.
Pick one answer for each question. The explanation appears after you choose.
1What does (.venv) at the start of your prompt tell you, and what goes wrong without it?
Answer: B. The course's virtual environment is active, so the terminal uses the private Python with the course libraries. Without it, the terminal uses the system Python, which lacks those libraries, and you get errors such as ModuleNotFoundError.
2Why do keys go in .env and not in your code?
Answer: A. So you can share or publish the code without leaking a secret. python-dotenv reads .env and makes each key available by name, for example SAP_API_KEY, so the key itself never appears in a script.
3Which two lines in .gitignore protect you, and from what?
Answer: D. .env stops Git from ever tracking your keys, so they can't leak into your portfolio. .venv/ keeps the private copy of Python and its libraries out of the repository.
4The check script says MISSING SAP sandbox, but your key is correct. What is the likely cause, and what do you do?
Answer: C. Your network blocks the site, often a company proxy or VPN. The check counts any answer from the site, even "key required", so this is a network problem, not a key problem. Try a home network or ask IT to allow sandbox.api.sap.com.
5You ran pip install and still get ModuleNotFoundError. Why?
Answer: B. Most likely you installed while .venv wasn't active, so the libraries went to a different Python. Activate .venv and run pip install -r requirements.txt again.
6In the check script's output, what does LATER mean?
Answer: A. OK is ready. MISSING must be fixed now, and names the step that fixes it. LATER is needed only in a later unit, such as the model key. You are ready when it prints All set or only LATER lines remain.
7Why use SAP's sandbox and sample data instead of your company's real data while learning?
Answer: D. The sandbox offers the same API shape with demo data, so you learn without any risk of sending company or customer data to an external AI service. Real systems need licensed access and approval.
8On a real SAP project, what replaces your .env file?
Answer: C. Service keys and destinations on SAP BTP, created by an administrator, and a team repository with review rules instead of your private folder. The habit stays the same: secrets never go in code.
Ask a question
Testing: only staff see this
Stuck on something in this layer? Ask it here. Questions are answered in the order they arrive, and the answer appears under My questions.
Sign in (free) to ask a question. You can ask anonymously.