Part of our Data Analytics & BI series
Read the complete guideComplete Guide to Power BI Dashboard Development
Building a Power BI dashboard is straightforward. Building one that people actually use, trust, and rely on for daily decisions is an entirely different discipline. The gap between a functional dashboard and an effective one costs organizations thousands of hours in misinterpreted data, ignored reports, and decisions made on gut feeling because the available analytics were too confusing to parse.
This guide covers the complete lifecycle of Power BI dashboard development, from defining the right KPIs and choosing optimal visualizations, to implementing drill-through navigation, bookmarks, mobile layouts, row-level security, and automated refresh schedules. Whether you are building your first executive scorecard or redesigning a sprawling analytics environment with hundreds of reports, the principles here will save you significant rework.
Key Takeaways
- Effective dashboards start with KPI identification, not visual design --- define what decisions the dashboard must support before opening Power BI Desktop
- Limit each dashboard page to 5-7 visuals maximum; information density is the enemy of comprehension
- Drill-through pages and bookmarks replace the need for dozens of separate reports, reducing maintenance burden by 60-70%
- Mobile layouts require dedicated design, not responsive scaling --- treat them as separate deliverables
- Row-level security (RLS) enables a single report to serve multiple audiences without duplicating content
- Scheduled refresh with incremental refresh policies keeps dashboards current without overwhelming gateway resources
- The best dashboards answer questions within 5 seconds of a user opening them
Defining KPIs Before You Design
The KPI Identification Framework
The most common mistake in dashboard development is starting with data. Teams export everything from their ERP or CRM, dump it into Power BI, and build charts around whatever columns look interesting. The result is a dashboard that shows everything and communicates nothing.
Start instead with three questions for every stakeholder who will use the dashboard:
What decisions do you make daily or weekly? A sales director who reviews pipeline health every Monday morning needs different metrics than a CFO who evaluates cash flow quarterly. Map the dashboard to decision cycles, not data availability.
What single number would you check if you could only see one? This reveals the primary KPI. For a logistics manager, it might be on-time delivery rate. For a marketing VP, it might be cost per qualified lead. That number goes front and center, large and unmissable.
What context do you need around that number? The primary KPI needs supporting metrics. An on-time delivery rate of 94% means nothing without knowing whether it was 91% last month (improving) or 97% (declining). Trend lines, period-over-period comparisons, and target benchmarks provide this context.
Document your KPIs in a structured format before touching Power BI:
| KPI | Owner | Data Source | Refresh Frequency | Target | Alert Threshold |
|---|---|---|---|---|---|
| Monthly Recurring Revenue | CFO | Stripe + ERP | Daily | $250K | Below $200K |
| Customer Churn Rate | VP Customer Success | CRM + Billing | Weekly | Below 3% | Above 5% |
| Average Order Value | Sales Director | ERP Orders | Daily | $1,200 | Below $900 |
| First Response Time | Support Manager | Helpdesk | Hourly | Under 2hrs | Over 4hrs |
| Production Yield Rate | Operations VP | Manufacturing ERP | Per shift | Above 96% | Below 92% |
Mapping KPIs to Visual Types
Not every metric deserves the same visual treatment. Power BI offers over 30 native visual types, plus hundreds of custom visuals, but most dashboards need only five or six.
Card visuals for single-number KPIs. These are the large, bold numbers at the top of your dashboard page. Use conditional formatting to change the color based on performance against target --- green for on-track, amber for warning, red for critical. Include a comparison value (vs. last period, vs. target) directly on the card using the subtitle or a small trend indicator.
Line charts for trends over time. Revenue, volume, and performance metrics all benefit from seeing trajectory. Limit line charts to three series maximum. Beyond that, colors blur together and the chart becomes unreadable. If you need to compare more than three series, use small multiples (a grid of individual line charts) instead.
Bar charts for categorical comparisons. Sales by region, revenue by product line, tickets by priority. Horizontal bar charts work better when category labels are long (product names, customer names). Always sort bars by value, not alphabetically --- the eye should immediately find the largest and smallest values.
Tables and matrices for detail-level data. When users need to see specific numbers rather than visual patterns, a table is the right choice. Use conditional formatting (data bars, color scales, icon sets) to add visual weight to tabular data without sacrificing precision.
Maps only when geography is a meaningful dimension. If your sales data spans 40 countries, a filled map tells a geographic story that a bar chart cannot. If your data covers three regions, skip the map --- it wastes space and adds no insight.
Dashboard Layout and Visual Design
The F-Pattern Layout
Eye-tracking research consistently shows that users scan dashboards in an F-pattern: across the top, then down the left side, with decreasing attention toward the bottom-right. Design your layout accordingly.
Top row: Primary KPIs in card visuals. These are the numbers the user came to see. Make them large (at least 200px tall) with clear labels, values, and trend indicators. Three to five cards across the top is ideal.
Left column: The main analytical visual --- typically a line chart showing the primary trend (revenue over time, orders over time, support tickets over time). This is the visual that anchors the narrative.
Center area: Supporting visuals that provide breakdowns of the top-row KPIs. If the top-row shows total revenue, the center area might show revenue by product category, revenue by region, and revenue by customer segment.
Bottom section: Detail tables, secondary metrics, or contextual information. This area gets the least attention, so place lower-priority data here.
Color Strategy
Power BI's default color palette is acceptable for prototyping but insufficient for production dashboards. Define a deliberate color strategy:
Semantic colors. Reserve green, amber, and red exclusively for performance indicators (good, warning, bad). Never use these colors for categorical data. If your bar chart uses green for "North America" and red for "Europe," users will unconsciously read Europe as underperforming even when the data says otherwise.
Brand colors. Use your organization's brand palette for categorical data. If your brand uses navy blue, slate gray, and teal, those become your bar chart and line chart colors. This makes dashboards feel like part of the organization's communication, not a generic analytics tool.
Grayscale for context. Use light grays for targets, benchmarks, and previous-period comparisons. These reference lines should be visible but should not compete with the primary data for attention.
Limit to 5-6 colors total. More than six distinct colors in a single dashboard page creates visual noise. If your data has more than six categories, group the smaller ones into "Other."
White Space and Information Density
Every visual you add to a dashboard page reduces the effectiveness of every other visual on that page. This is not an opinion --- it is a function of human attention. Research from the Nielsen Norman Group shows that dashboard comprehension drops sharply after seven visual elements per screen.
Leave intentional white space between visuals. Power BI's snap-to-grid feature helps maintain consistent spacing. Use divider lines or subtle background rectangles to group related visuals, but do not overuse them --- too many grouping elements create visual clutter themselves.
A well-designed single-page dashboard with 5-7 visuals outperforms a cluttered page with 15 visuals every time. Move secondary analysis to drill-through pages rather than cramming it onto the main view.
Drill-Through Pages and Navigation
Building Drill-Through Pages
Drill-through is Power BI's mechanism for moving from summary to detail without creating separate reports. A user right-clicks on a data point (a product, a region, a customer) and navigates to a detail page pre-filtered to that selection.
To build effective drill-through pages:
Step 1: Create the detail page. Add a new page to your report. In the Visualizations pane, drag the drill-through field (for example, Product Name) into the "Drill through" well. Power BI automatically adds a back button.
Step 2: Design the detail layout. The detail page should answer the next level of questions. If the summary page shows revenue by product, the drill-through page for a specific product might show revenue trend, margin analysis, top customers for that product, and recent orders.
Step 3: Add cross-filter context. Any slicers or filters on the summary page automatically apply to the drill-through page. Ensure your detail page visuals respect these filters --- test with different slicer combinations to verify behavior.
Step 4: Customize the back button. The default back button is small and easy to miss. Replace it with a larger, clearly labeled button. Use a text box or shape with an action set to "Back" to create a more visible navigation element.
Implementing Bookmarks for Views
Bookmarks capture the state of a report page --- which filters are applied, which visuals are visible, and what selections are active. They enable multiple "views" within a single page, reducing the total number of pages in your report.
Common bookmark patterns include:
Toggle between chart and table. Place a chart and a table in the same position on the page. Create two bookmarks --- one with the chart visible and the table hidden, one reversed. Add buttons labeled "Chart View" and "Table View" that activate the respective bookmarks.
Preset filter combinations. A sales manager might want to quickly switch between "My Region" and "All Regions" or between "This Quarter" and "Year to Date." Bookmarks can capture these filter states, and a row of buttons at the top of the page enables one-click switching.
Guided analytics narratives. Create a sequence of bookmarks that walk the user through a story: "Overall performance → Regional breakdown → Problem areas → Recommended actions." A "Next" button advances through the sequence. This pattern is particularly effective for executive presentations where the dashboard serves as the slide deck.
Page Navigation with Buttons
Beyond drill-through and bookmarks, Power BI supports page navigation buttons that function like a website's navigation menu. Create a consistent navigation bar across all report pages using shapes with "Page navigation" actions.
Design a horizontal navigation bar at the top of each page with buttons for each section: Overview, Sales, Operations, Finance, HR. Highlight the current page's button using conditional formatting or a different background color. This transforms a multi-page report from a confusing collection of tabs into a structured analytical application.
Mobile Dashboard Design
Why Responsive Is Not Enough
Power BI Desktop lets you create a mobile layout for any report page using the "Mobile layout" view. This is not optional for production dashboards. Over 40% of Power BI content is consumed on mobile devices, and that percentage increases for field sales teams, executives, and operations managers who are rarely at their desks.
The mobile layout is not a responsive rescaling of your desktop layout. It is a separate design that must be created intentionally. Simply rearranging the same visuals in a vertical stack produces a poor mobile experience. Mobile dashboards require different design decisions.
Mobile Design Principles
Prioritize ruthlessly. A desktop dashboard page might have seven visuals. The mobile version should have three to four. Show only the most critical KPIs and the primary analytical visual. Move everything else to secondary pages.
Stack vertically. Mobile screens are tall and narrow. Arrange visuals in a single column. Each visual should span the full width of the mobile canvas and be tall enough to be readable without squinting --- at least 200px for cards and 300px for charts.
Increase font sizes. Text that is readable at 12px on a 27-inch monitor is unreadable at 12px on a 6-inch phone screen. Increase all text sizes by 40-60% in your mobile layout. Card visual values should be at least 28px. Axis labels should be at least 14px.
Use tap-friendly interactions. On mobile, users tap rather than hover. Tooltips are harder to access. Ensure that the most important data is visible without interaction. Where drill-through is needed, use clearly labeled buttons with large tap targets (at least 44px square per Apple's Human Interface Guidelines).
Test on real devices. The Power BI mobile app behaves slightly differently from the mobile layout preview in Power BI Desktop. Publish your report to the Power BI service and open it in the mobile app on both iOS and Android before signing off on the design. Check landscape orientation as well --- many users rotate their phones for better chart viewing.
Mobile-Specific Visuals
Some visuals work better on mobile than others. KPI cards, gauge charts, and single-value displays are excellent because they communicate a number at a glance. Line charts work well if limited to one or two series. Bar charts should be horizontal on mobile to avoid truncated labels.
Avoid matrix visuals on mobile --- they require horizontal scrolling, which is frustrating. Replace them with a filtered table showing only the most important columns, or use a bar chart that conveys the same comparison.
Row-Level Security (RLS)
Why RLS Matters
Row-level security restricts which data rows a user sees based on their identity. Without RLS, you face two undesirable options: either everyone sees all data (a security and confidentiality risk), or you create duplicate reports for each audience (a maintenance nightmare).
RLS solves this by applying filters automatically based on who is viewing the report. A regional sales manager sees only their region's data. A department head sees only their department's metrics. The CFO sees everything. All from the same report.
Implementing RLS in Power BI
Step 1: Define roles in Power BI Desktop. Go to Modeling → Manage Roles → Create. Name the role (for example, "Regional Manager"). Add a DAX filter expression on the relevant table:
[Region] = USERPRINCIPALNAME()
For more complex scenarios, use a security table that maps user email addresses to the data they should see. This approach is more maintainable than hardcoding usernames into role definitions.
Step 2: Create a security mapping table. In your data model, create a table called SecurityAccess with columns for UserEmail and the dimension values they can access (Region, Department, CostCenter). Create a relationship between this table and your fact/dimension tables.
The role filter expression then becomes:
[UserEmail] = USERPRINCIPALNAME()
Applied to the SecurityAccess table, this filter propagates through relationships to all connected tables, restricting the user to only their authorized data.
Step 3: Test in Power BI Desktop. Use Modeling → View As → select the role and enter a test username. Verify that the visuals show only the expected data. Test edge cases: users with access to multiple regions, users with no matching rows (should see blank visuals, not all data), and the admin role (should see everything).
Step 4: Assign users to roles in the Power BI service. After publishing, go to the dataset settings → Security → assign Azure AD users or security groups to each role. Use security groups rather than individual users for easier administration.
Dynamic RLS Patterns
For organizations with complex hierarchies, static roles become unwieldy. Dynamic RLS uses the security mapping table approach combined with DAX functions to handle hierarchical access.
A common pattern for manager hierarchy: the SecurityAccess table includes both direct access rows and inherited access rows. A VP who manages three regional managers automatically sees all three regions' data. The DAX filter on the security table checks both direct and inherited permissions:
CONTAINS(
FILTER(SecurityAccess, SecurityAccess[UserEmail] = USERPRINCIPALNAME()),
SecurityAccess[Region], Fact[Region]
)
This approach scales to organizations with hundreds of users and complex org charts without requiring role changes every time someone is hired, promoted, or transferred.
Refresh Schedules and Data Pipeline
Scheduled Refresh Configuration
A dashboard with stale data is worse than no dashboard. Users who encounter outdated numbers once will stop trusting the dashboard entirely, and that trust is nearly impossible to rebuild.
Power BI supports up to 48 scheduled refreshes per day on Premium capacity (8 per day on Pro). Configure your refresh schedule to align with decision cycles:
Morning refresh (6:00 AM). Processes overnight data so that when users open the dashboard at 8:00 AM, they see yesterday's complete picture. This is the most common pattern and satisfies 80% of use cases.
End-of-business refresh (5:00 PM). Captures the full day's activity for teams that review daily performance before leaving. Useful for sales teams tracking daily targets.
Hourly refresh. Reserved for operational dashboards where near-real-time awareness is critical: customer support queue depth, manufacturing line status, logistics tracking. Requires Premium capacity or Premium Per User licensing.
Incremental Refresh
For datasets exceeding a few million rows, full refresh becomes slow and resource-intensive. Incremental refresh tells Power BI to only refresh recent data (for example, the last 7 days) while keeping historical data cached.
Configure incremental refresh in Power BI Desktop using the RangeStart and RangeEnd parameters on your date column. Define the incremental range (refresh the last N days) and the historical range (keep data for the last N years). Power BI partitions the dataset and refreshes only the partitions that fall within the incremental range.
This reduces refresh time from hours to minutes for large datasets. A retail company with 50 million transaction rows refreshed their full dataset in 45 minutes. After implementing incremental refresh with a 7-day window, the refresh completed in under 3 minutes.
Gateway Best Practices
The on-premises data gateway is the bridge between your on-premises data sources (SQL Server, Oracle, file shares) and the Power BI service. Gateway performance directly impacts refresh reliability.
Install the gateway on a dedicated server. Do not install it on a developer's laptop or a shared application server. The gateway needs consistent availability and network access to all data sources.
Configure connection pooling. In the gateway configuration app, enable connection pooling for data sources with high query volume. This reuses database connections rather than creating new ones for each query, significantly reducing refresh time.
Monitor gateway health. Power BI provides gateway logs in the Power BI service admin portal. Set up alerts for failed refreshes. A gateway that fails silently leaves dashboards displaying stale data without any indication to users that the numbers are outdated.
Use gateway clusters for high availability. Install the gateway on two or more servers in cluster mode. If one server goes down, the other takes over automatically. This is essential for production dashboards that support daily business operations.
Performance Optimization
Measuring Dashboard Performance
Power BI Desktop includes a Performance Analyzer (View → Performance Analyzer) that records the time each visual takes to render. Start recording, interact with your dashboard, and review the results.
Visuals that take more than 2 seconds to render need optimization. Common causes include:
Complex DAX measures. Measures that iterate row by row (using SUMX, FILTER with large tables, nested CALCULATE) are exponentially slower than measures that leverage the storage engine. Rewrite iterative measures to use filter context where possible.
Too many visuals on one page. Each visual sends a separate query to the dataset. A page with 15 visuals sends 15 queries, and Power BI renders them in parallel. Reduce the visual count to 7 or fewer.
High-cardinality columns in visuals. A table visual showing 10,000 rows or a bar chart with 500 categories will be slow regardless of DAX optimization. Filter or aggregate the data to show a manageable number of rows (typically under 100 for tables, under 20 for charts).
DAX Optimization Techniques
Use variables. Variables (VAR) are evaluated once and reused, preventing redundant calculations:
Revenue Growth =
VAR CurrentRevenue = [Total Revenue]
VAR PriorRevenue = CALCULATE([Total Revenue], DATEADD(Dates[Date], -1, YEAR))
RETURN
DIVIDE(CurrentRevenue - PriorRevenue, PriorRevenue)
Avoid FILTER when CALCULATE suffices. CALCULATE([Measure], Table[Column] = "Value") is faster than CALCULATE([Measure], FILTER(Table, Table[Column] = "Value")) because the former uses the storage engine while the latter forces a row-by-row scan.
Pre-aggregate in Power Query. If your dashboard only shows monthly totals, aggregate the daily data to monthly in Power Query before it enters the data model. This reduces model size and speeds up every subsequent calculation.
Query Folding
When connecting to SQL-based sources, Power Query can "fold" transformations back to the source database. This means the database handles filtering, grouping, and joining rather than Power BI processing raw data in memory.
Check whether your transformations fold by right-clicking a step in Power Query and looking for "View Native Query." If the option is available, the step folds. If it is grayed out, the step runs locally in Power BI, which is slower for large datasets.
Transformations that typically fold: column selection, row filtering, grouping, sorting, joins between tables on the same source, data type changes. Transformations that typically break folding: adding custom columns with M expressions, merging tables from different sources, pivoting/unpivoting.
Governance and Deployment
Workspace Architecture
Organize your Power BI workspaces to match your organization's structure and data governance requirements. A common pattern uses three tiers:
Development workspaces. Each development team or project gets a workspace for building and iterating on reports. Access is limited to developers. Naming convention: DEV - Department - Project.
Staging workspaces. Completed reports move to staging for review and testing. Business stakeholders validate data accuracy and usability. Naming convention: STG - Department.
Production workspaces. Approved reports are published to production workspaces. These are the workspaces that end users access. Changes are never made directly in production. Naming convention: PRD - Department.
Deployment Pipelines
Power BI deployment pipelines automate the promotion of content from Development to Staging to Production. This eliminates the manual process of downloading a .pbix file and re-uploading it, which is error-prone and does not track versions.
Configure deployment rules to automatically update data source connections when promoting between stages. Development reports connect to a dev database, staging to a staging database, and production to the production database. The deployment pipeline handles the connection swap automatically.
Version Control and Documentation
Power BI .pbix files are binary and do not work well with traditional Git workflows. However, you can mitigate this limitation:
Use Power BI Projects (.pbip). The .pbip format saves reports as a folder of JSON and TMDL files that are text-based and Git-friendly. This is the recommended approach for teams that want proper version control.
Maintain a change log. Document every significant change to a report: new measures added, data sources changed, visual layouts modified. Include the date, author, and reason for the change.
Screenshot key pages. Before making significant layout changes, screenshot the current state. This provides a visual history that supplements the technical change log.
If your organization needs help establishing Power BI governance or building dashboards that scale, ECOSIRE's Power BI dashboard development services provide end-to-end support from KPI definition through production deployment.
Common Anti-Patterns to Avoid
The "Everything Dashboard"
A single dashboard that tries to serve executives, managers, analysts, and operations teams serves none of them well. Executives need high-level KPIs with trend context. Analysts need granular data with flexible filtering. These are fundamentally different use cases that require different designs.
Build separate dashboards for each audience, connected by a shared semantic model. The underlying data model is the same, ensuring consistency. The visual layer is tailored to each audience's needs and decision-making context.
The "Pretty But Useless" Dashboard
Aesthetics matter, but they are not the goal. A dashboard filled with gradient backgrounds, 3D charts, unnecessary animations, and decorative images may look impressive in a screenshot but fails in daily use. Every visual element that does not communicate data is a distraction.
The most effective dashboards are visually clean and data-dense. They use white space, clear typography, and semantic color to guide the eye to what matters. They feel like a well-designed tool, not an art project.
The "Set It and Forget It" Dashboard
Dashboards require ongoing maintenance. Data sources change schemas, business requirements evolve, and user feedback reveals design gaps. Schedule quarterly dashboard reviews where you assess usage metrics (Power BI provides view counts and user lists), gather user feedback, and iterate on the design.
Dashboards that are never updated become irrelevant within 6-12 months. Treat them as living products, not one-time deliverables.
For teams looking to build high-impact dashboards without the learning curve, ECOSIRE offers comprehensive Power BI services including KPI workshops, dashboard design, and ongoing optimization. If you have questions about your specific use case, reach out to our analytics team for a consultation.
FAQ
How many visuals should a Power BI dashboard page contain?
Limit each page to 5-7 visuals. Research on dashboard comprehension shows that users process information less accurately as visual density increases. If you need more than seven visuals, use drill-through pages, bookmarks, or additional report pages rather than cramming everything onto one screen. The executive summary page should have even fewer --- three to five KPI cards and one primary chart is often ideal.
What is the difference between a dashboard and a report in Power BI?
In Power BI's terminology, a "dashboard" is a single-page canvas in the Power BI service that displays pinned tiles from one or more reports. A "report" is a multi-page interactive document created in Power BI Desktop. In practice, most people use "dashboard" to mean any analytical display, regardless of whether it is technically a dashboard or a report. For most use cases, building a multi-page report with navigation buttons provides a better user experience than pinning tiles to a dashboard canvas.
How often should Power BI data refresh?
Align refresh frequency with decision cycles, not data availability. Daily morning refresh (before business hours) satisfies 80% of use cases. Operational dashboards that support real-time decisions (support queues, manufacturing status) may need hourly refresh, which requires Premium capacity. Financial dashboards used for monthly review can refresh weekly. Over-refreshing wastes gateway resources and increases costs without improving decision quality.
Can I embed Power BI dashboards in my own web application?
Yes. Power BI Embedded allows you to embed reports and dashboards in custom web applications using JavaScript APIs. You need either Power BI Embedded capacity (A-SKU) or Power BI Premium (P-SKU or F-SKU via Fabric). The embedded report maintains all interactive features: filtering, drill-through, bookmarks, and RLS. This is how many SaaS platforms provide analytics to their customers without requiring them to have Power BI licenses.
How do I handle row-level security for users outside my organization?
For external users (customers, partners), use the "App owns data" embedding pattern with Power BI Embedded. Your application authenticates the user and generates an embed token with an effective identity that specifies their RLS role and username. The external user never interacts with the Power BI service directly and does not need a Power BI license. The RLS rules you defined in the data model apply to the embedded view, ensuring each external user sees only their authorized data.
Written by
ECOSIRE Research and Development Team
Building enterprise-grade digital products at ECOSIRE. Sharing insights on Odoo integrations, e-commerce automation, and AI-powered business solutions.
Related Articles
Power BI AI Features: Copilot, AutoML, and Predictive Analytics
Master Power BI AI features including Copilot for natural language reports, AutoML for predictions, anomaly detection, and smart narratives. Licensing guide.
Power BI Data Modeling: Star Schema Design for Business Intelligence
Master Power BI data modeling with star schema design, fact and dimension tables, DAX measures, calculation groups, time intelligence, and composite models.
DAX Formulas Every Business User Should Know
Master 20 essential DAX formulas for Power BI. CALCULATE, time intelligence, RANKX, context transition, iterators, and practical business examples.
More from Data Analytics & BI
DAX Formulas Every Business User Should Know
Master 20 essential DAX formulas for Power BI. CALCULATE, time intelligence, RANKX, context transition, iterators, and practical business examples.
Power BI Embedded: Adding Analytics to Your Application
Embed Power BI analytics in your SaaS app. Covers authentication, multi-tenant RLS, capacity sizing, JavaScript SDK, custom themes, and Fabric pricing.
Migrating from Excel to Power BI: Step-by-Step Guide
Complete guide to migrating from Excel to Power BI covering formula translation, data model creation, Power Query, validation, and decommissioning.
The Complete Guide to Power BI + Odoo Integration
Connect Power BI to Odoo ERP for advanced analytics. PostgreSQL direct queries, key tables, sales/inventory/HR dashboards, and incremental refresh setup.
Measuring AI ROI in Business: A Framework That Actually Works
A practical framework for measuring AI return on investment covering direct savings, productivity gains, revenue impact, and strategic value across departments.
Building Financial Reporting Dashboards: KPIs, Design, and ERP Integration
Design financial reporting dashboards that drive decisions. Learn which KPIs to track, dashboard design principles, and ERP integration best practices.