diff --git a/.github/ISSUE_TEMPLATE/bcidea.yaml b/.github/ISSUE_TEMPLATE/bcidea.yaml deleted file mode 100644 index ec0380b2f6..0000000000 --- a/.github/ISSUE_TEMPLATE/bcidea.yaml +++ /dev/null @@ -1,44 +0,0 @@ -name: Implement a BC Idea -description: Suggest a BC Idea you would like to implement. -title: "[BC Idea]: " -labels: ["bcidea"] -type: 'Feature' -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to create a BC Idea issue! - - ⚠️⚠️ BEFORE WE GET STARTED ⚠️⚠️ - Please do not create an issue for a BC Idea unless you intend to implement it yourself. If you are not planning to implement the BC Idea yourself, please go to aka.ms/bcideas and upvote the feature on BC Ideas instead. - - Before you create a new issue please: - 🔎 Search existing issues to avoid creating duplicates. - - Read more about what and how to contribute in the CONTRIBUTIONS document of this repository: https://github.com/microsoft/AlAppExtensions/blob/main/CONTRIBUTING.md. - - - type: input - id: bcidea - attributes: - label: BC Idea Link - description: Please link to the BC Idea - placeholder: ex. https://experience.dynamics.com/ideas/idea/?ideaid=123456 - validations: - required: true - - type: textarea - id: description - attributes: - label: Description - description: Please include the description from the BC Ideas page - placeholder: Description of BC Idea - validations: - required: true - - type: checkboxes - id: terms - attributes: - label: I will provide the implementation for this BC Idea - description: | - To provide the implementation for a BC idea, select this checkbox and then Get started. Thanks for contributing. - options: - - label: I will provide the implementation for this BC Idea - required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml deleted file mode 100644 index 06b794a95d..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ /dev/null @@ -1,59 +0,0 @@ -name: Fix a bug -description: Create a bug report for a product defect you would like to address yourself -title: "[Bug]: " -type: 'Bug' -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this bug report! - - ⚠️⚠️ BEFORE WE GET STARTED ⚠️⚠️ - This is not the right place to report product defects with customer impact to Microsoft! Issues reported in this repository do not fall under SLAs (Service Level Agreements) and hence have no guaranteed time to mitigation. If your customers are experiencing product defects or you have discovered a severe issue in the product, please follow the steps outlined in https://learn.microsoft.com/dynamics365/business-central/dev-itpro/technical-support to get your issue routed to the right team at Microsoft and to get it treated with the right priority. - - Before you create a new issue, please check the following: - 🔎 Search existing issues to avoid creating duplicates. - 🧪 Test using the latest bcinsider builds to see if your issue has already been fixed - - Read more about what and how to contribute in the CONTRIBUTIONS document of this repository: https://github.com/microsoft/AlAppExtensions/blob/main/CONTRIBUTING.md. - - type: textarea - id: describe-the-issue - attributes: - label: Describe the issue - description: A clear and concise description of what the issue is - placeholder: Describe the issue - validations: - required: true - - type: textarea - id: expected-behavior - attributes: - label: Expected behavior - description: Describe what behavior you expected - placeholder: Expected behavior - validations: - required: true - - type: textarea - id: steps-to-reproduce - attributes: - label: Steps to reproduce - description: List of steps to reproduce - placeholder: Steps to reproduce - validations: - required: true - - type: textarea - id: additional-context - attributes: - label: Additional context - description: If needed add any other context about the problem here or include screenshots - placeholder: Additional context, screenshots, log output, etc. - validations: - required: false - - type: checkboxes - id: terms - attributes: - label: I will provide a fix for a bug - description: | - To provide a fix for a bug, select this checkbox and then Get started. Thanks for contributing. - options: - - label: I will provide a fix for a bug - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 41f81c4569..062b795bdb 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,7 @@ blank_issues_enabled: false contact_links: - name: Request a feature url: https://aka.ms/bcideas - about: Please go to https://aka.ms/bcideas to log your idea. Creating an issue here is not the right way. + about: Please go to https://aka.ms/bcideas to log your idea. Creating a feature implementation issue here is no longer available. - name: Report a bug url: https://aka.ms/bcsupport?#bugs - about: Please follow the steps on https://aka.ms/bcsupport to get support. Creating an issue here is not the right way. \ No newline at end of file + about: Please follow the steps on https://aka.ms/bcsupport to get support. Creating a bug-fix contribution issue here is no longer available. diff --git a/.github/ISSUE_TEMPLATE/extensibility-request.yaml b/.github/ISSUE_TEMPLATE/extensibility-request.yaml index e72f9251c6..0acc3f9e80 100644 --- a/.github/ISSUE_TEMPLATE/extensibility-request.yaml +++ b/.github/ISSUE_TEMPLATE/extensibility-request.yaml @@ -7,6 +7,8 @@ body: value: | Thanks for submitting an extensibility request. + This repository no longer accepts new pull requests, but extensibility requests are still accepted here. + ⚠️⚠️ Before you start ⚠️⚠️ Before you create a new issue, please check the following: 🔎 Search the existing issues to avoid a duplicate. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9fd0d34660..f147e8b137 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,7 +1,7 @@ - -#### Summary +# This repository no longer accepts new pull requests -#### Work Item(s) -Fixes # +ALAppExtensions no longer accepts new pull requests. + +Extensibility requests, such as event requests and requests to make functions external, are still accepted as issues using the extensibility request template. + +New pull requests opened in this repository will be closed automatically. diff --git a/.github/workflows/BlockNewPullRequests.yml b/.github/workflows/BlockNewPullRequests.yml new file mode 100644 index 0000000000..6aa100c8f6 --- /dev/null +++ b/.github/workflows/BlockNewPullRequests.yml @@ -0,0 +1,46 @@ +name: Block New Pull Requests + +on: + pull_request: + types: [opened] + +jobs: + block-new-prs: + runs-on: ubuntu-latest + steps: + - name: Check PR creation date + id: check + run: | + created_at="${{ github.event.pull_request.created_at }}" + cutoff="2026-05-05T00:00:00Z" + + if [[ "$created_at" > "$cutoff" ]]; then + echo "block=true" >> $GITHUB_OUTPUT + else + echo "block=false" >> $GITHUB_OUTPUT + fi + + - name: Comment and close PR + if: steps.check.outputs.block == 'true' + uses: actions/github-script@v7 + with: + script: | + const message = `👋 Thanks for your contribution! + +ALAppExtensions no longer accepts new pull requests. + +Extensibility requests, such as event requests and requests to make functions external, are still accepted as issues using the extensibility request template. + +We appreciate your understanding and look forward to continuing extensibility collaboration here 🙌`; + + await github.rest.issues.createComment({ + ...context.repo, + issue_number: context.issue.number, + body: message + }); + + await github.rest.pulls.update({ + ...context.repo, + pull_number: context.issue.number, + state: "closed" + }); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1dbeacb0c0..e4ab1184b2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,56 +1,29 @@ # Contributing -## What to contribute +## Pull request contributions closed -This project primarily welcomes contributions of two types: +This repository no longer accepts new pull requests. -- PRs for pre-approved issues, which are based on BC Ideas (http://aka.ms/bcideas) that have been picked as candidates for code contribution projects. -- PRs based on approved issues, which address smaller non-customer reported improvements and fixes. +New pull requests opened in this repository will be closed automatically. Existing pull requests will be reviewed according to the transition guidance from the maintainers. Pull requests that require significant changes or deeper follow-up may need to be recreated in the appropriate active repository. -In either case, an approved issue in state "ready for implementation", must exist, before a PR can be created. **PRs without link to approved issues will instantly get rejected.** +## Extensibility requests remain open -**⚠IMPORTANT⚠:** This is not the right place to report product defects with customer impact to Microsoft! Issues created in this repository won't get picked up by the Microsoft engineering team and issues reported in this repository do not fall under SLAs (Service Level Agreements) and hence have no guaranteed time to mitigation, just as provided fixes won't get backported to all supported versions of the product. +This repository continues to accept extensibility requests that help unblock partner and customer apps. Examples include: -If your customers are experiencing product defects or you have discovered a severe issue in the product, please follow the steps outlined in ["Technical Support for Dynamics 365 Business Central"](https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/technical-support) to get your issue routed to the right team at Microsoft and to get it treated with the right priority. - -## How to contribute - -In the case that you would like to contribute code to this project, you first must establish what kind of contribution we're dealing with: - -**A)** A small bug fix, product improvement, paper cut, conveniences customers just can't live without, things you've been fixing for years and from version to version, things you are now forced to create as per tenant extension and which you can't monetize or things you're just tired of fixing over and over again... - -**B)** New capabilities or implementations of larger changes to the existing application platform. +- Event requests +- Requests to make functions external or otherwise adjust visibility +- Requests to replace options with extensible enums +- Other extensibility enhancements -Let's take a look at what it takes to contribute with **A)**: -- Create a new issue by clicking "Create issue I want to address": Before a PR can be created, it is required to have an issue registered, which has been approved for development by Microsoft. This is done to ensure that community members aren't wasting their time on writing code, which later cannot be accepted. -- Wait for approval: Now that your issue is registered, Microsoft will triage your issue and either approve or reject it. -- Get issue in "Ready for Implementation" state: Before a PR can be created for an approved issue, the issue must be ready for implementation. An issue receives that state from Microsoft, when it is ensured that it is understood what an issue will address and how that is done. In other words: the issue must be in a groomed state before development can be begun. This is again to ensure, that the developer doesn't waste time on implementing solutions, which later cannot be accepted in that form. -- Create one PR per issue: Now a PR can be created. It is important that the PR is linked to an issue. **PRs which aren't linked to approved issues will get rejected.** The PR will now have to pass integration and is then ready for code review. -- Get code review approval: Before the code can be deployed into production, it must pass code review by other members of the community and by Microsoft. This ensures that quality of the code is on par with Microsoft's and the community's standards. -- Final validation: Before the code can be deployed, Microsoft will do a final validation of the PR and issue. Should the change be mentioned in the release notes? Did some of the initially planned work spill over? Is the work on the issue truly done/done? -- Deployment: You've reached the end! When PR is completed and merged, the change will ship with an upcoming release of the product. +Please create these requests using the extensibility request issue template. Before creating a new request, search existing issues to avoid duplicates and follow the guidance in ["Create extensibility requests for Microsoft Dynamics 365 Business Central"](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/create-extensibility-request). -If you would like to add new capabilities to the product as described in **B)**, the process is similar to **A)**, except that you should not create an issue yourself here on GitHub. Instead, follow the following process: -- Find or register your idea on [BCIdeas](http://aka.ms/bcideas): Start by searching for existing approved issues here on GitHub; every BCIdea which is approved for open source contribution exists as an approved issue here on GitHub. If you cannot find an approved issue, look for existing ideas on BCIdeas, which cover the scenario your were thinking about implementing; ideally ideas with some votes. If you find an idea you'd like to use as open source contribution issue, inform Microsoft that you intend to do a contribution and a product manager will tag the idea, leading to the creation of an approved issue here on GitHub. In the less likely event that you don't find any idea which points in the direction of the feature you intended to work on, you can go ahead and log a new idea, describing the new capability you would like to add to the product. Don't forget mention that the idea is suitable for open source contribution. -- Wait for approval: If you created a new idea, a Microsoft product manager will revise the idea. If the idea is aligned with the strategy of the application platform and is considered feasible to implement, the idea will get approved and marked as "open for contribution". Once the idea has "open for contribution" mentioned as part of idea title, an issue will be created and approved immediately in this repository. -- Find allies: If you reused an existing idea, check [Application Functionality group on Business Central Yammer portal](https://www.yammer.com/dynamicsnavdev/#/threads/inGroup?type=in_group&feedId=8846299) for any input from other partners (just search for idea title). There you can also find partners in crime (= other developers with same issue) that can help with the development or review of your future PR. -- Assign the GitHub issue to yourself and get the issue into "Ready for Implementation" state: The rest of the process is identical to the process described in **A)**. You must now work with Microsoft and the community to get the issue into a state, where implementation can be begun. +## Product defects and support -That's it! This is the process you must follow to contribute with code to this project. Just a few more hints: +This is not the right place to report product defects with customer impact to Microsoft. Issues created in this repository might not be picked up by the Microsoft engineering team, do not fall under SLAs (Service Level Agreements), and have no guaranteed time to mitigation. Provided fixes will not be backported to all supported versions of the product. -With your first contribution, you are required to agree to a Contributor License Agreement (CLA) declaring that you have the right to, -and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. +If your customers are experiencing product defects or you have discovered a severe issue in the product, please follow the steps outlined in ["Technical Support for Dynamics 365 Business Central"](https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/technical-support) to get your issue routed to the right team at Microsoft and to get it treated with the right priority. -When you submit a pull request, a CLA-bot will automatically determine whether you need -to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the -instructions provided by the bot. You will only need to do this once across all repositories using our CLA. +## Code of conduct -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -If you are a beginner at contributing, start by following the [GitHub guidelines](https://docs.github.com/en/get-started/quickstart/fork-a-repo). - -If you are new to developing for Business Central, visit [Developers Learning Catalog](https://docs.microsoft.com/en-us/dynamics365/business-central/readiness/readiness-learning-developers). - -Do not hesitate to contact the any of the maintainers in case you have any questions regarding the contribution process! diff --git a/FAQ.md b/FAQ.md index 89300c30ff..d720727b1b 100644 --- a/FAQ.md +++ b/FAQ.md @@ -9,29 +9,12 @@ Have a look at the following articles for detailed walkthroughs: * https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-change-a-module ## Can I contribute by submiting my own app? -We are accepting code contributions for published apps and modules, as well as new relevant modules for the System Application that adhere to the [Module Architecture](https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-blueprint) guide. +This repository no longer accepts new pull requests for code contributions. For code contributions, use the [BCApps](https://github.com/microsoft/BCApps) repository. ## Some APIs files aren't available in Extensions V2. What to do? Code that relies on temporary files must be rewritten to rely on InStream and OutStream data types instead. Code that relied on permanent files must be rewritten to use another form of permanent storage. We are considering a virtualized temporary file system to make it possible to work with temporary files in the cloud at some point in the future. -## DotNet types are not available in Extensions V2. What now? -SaaS: - -DotNet interop is not available due to safety issues in running arbitrary .NET code on cloud servers. We recommend the following approaches to achieve your business scenario that previously relied on .NET: -1. With each monthly update we provide new AL types that replace the most typical usages of .NET, such as HTTP, JSON, XML, StringBuilder, Dictionaries and Lists. The new AL types can directly replace many of the .NET usages, which results in much cleaner code. For more information, see [HTTP, JSON, TextBuilder, and XML API Overview](https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-restapi-overview). -2. For things you can't do in AL code we recommend using Azure Functions to host the DLL or C# code that was previously embedded in NAV and call that service from AL. To get a more in-depth understanding, check out the following blog posts from our MVPs: - -* [State of .NET Affairs](http://vjeko.com/state-net-affairs/) -* [AL support for REST Web Services](http://www.kauffmann.nl/2017/06/24/al-support-for-rest-web-services/) -* [Invoking Azure Functions from AL](http://vjeko.com/invoking-azure-functions-al/) - -3. You can submit .NET type wrapper pull requests that, if accepted, will be included in the System Application. - -On-Premise: - -We still encourage you to use the resources above to minimize your reliance on DotNet to make your solutions easily portable to the cloud. However, we are working on adding DotNet interop support to the new development environment, so eventually that will be available. - ## Why can't I use the type or method 'XYZ' for 'Extension' development? We've blocked a certain set of functions from being directly called from app code. Our approach was based on a conservative static analysis, and the result was that some functions are unnecessarily blocked. If you need to use one or more of these functions please log an issue and provide a full list. We will analyze your request and unblock the functions we deem to be safe. @@ -50,7 +33,7 @@ We use labels for categorizing issues into types and tracking the issue lifecycl The lifecycle for issues is a mix of label + milestone + open/closed state: * **Ships-in-future-update:** The issue was fixed in our source code repository and ships in the next major release or, for events, the next minor update. -* **Call-for-contributors:** We're looking for contributors who are willing to address a reported bug or request. +* **Call-for-contributors:** Historical label used for issues where contributors were invited to address a reported bug or request. * **Wontfix:** The issue will not be fixed, probably because it is out of the scope of the current repository. ## How do I report an issue? diff --git a/README.md b/README.md index e07a39abca..b720e47c74 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,24 @@ -# Microsoft AL application add-ons for Microsoft Dynamics 365 Business Central +# Business Central extensibility requests Welcome to the ALAppExtension repository! -This repo is a platform for Microsoft and our vibrant partner channel and community to work together to develop add-on apps in the AL language and to enable the general extensibility of Microsoft Dynamics 365 Business Central. +This repository is now solely for extensibility requests for Microsoft Dynamics 365 Business Central. -We’re working to make the core application thinner, more extensible, and easier to localize extracting business logic into add-on and localization apps. As we go, we’ll publish the source code for the apps in this repo. The apps are open for contributions and can furthermore serve as starting point for verticalizations or just as samples for developing apps. +It is no longer a place to contribute to Microsoft AL application add-ons. New pull requests are no longer accepted in this repository. -⚠ This repository is no longer a place to develop on the System Application or Developer Tools! The System Application is now fully developed in the [BCApps](https://github.com/microsoft/BCApps) repository. Please use that repository for all contributions to the System Application and Developer Tools. ⚠ - -Microsoft will ship the contributions in upcoming releases of [Microsoft Dynamics 365 Business Central](https://dynamics.microsoft.com/en-us/business-central), where you’ll get to enjoy the effect of your contributions. +⚠ This repository is no longer a place to develop the Business Central application platform! The application is now fully developed in the [BCApps](https://github.com/microsoft/BCApps) repository. Please use that repository for all contributions. ⚠ ## Contributing -In this repository, we welcome contributions to **Microsoft's application add-ons**. - -* If you are looking to contribute to the **System Application** or **Developer Tools** you can do so in the [BCApps](https://github.com/microsoft/BCApps) repository. -* If you are looking to contribute to the **Base Application** you can do so in the [BusinessCentralApps](https://github.com/microsoft/BusinessCentralApps/) repository. Please note, that this repository is private but you can request access by filling out [this form](https://forms.office.com/pages/responsepage.aspx?id=v4j5cvGGr0GRqy180BHbR_Qj5hjzNeNOhBcvBoRIOltUOVBVTklZN1hBOTZJUU40OE5CUzNWNk1FQy4u). +This repository no longer accepts new pull requests for Microsoft's application add-ons. Please only create issues for extensibility requests, such as event requests, requests to make functions external, enum requests, or other extensibility enhancements. +* If you are looking to contribute code to the business application, you can do so in the [BCApps](https://github.com/microsoft/BCApps) repository. **⚠IMPORTANT⚠:** This is not the right place to report product defects with customer impact to Microsoft! Issues created in this repository might not get picked up by the Microsoft engineering team and issues reported in this repository do not fall under SLAs (Service Level Agreements) and hence have no guaranteed time to mitigation, just as provided fixes won't get backported to all supported versions of the product. ## Types of engagements -There are a couple of ways to engage with us here: - -* You can grab the code and contribute to the published apps. For more information, see the [_Contributing_](./CONTRIBUTING.md) guidelines or watch this video: [_The Contribution Process_](https://youtu.be/a1p8fTFPVwI?t=3496). -* If you’re building your own app and need something specific from us, like an event, you can help improve the general extensibility of the business logic. For more information, see the [_Extensibility requests_](#extensibility-requests) section below. +There is one way to engage with us here: + +* If you’re building your own app and need something specific from us, like an event, a function visibility change, or another extensibility enhancement, you can help improve the general extensibility of the business logic. For more information, see the [_Extensibility requests_](#extensibility-requests) section below. ### Extensibility requests @@ -43,4 +38,4 @@ The software may collect information about you and your use of the software and This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies. ## See Also -[FAQ](FAQ.md) \ No newline at end of file +[FAQ](FAQ.md)