Setup Recipes
A setup recipe decides what a new tenant becomes. The recipes live in src/Modules/CrestApps.Almohaseb/Recipes and appear on the setup screen and in the tenant editor under the Almohaseb category.
| Recipe | Display name | Use it for |
|---|---|---|
almohaseb-business-cstore | Almohaseb - Convenience store | A convenience store, gas station or other retail business that runs a cash register |
almohaseb-business-service | Almohaseb - Service business | A service business that bills customers with service tickets and invoices |
almohaseb-firm | Almohaseb - Accounting firm | The tenant of an accounting firm |
almohaseb-platform | Almohaseb - Platform | The Default tenant of a hosted platform only |
Business recipes
Both business recipes enable the same features, except that the service recipe also enables CrestApps.Almohaseb.Sales.Services (Service tickets & invoices) and the c-store recipe CrestApps.Almohaseb.Retail.CashDrawer (Cash drawer, with starter drawer reasons and US denominations) CrestApps.Almohaseb.Retail.DailyClose (Daily close, with card terminal, EBT and WIC tenders) CrestApps.Almohaseb.Retail.CheckCashing (Check cashing) and CrestApps.Almohaseb.Retail.Lottery (Lottery, with twelve display boxes and the Lottery and Lottery payouts categories compared with the counts) and CrestApps.Almohaseb.Retail.Fuel (Fuel, with Regular, Mid-grade, Premium and Diesel grades), and they differ in the business day and the starter sales categories.
| Step | What it does |
|---|---|
Content | Seeds the starter data of the business: the Michigan sales tax exemption reasons, starter sales categories (c-store: Grocery, Food, Beer and wine, Liquor, Tobacco, Lottery, Deposit, Bottle Refund, Lottery payouts, Inventory; service: Labor, Parts and materials, Materials) and vendor categories (Suppliers; Rent, utilities and services; Other expenses; Equipment and vehicles). It is a starting point the business changes to its own. |
Feature | Enables the Orchard Core admin, deployment, features, navigation, recipes, resources, roles, settings, themes and users features, the TheAdmin and SafeMode themes, CrestApps.Almohaseb.Ledger (Accounting) CrestApps.Almohaseb.Imports (Imports) CrestApps.Almohaseb.Contacts (Customers & vendors) CrestApps.Almohaseb.Items (Sales categories) CrestApps.Almohaseb.Sales (Sales & receivables) CrestApps.Almohaseb.Purchases (Purchases & payables), CrestApps.Almohaseb.Assets (Fixed assets), CrestApps.Almohaseb.Mileage (Trip log), CrestApps.Almohaseb.Documents (Documents & attachments), CrestApps.Almohaseb.Banking (Banking) with CrestApps.Almohaseb.Banking.Plaid (Bank feeds, which works once the platform sets its Plaid account), CrestApps.Almohaseb.SalesTax (Sales tax returns, monthly, prices without tax, in the Settings step), CrestApps.Almohaseb.Payroll (Payroll: a 2.7% state unemployment rate on $9,500 in the Settings step, the Detroit city tax, and the 2025–2026 federal, Michigan, Massachusetts and Virginia tax content through the AlmohasebPayrollTaxContent step, all unverified), the 1099 boxes of 2025 and 2026 through the AlmohasebForm1099Content step (unverified), and CrestApps.OrchardCore.Reports with CrestApps.OrchardCore.Reports.OpenXml CrestApps.Almohaseb.Reports (Operational reports) and CrestApps.Almohaseb.Reports.Dashboard (Dashboard widgets, with OrchardCore.AdminDashboard and the profit and category margin widgets; the financial statements, the sales, purchase, expense, other income and performance reports, and their Excel export). The Content step also seeds the payment methods (Cash, Check, Credit card, On account). Accounting pulls in the foundation, the admin UI and jobs; Customers & vendors pulls in Orchard Core contents and the CrestApps content, phone and address fields. |
Themes | Sets SafeMode as the site theme and TheAdmin as the admin theme. |
Settings | Writes the starting BusinessProfileSettings: the fiscal year starts in January, and the business day starts at 04:00 (convenience store) or 00:00 (service business). |
{
"name": "Settings",
"BusinessProfileSettings": {
"FiscalYearStartMonth": 1,
"BusinessDayStartsAt": "04:00:00"
}
}
The recipes do not enable the foundation, admin UI or jobs features directly. Those are EnabledByDependencyOnly, and a recipe cannot enable them; it enables Accounting, which depends on them. See Architecture.
The rest of the business profile (name, address, EIN) is entered after setup in Settings > Business profile. See Foundation.
Platform recipe
almohaseb-platform sets up the Default tenant that hosts every business. It enables the same admin features as the business recipes plus OrchardCore.AuditTrail, OrchardCore.Tenants and CrestApps.OrchardCore.TenantHierarchy.Platform, which lets the platform turn tenants into firms. It does not enable Accounting: the platform keeps no books. It also enables OrchardCore.HomeRoute and makes the admin dashboard the home page, so the root of the platform opens the admin.
Firm recipe
almohaseb-firm sets up the tenant of an accounting firm: the admin, users, roles, the audit trail, OrchardCore.HomeRoute with the admin dashboard as the home page, and CrestApps.Almohaseb.Firm (Accounting firm, see Firm) with six services in the Content step. The compliance board, templates and client communications join it as they are built. To run the firm's clients as its child tenants, the platform makes the firm tenant a parent under Multi-Tenancy > Tenant Hierarchy; that needs each tenant to have its own host name (see Tenants on one address).
Tenants on one address
On a single address, such as a test machine behind one tunnel, tenants can use URL prefixes instead of host names: the platform at /, the firm at /accountant, each business at its own prefix such as /cornermarket. In the platform, Multi-Tenancy > Tenants > Add Tenant, enter the URL prefix, choose the recipe and Create & Setup. Each tenant keeps its own users and sign-in. Prefixed tenants are ordinary tenants: the tenant hierarchy, which lets a firm open its clients without signing in again, works only with host names (accountant.example.com, cornermarket.accountant.example.com), because tenants on one host share its cookies.
Local setup values
Use the time zone of the business, for example America/Detroit, when you set up a business tenant. Business dates and the business day are computed in that time zone.