GitHub Copilot Usage Guideline in Dynamics 365 Finance & Operations
Question 31 — Using Copilot responsibly across development, testing and code review.
Interview Question
Model Answer (Short)
GitHub Copilot is an AI assistant that boosts productivity, consistency and code quality in D365 F&O projects — but the developer remains accountable for the final code. The core principles are: treat Copilot as an assistant, always validate business logic against the FDS/TDS, use structured prompts with context and constraints, follow D365 F&O extension and development best practices, and never use generated code without review. Copilot helps with boilerplate/repetitive code in development, unit-test and edge-case generation in testing, and first-level reviews (security, performance, naming, patterns) in code review — always backed by mandatory peer review.
Copilot usage principles
- Copilot is an assistant; the developer is accountable for the final code.
- Always validate business logic against the FDS / TDS.
- Use structured prompts with clear context and constraints.
- Follow D365 F&O extension and development best practices.
- Never use generated code without review.
Where Copilot Helps
In development
- Generate boilerplate code, repetitive logic and service classes.
- Assist with debugging and drafting validation logic.
- Draft form extensions, X++ queries and dynamic queries from a described intent.
- Perform performance and exception-handling reviews of existing/written code via Copilot chat.
In testing
- Generate unit test cases based on the code.
- Produce edge cases using the code and relevant FDS sections as prompts.
In code review (first-level)
- Security — scan for hardcoded passwords/credentials and direct SQL procedures/queries.
- Performance — check for nested loops/while loops and whether threading is used appropriately.
- Readability & naming — check adherence to the naming convention guide.
- Extension pattern adherence and test-coverage gaps.
Example — Structured prompts & generated snippets
Sample prompts used to guide Copilot toward best-practice output:
// Prompt: "Write a table extension for InventTable. In validateWrite,
// block blank ItemId and invalid Item Group."
[ExtensionOf(tableStr(InventTable))]
final class InventTableAbc_Extension
{
public boolean validateWrite()
{
boolean ret = next validateWrite();
if (ret && this.ItemId == '')
{
ret = checkFailed("ItemId cannot be blank.");
}
if (ret && !InventItemGroup::exist(this.ItemGroupId))
{
ret = checkFailed("Invalid Item Group.");
}
return ret;
}
}
Performance-review prompts (Copilot chat)
# Useful review prompts to give Copilot:
- "Avoid nested while-while loops in this method"
- "Convert this while select statement to a dynamic query"
- "Add the required field list and flag any missing fields for the usage"
Risks & Controls
| Risk | Control |
|---|---|
| Incorrect logic | Validate against FDS / TDS |
| Performance issues | Review queries and joins |
| Security gaps | Validate roles and data access |
| Over-reliance on Copilot | Mandatory peer review |
Points the interviewer wants to hear
- Copilot is an assistant — the developer stays accountable.
- Always validate against FDS/TDS and use structured prompts.
- Helps with boilerplate (dev), unit/edge tests (testing), and first-level review (security/perf/naming).
- Key risks: incorrect logic, performance, security gaps, over-reliance.
- Controls include FDS/TDS validation and mandatory peer review.
Likely Follow-up Questions
- Why must every Copilot suggestion be reviewed before use?
- How would you prompt Copilot to generate unit tests from an FDS?
- What security checks can Copilot assist with in code review?
- How do you mitigate over-reliance on AI-generated code?
Key Takeaway
GitHub Copilot accelerates D365 F&O development, testing and code review, but the developer remains accountable. Use structured prompts, always validate against FDS/TDS, follow best practices, and enforce mandatory peer review to control the risks of incorrect logic, performance and security gaps.