-
AppSource: Country-Specific Extensions in the Same Offering
To streamline and improve the management of country-specific extensions for your Business Central offering on AppSource, I propose the following solution:
1. Introduction of a New Section in Technical Configuration in Marketplace Offering (Partner Center)
- Country-Specific Extensions: This new section would allow partners to define and manage extensions specific to each country or a group of countries.
Key Features:
- Country Selection: Ability to select one or more countries for which the extension is applicable. For closely related countries like Germany and Austria, you can define a single extension for both.
- Extension Management: It would also be nice if these country-specific extensions didn't show up in Extension Management and could be uninstalled or updated with the main App.
2. Integration with AppSource Backend API
Enhancements to the API:
- New Endpoints: Introduce new API endpoints to support the creation, update, and deletion of country-specific extensions.
3. Enhancements to BCContainerHelper
E.g. New CmdLets:
- New-AppSourceCountryExtension: This CmdLet will facilitate the creation of new country-specific extensions from the command line.
- Example Usage: New-AppSourceCountryExtension -Name "German Delivery Reminder" -Countries "DE", "AT" -ExtensionFiles "path/to/extension/file"
4. Benefits of the Proposed Solution
- Scalability: Allows for scalable and maintainable management of country-specific extensions.
- Efficiency: Reduces the complexity of maintaining separate offerings for each country.
- Compliance: Ensures that extensions meet local regulatory and business requirements.
- Ease of Use: Simplifies the submission process through the Partner Center and BCContainerHelper.
A good example of country specific code is in Germany and Austria there are additional tables for Issued Delivery Reminder Header to remind the vendor that he/she has not delivered good as agreed.
Another example is the Swiss version of Business Central, where there is an additional payment logic called QR Bill, where you get the amount and bank information in a QR barcode to pay your supplier invoices.
By implementing this solution, you will be able to manage country-specific extensions more effectively, ensuring better quality integrations and easier maintenance across different regions.
-
AppSource: Add per-tenant subscription model
In many business scenarios, the Business Central ERP system is extensively connected to various other systems and services. These connections often include:
- Integration with CRM Systems: Where data from multiple users is funneled through a single point of integration.
- Automated Workflows and Processes: That handle data at an organizational level rather than an individual user level.
- Third-Party Services and APIs: Where the volume of interactions is based on the organizational needs, not individual user actions.
With these types of integrations, the value derived from the ERP system is tied more to the organization’s overall usage rather than the number of individual users. As such, a per-user licensing model does not accurately reflect the usage patterns or provide cost-effective pricing.
New Subscription Options
To address this, we propose extending the pricing and availability to include:
- Monthly Price Per Tenant/Month: A flat rate charged monthly per tenant, accommodating extensive system integrations and automated processes.
- Annual Price Per Tenant/Year: An annual subscription that offers a discount compared to monthly billing, encouraging long-term commitments and providing cost savings.
Benefits of Per-Tenant Subscription
- Simplified Billing: Organizations can manage their subscription with a single monthly or annual fee, reducing the complexity of tracking individual user licenses.
- Cost Efficiency: For companies with many system integrations or automated processes, the per-tenant model can be more cost-effective than paying for numerous individual user licenses.
- Scalability: Allows businesses to scale their operations and integrations without worrying about increasing user license costs.
- Aligned Value Proposition: The per-tenant model aligns the cost with the actual usage and value derived from the system, particularly for integrations and automated workflows.
By implementing these steps, Business Central can better serve businesses that rely heavily on system integrations and automated workflows, providing a more flexible and cost-effective subscription model.
-
Cloud-optimize all Scope OnPrem in the base app
To address the issue of the ERP system Business Central where on-premises code needs to be cloud-optimized, it's essential to focus on streamlining the process for both customers and partners while also enhancing the overall system's efficiency and reducing costs associated with non-cloud-optimized code.
Despite the universal code name, GitHub counts 1.9k files with scope onprem in the base app repo. (https://github.com/search?q=repo%3Amicrosoft%2FBusinessCentralApps+scope+onprem&type=code)
Here are some ideas to improve this situation:
1. Code Refactoring and Modernization Initiative
- Audit and Refactor: Conduct a comprehensive audit of the existing Business Central base application code to identify areas that are not cloud-optimized. Prioritize refactoring this code to be cloud-friendly.
- Automated Tools: Develop or integrate automated tools to help identify non-cloud-optimized code and suggest or even implement optimizations. This can significantly reduce the manual effort required.
2. Incentive Program for Partners
- Incentivize Cloud Optimization: Create an incentive program for partners who contribute to cloud-optimizing the codebase. This could include financial rewards, certification benefits, or marketing support.
- Collaborative Platform: Establish a collaborative platform where partners can share best practices, tools, and code snippets for optimizing code for the cloud.
3. Enhanced Development Guidelines
- Cloud-First Development: Update development guidelines to enforce a "cloud-first" approach, ensuring that all new code is inherently cloud-optimized. I have a feeling that every partner is building their only local file access or printer agent base on https://github.com/microsoft/BCTech/tree/master/samples/BCAgent.
- Training and Resources: Provide extensive training and resources for developers on best practices for cloud optimization, including workshops, online courses, and documentation.
4. Gradual Deprecation of Non-Cloud-Optimized Code
- Deprecation Policy: Announce a clear timeline for deprecating non-cloud-optimized code within the base application. This gives customers and partners a clear horizon to plan for necessary changes.
- Migration Assistance: Offer migration assistance tools and services to help customers transition their custom code and configurations to be cloud-optimized.
5. Performance and Cost Analysis Tools
- Real-Time Analytics: Implement tools that provide real-time analytics on the performance and cost implications of running non-cloud-optimized code. This data can help customers understand the benefits of cloud optimization.
- Cost-Saving Reports: Generate regular reports for customers showing potential cost savings from cloud optimization, motivating them to make necessary changes.
6. Simplified Licensing Model
- Unified Licensing: Simplify the licensing model by merging the costs associated with cloud-optimized and non-cloud-optimized code. This can be done by offering a single, more straightforward licensing fee that incentivizes cloud optimization without penalizing users.
- Subscription Models: Introduce flexible subscription models that include both on-premises and cloud-optimized features, making it easier for customers to transition without immediate financial penalties.
7. Enhanced Support and Customer Communication
- Dedicated Support Channels: Establish dedicated support channels for cloud optimization issues, providing expert assistance to customers and partners facing challenges.
- Transparent Communication: Maintain transparent communication with customers about the benefits and necessity of cloud optimization, including regular updates on progress and available tools.
8. Legacy System Support
- Legacy Compatibility Layers: Develop compatibility layers that allow legacy, non-cloud-optimized code to run in a cloud environment with minimal performance penalties, buying time for full optimization.
- Phased Rollout: Implement a phased rollout strategy for cloud optimizations, allowing customers to gradually adapt their systems without abrupt changes.
By adopting these strategies, you can facilitate the transition to a fully cloud-optimized Business Central environment, reducing costs, improving performance, and enhancing the overall customer experience.
-
Automated License Renewal for Business Central OnPrem
The current process for importing new Business Central licenses into the customer database is manual and involves using the PowerShell cmdlet. With the introduction of subscription licenses by Microsoft, which have an expiration date and require updating every six months, this manual process is inefficient and not scalable. Starting April 2025, subscription licenses will be the only option for new OnPrem customers, further increasing the need for automation.
I propose that Business Central should have the capability to automatically update the license itself or allow partners to download a new license via Web Services. This would enable partners to update licenses for their customers at scale. Specifically, I would like the following features:
- Automated License Update: An automate update of new Business Central licenses in the customer database would be the best solution. This automation should be integrated within the Business Central platform (Service Tier).
- Web Services for License Download: Enable partners to download new licenses via Web Services, facilitating the automatic update process.
Incorporating this feature would streamline the process of updating Business Central licenses, ensuring compliance with Microsoft's new licensing requirements. It would also enhance scalability as more customers adopt the subscription model, save time, and reduce the potential for manual errors.
For further details on the announcement, please refer to: Microsoft Business Center: https://businesscenter.mbs.microsoft.com/#contentdetail/spanews1
Benefits
- Efficiency: Automates a previously manual process, saving time and resources.
- Scalability: Supports a larger number of customers as the subscription model becomes more widespread.
- Accuracy: Reduces the potential for human error during the license update process.
Implementing this feature would greatly benefit partners and customers by making the license renewal process more efficient, reliable, and scalable.
-
Improved Partner License Generation Speed in Business Central PartnerSource Business Center
The current process for generating and downloading partner licenses in PartnerSource Business Center is slow and inefficient. Opening the "Request License Keys" section, switching the "Do you want ISV insert rights included?" option from No to Yes, and downloading the current license/registration key along with permission reports takes an excessive amount of time. In contrast, downloading a customer license takes only about 30 seconds, whereas the partner license process takes 5 to 10 minutes.
I propose enhancing the speed of the partner license generation process to match that of the customer license generation. Specifically, the following improvements are needed:
- Faster Access to "Request License Keys": Reduce the time it takes to open the "Request License Keys" section for partner licenses.
- Quick Switching of ISV Insert Rights: Ensure that changing the "Do you want ISV insert rights included?" option from No to Yes is immediate and does not cause delays.
- Expedited Download Process: Improve the speed of downloading the current license/registration key, permission report summary, and permission report details to match the 30-second download time of customer licenses.
Incorporating these improvements would significantly enhance the user experience for partners, making the license generation process much more efficient and less frustrating.
-
Retain Price Fields When Changing G/L Account in Purchase Invoices
Problem Statement:
In the current functionality of Business Central, when changing the G/L Account in a purchase invoice line, all price-related fields such as Unit Cost, Line Amount, Amount, and Amount Including VAT are reset to zero. This is inconsistent with the behavior in the general journal, where changing the G/L Account retains the existing values. This discrepancy can lead to inefficiencies and errors in the invoice processing workflow.
Proposed Solution:
Enhance the purchase invoice functionality to retain the values of price-related fields when the G/L Account is changed. This will align the behavior with that of the general journal, ensuring a more consistent and user-friendly experience.
Detailed Proposal:
1. Maintain Price Fields on G/L Account Change:
- Implement a mechanism to temporarily store the current values of Unit Cost, Line Amount, Amount, and Amount Including VAT when the G/L Account is about to be changed.
- After the G/L Account change is confirmed, restore the stored values to their respective fields, ensuring no loss of data.
2. User Interface Enhancements:
- Provide visual cues or notifications to users indicating that the price fields have been retained after changing the G/L Account. This can be in the form of a tooltip or a brief message.
3. Configuration Option:
- Introduce a configuration option in the system settings that allows administrators to enable or disable this feature based on their organization’s requirements. This provides flexibility and control over the behavior of the system.
Benefits:
- Consistency: Aligning the behavior of purchase invoices with general journals improves consistency across different modules of Business Central.
- Efficiency: Users can change G/L Accounts without needing to re-enter price information, saving time and reducing manual errors.
- User Experience: A more intuitive and seamless experience for users who frequently manage purchase invoices and need to make G/L Account adjustments.
- Reduced Errors: Minimizing the risk of losing critical price information reduces the likelihood of invoicing errors and financial discrepancies.
Conclusion:
By implementing this enhancement, Business Central can provide a more robust and user-friendly invoicing process. This improvement not only streamlines the workflow but also enhances the overall efficiency and accuracy of financial operations.
-
Proposal for Improving Power Automate Integration in Microsoft Dynamics 365 Business Central
Background:
The current Power Automate integration in Business Central has significant drawbacks compared to Dynamics CRM. Specifically, the behavior when creating and editing records leads to numerous unnecessary and inefficient events, complicating integration and automation.
Issues:
1. Trigger Mechanism:
- In Dynamics CRM, data is fully captured first, all required fields are filled, and then saved, triggering the Power Automate flow for "Created".
- In Business Central, pulling the number series triggers an insert and a "Created" event, even though the record is incomplete. This leads to many "Modified"/"Changed" events without clarity on when the master data is truly complete.
2. Understandability and Manageability:
- This behavior is hard to understand and communicate for developers and consultants familiar with Dataverse.
3. Systematic Solution:
- A system-wide concept to correctly and efficiently use "Created" and "Changed" events is missing. Custom programming and business events do not solve the systematic issue.
Improvement Suggestions:
1. Overhaul of the Saving Logic:
- Introduce logic that ensures a record is only marked as "Created" when all required fields are filled and the record is completely saved. This could involve adopting the saving logic from Dynamics CRM.
- Implement a mechanism that delays the insert when pulling the number series until the record is fully saved.
2. Reduction of Events:
- System-wide reduction of "Created" and "Changed" events by intelligently recognizing the complete save operation.
- Implement signals to indicate when a record is fully created or changed, e.g., by leaving the record, session timeouts, or closing the browser tab.
3. Platform-based Management:
- Introduce a platform-wide concept for managing events since current page events are insufficient. This management should ensure events are triggered correctly and only when truly necessary changes occur.
Implementation:
- Microsoft should analyze the current event-trigger mechanisms in Business Central and develop a new concept inspired by the proven methods of Dynamics CRM.
- The implementation could combine backend logic and frontend signals (e.g., session timeouts, browser tab closures) to ensure the completeness of records.
With these improvements, the integration of Power Automate in Business Central could become significantly more efficient and user-friendly.
-
Ensuring Compatibility for ISV App Installation in Business Central OnPrem
Background
We recently encountered an issue where a customer upgraded from BC14 to BC23.3 and requested the latest version of our ISV app. Although we provided a runtime version based on Application BC 23.3 and Platform BC 23.0, parts of the app didn't function properly. The app could be installed in this database without immediate errors, possibly with a warning that was ignored by the other partner. However, due to the incompatibility of the versions, some features were non-functional. Supporting this configuration is challenging as it disrupts our CI/CD processes and testing capabilities.
Optional Installation Environment Check
It would be beneficial to have an easy way to validate during the installation of the app whether the platform and application versions match the runtime version it was built with. The goal is to have the option of throwing an error and prohibiting the installation of the app if there is a version mismatch.
Summary
By incorporating this validation step during installation, you can prevent unsupported installations, ensuring that your app operates only in environments you support. This approach helps maintain stability and reliability for your app and its users, avoiding issues like those encountered with the BC14 to BC23.3 upgrade scenario.
While we are not against partners performing a technical upgrade from version 14 to version 23 (as described here: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/upgrade-technical-upgrade-v14-v23), we cannot support this in our ISV app.
-
Store Emails in Exchange Shared Mailbox When Sent via Business Central SaaS
When sending emails through a Microsoft 365 account (Shared Mailbox) within Business Central, enable the option to store the send mail in that shared mailboxes. Currently, due to the hardcoded GraphURLTxt + '/v1.0/me/sendMail' path in the EmailOutlookAPIClient.Codeunit.al, emails sent from Business Central (e.g., by the finance team when sending invoices) are saved in the personal "Sent Items" folder of the sender, not in the shared mailbox. This limitation restricts visibility and collaboration among team members relying on the shared mailbox for records like invoices, time tracking, and contract details.
Proposed Solution:
1. Configurable Shared Mailbox Usage:
- Add a setting in Business Central’s email configuration to specify whether emails should be sent via a personal or shared mailbox.
- When sending emails via a shared mailbox, update the RequestUri to GraphURLTxt + '/v1.0/users/{sharedMailboxEmail}/sendMail', allowing emails to appear in the shared mailbox’s "Sent Items."
2. Permissions Update:
- Ensure the app registration for Business Central SaaS includes the Mail.Send.Shared (Delegated) API permission. This permission allows the application to send emails from a shared mailbox, granting access to all authorized users to see the sent emails in the shared mailbox’s "Sent Items."
It seems I’m unable to modify this with a PTE copy of the "Email - Outlook REST API" app because its `target` is set to OnPrem.
This solution enables the finance team and other departments to use shared mailboxes effectively, improving collaboration and email record-keeping in there shared mailbox.
-
Enhancement Request: Display Username in 'Show Source' for Send Emails
To enhance the "Send Emails" feature in Business Central, it would be beneficial to display the username alongside the GUID in the "Show Source" section. Currently, users see only the GUID (e.g., User: {D073F86D-83AA-4C8D-B377-76754A948F80}), which makes it difficult to identify the associated user without additional lookup steps. By showing the username directly, users could instantly recognize who sent or received the email, improving efficiency and user experience.