Business Central Team Member Item Data Insert Hack ☠️

Emphasis on the hack part here. Right now this is a possibility so why not share – will it stay that way? No guarantees. The inspiration is born out of the fact a team member user license is not able to insert item data (amongst other data such as, Customers and Vendors). The “New” button is greyed out for that user type. Now many businesses like to use a team member license for raising purchase quotes. In the scenario where you are requesting to purchase an item which is not on the system yet, you want to give access but keep control. My idea is to satisfy both sides of that with a simple solution – HTTP request and no tables.

No ability to add an item or delete an item as a Team member licensed user can be seen above

To resolve this I’ve opted for a mix of AL and Power Automate. The process flow will be like this:

  • Create a page that is not related to a table – so no conflict on entering data into tables
  • Have the page raise a HTTP Post request to a define endpoint in Power Automate
  • Pick up the data from the endpoint in Power Automate and use it for the resulting business process
  • As Power Automate has plenty of connectors you could have an approval process, Teams message with an adaptive card, details written to SharePoint etc.
The UI design is simple. Have a new page action from the Purchase Quote which opens a NavigatePage page type.
Add the fields you want the user to provide. Note this does use table relations but it does not save the data in a table – it is all just in memory on that instance of the page. I’ve gone for a small amount of fields but the final version would cover more details. Dedicated buttons are then available to either halt the process altogether (Cancel) or to progress and send the data on.
enable “Allow HttpClient Requests” in the settings of the extension
Create a flow in Power Automate and use the above trigger in a manual flow. Set it to expect a POST. In the request body add a JSON object and each of the fields setup to be sent from BC. My full JSON body is below:
{
    "type": "object",
    "properties": {
        "ItemDescription": {
            "type": "string"
        },
        "ItemUoM": {
            "type": "string"
        },
        "ItemCategory": {
            "type": "string"
        }
    }
}
Add whatever additional steps you need to have in the flow. Eventually you can use the BC connector a use the “Create Record” action. Note the dynamic content from the HTTP connector. The Power Automate flow will need to run as an essentials or premium user. It it that user who performs the insert/create.

Here is how the experience can look. Note I just create the item right after requesting it:

Try it for yourself: https://github.com/JAng13sea/Blogs/tree/master/Team%20Member%20Hack