Skip to content

1. Define the application ​

1.1 Requirements ​

Write these down before opening Studio (one page is enough):

QuestionLeave Management answer
Business problemleave is tracked in email and spreadsheets; balances are wrong; approvals get lost
Users and rolesemployees, managers, HR administrators
Main use casesrequest leave, approve or reject, see balance, manage leave types, report on leave
Functionalleave types with yearly entitlement; request with dates and reason; two-step approval; balance per employee per year
Non-functionalworks on phones; approvals answered within 2 days; auditable
Integrationspayroll export (later)
Compliancekeep an audit trail; employees see only their own leave
Reportingleave summary, by department, monthly trend, exceptions

1.2 Application specification ​

ItemValue
Plugin idleave-management (lowercase, digits, dashes; cannot change later)
NameLeave Management
Version1.0.0
Vendor / licenseAcme Corp / Proprietary
Categorycustom
Dependenciesnone (HCM's employee data is referenced by id)
StructureEmployees, Leave Types, Leave Policies, Leave Requests, Approvals, Balance, Calendar, Reports

1.3 Create it in Studio ​

  1. Create new, Plugin (the wizard).
  2. Name, then type:
TypeChoose when
Full applicationa complete module with data, screens and roles (this one)
UI pluginonly screens over existing data
Backend / service pluginlogic in code, optionally its own container
Integrationconnectors and integration flows
Extensionenhancing an installed plugin
Country / industry packlocalized rules and forms
  1. Add the first data, roles, screens (you will refine them in the next chapters).
  2. Create plugin. This is your development environment: a workspace you can validate, snapshot and publish.

Details: Create a plugin.

1.4 Design the architecture ​

Application
 |- UI (pages, forms, dashboards)      what people see
 |- Entities                           the records
 |- Services and APIs                  how data and logic are reached
 |- Workflows                          multi-step, multi-person
 |- Events, jobs, queues               things that happen, run on time, run later
 |- Reports and integrations           output and outside systems
 |- Security                           who can do what

Decide these before building:

QuestionRule of thumb
What belongs in this application?one business capability; reuse HCM's employees instead of copying them
Reusable or extension?a common piece (approval pattern, block) is reusable; a company-specific change is an extension
API or screen-only?expose an API only if another system needs it
Synchronous or asynchronous?a check that must block a save is synchronous (rule); slow or optional work is asynchronous (workflow, job)
Workflow or rule?one check on a save is a rule; several people over days is a workflow
Scheduled job?anything triggered by the clock, not by a person

Next: Data and security first.