Skip to content

Commit

Permalink
Documentation, minor changes & refactoring to app.json
Browse files Browse the repository at this point in the history
  • Loading branch information
TKapitan committed Nov 28, 2020
1 parent 15d394e commit b16c9f1
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 28 deletions.
Binary file added App/Resources/img/ALIDRangeManager.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 12 additions & 13 deletions App/app.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
{
"id": "387c89df-1def-40e2-8953-e467ea2a15dc",
"name": "TemplateApp-Base",
"publisher": "default publisher",
"version": "1.0.0.0",
"brief": "",
"description": "",
"privacyStatement": "",
"EULA": "",
"help": "",
"url": "",
"logo": "",
"dependencies": [
],
"name": "AL ID Range Manager",
"publisher": "ART AA AE from Czechia + Kepty.cz",
"version": "0.0.2.1",
"brief": "Manage object IDs in of your AL projects using combination of VS Code extension and this Business Central extension.",
"description": "Manage object IDs in of your AL projects using combination of VS Code extension and this Business Central extension.",
"privacyStatement": "https://github.com/TKapitan/ALRM-BusinessCentral/blob/Kepty/LICENSE.md",
"EULA": "https://github.com/TKapitan/ALRM-BusinessCentral/blob/Kepty/LICENSE.md",
"help": "https://github.com/TKapitan/ALRM-BusinessCentral/issues",
"url": "https://github.com/TKapitan/ALRM-BusinessCentral",
"logo": "Resources/img/ALIDRangeManager.png",
"dependencies": [],
"screenshots": [],
"platform": "17.0.0.0",
"application": "17.0.0.0",
Expand All @@ -21,7 +20,7 @@
"to": 80099
}
],
"contextSensitiveHelpUrl": "https://Base.com/help/",
"contextSensitiveHelpUrl": "https://github.com/TKapitan/ALRM-BusinessCentral/issues",
"showMyCode": true,
"runtime": "6.0",
"features": [
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Change Log

## [Unreleased]

- Add Support for Interface objects
- Enhance UI (Navigation, Structure of cards)
- Test "Range per BC Instance"
- Add validation for changing existing extensions
- Add validation for changing existing assignable ranges

## [Released Versions]

### v0.2.1

- Date of release: 27/11/2020
- Enhance Documentation
- Minor changes, refactoring
- Extension Identification & rules

### v0.2.0

- Date of release: 21/11/2020
- Initial release from Coding4BC hackathon
67 changes: 66 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,66 @@
A slightly improved copy of https://dev.azure.com/msdyn365bc/WaldoDevOpsDemos/_git/TemplateApp
# AL ID Range Manager (Business Central extension)

This Business Central extension provides quick and centralized object id assignment for the VS Code extension that can be downloaded directly from VS Code Marketplace. The source of of the VS Code extension is available publicly on GitHub: <https://github.com/TKapitan/ALRM-VSCode>.

## Features

The extension manage object and field IDs accross multiple extension and is especially useful when more developers work within the same object range.

### Assignable Ranges

The core of the extension are "Assignable Ranges" that manage all available ranges and are used during initializing of new extension. The assignable range can define available field and object IDs.

The assignable range has two primary parts - header and lines. In the header, you can also define

- "Default Object Range From" / "To": This range is used to assign IDs to all types of objects except those defined specifically in lines (with their own range).
- "Default Field Range From" / "To": This range is used to assign IDs to all fields created in EnumExtensions and TableExtensions.
- "Ranges per BC Instance": This value specifies, whether the object ID is used only once (when this field is set to false) even if two extensions are used for different BC instances. If this field is set to true, IDs are assigning uniquelly only by checking extensions installed to the same BC instance. This value is especially useful for standard Customer range (50000 - 99999) when you can set it only once and then reuse objects for each customer extension (and for each customer start assigning always from the initial ID).
- "Object Name Template": Using this field, you can force structure of object names (for example set your prefix/suffix). The value must be set as a standard Business Central Filter (with an asterisk). For example, if you want to force that all object names starts with prefix "TKA ", set this field to "TKA *".

In the lines section, you can define different ranges for specific object types. If you specify special range for one object type, the default object range from header is not used for the object type anymore.

For example, if you want to create all objects within range 50000 - 59999 but tables in range 60000 - 64999, the first range should be set as Default Object range in the header and for tables, you must create one line defining range 60000 - 64999.

### Extensions

The "Extension List" is the core of the extension. It shows all existing extensions. Primarily, the extensions should be created using API from the VS Code Extension, but it is still possible to create them manully.

To create a new extension, just select one of the existing Assignable Ranges, all other details are created automatically. However, if you create the extension manually, it is not currently possible to link it to AL project and so to use the extension from the VS Code extension.

In the lines part, all existing objects are shown (eventually, they can be defined manually from the extension card). The IDs are assigned automatically from the corresponding Assignable Range (if there is no available object ID for selected object type, error is returned). If the assignable range has object name templated defined, the name of the object is checked once is filled in.

For TableExtension and EnumExtension object types, the IDs could be managed similary to the IDs of objects. From the line of existing TableExtension/EnumExtension, select action "Object Lines" that open new page with list of existing fields. Fields can be managed from the VS Code extension, or manually from this page.

From the extension card, the list of usage can be shown. On the "Extension Usage List" you can define which extension is used in which BC Instance. This is neccessary setting for assignable ranges that are set as "Per BC Instance" and is also neccessary for generating template for the license file.

### Suggest Objects for Business Central License

Once you have your own extension developed and properly set (with defined BC Instance in Extension Usage List), you can run "Create License File" from "Go To". This report create a downloadable file that can be imported to the Microsoft Partner Portal to assigne extension objects to the customer license.

## Requirements

If you do not know how to install Business Central extension, see <https://docs.microsoft.com/en-us/dynamics365/business-central/ui-extensions>.

This Microsoft Dynamics 365 Business Central extension has no special requirements. The only requirements are running Business Central instance (at least Microsoft Dynamics 360 Business Central 2020 Wave 2 / v17) and for installing tests the neccessity is the Business Central Test Toolkit (for guide how to properly set test toolkit, see <https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-extension-advanced-example-test>).

## Extension Settings

To use the extension in the combination with ALRM VS Code extension (<https://github.com/TKapitan/ALRM-VSCode>) a few things have to be set up.

1. At least one "Assignable Range" must be properly set.
- Assignable Ranges manage available object and field ranges for all extensions.
- To create and set a new Assignable Range
1. Open "Assignable Ranges" page
2. Fill (only required fields are mentioned, for description of other fields, see [Features](##Features))
- Code (Identification of the range, is visible from VS Code extension when developer initialize new extension).
- Default Object Range From & To (Specifies available ranges for all object types that are not defined separately in lines. Once the range is defined for specific object type in lines, the default range is not used anymore.)
- No. Series for Extensions (Specifies the No. Series that are used for assigning identification to newly initialized extension. The No. Series must have line defined and must be set as a Default Numbers.).

## Known Issues

- Interface object type is not currently supported
- Setting "Range per BC Instance" is not properly tested

## Release Notes

See [changelog](https://github.com/TKapitan/ALRM-BusinessCentral/blob/master/CHANGELOG.md)
Binary file added Test/Resources/img/ALIDRangeManager.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 15 additions & 14 deletions Test/app.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
{
"id": "c3f20afb-35e2-4476-a163-072b5141f028",
"name": "AL ID Range Manager",
"publisher": "team ART AA AE",
"version": "1.0.0.0",
"brief": "Helps to manage AL objects IDs.",
"description": "Helps to manage AL objects IDs.",
"privacyStatement": "",
"EULA": "",
"help": "",
"url": "",
"logo": "",
"name": "AL ID Range Manager - tests",
"publisher": "ART AA AE from Czechia + Kepty.cz",
"version": "0.0.2.1",
"brief": "Manage object IDs in of your AL projects using combination of VS Code extension and this Business Central extension.",
"description": "Manage object IDs in of your AL projects using combination of VS Code extension and this Business Central extension.",
"privacyStatement": "https://github.com/TKapitan/ALRM-BusinessCentral/blob/Kepty/LICENSE.md",
"EULA": "https://github.com/TKapitan/ALRM-BusinessCentral/blob/Kepty/LICENSE.md",
"help": "https://github.com/TKapitan/ALRM-BusinessCentral/issues",
"url": "https://github.com/TKapitan/ALRM-BusinessCentral",
"logo": "Resources/img/ALIDRangeManager.png",
"dependencies": [
{
"id": "387c89df-1def-40e2-8953-e467ea2a15dc",
"publisher": "default publisher",
"name": "TemplateApp-Base",
"version": "1.0.0.0"
"publisher": "ART AA AE from Czechia + Kepty.cz",
"name": "AL ID Range Manager",
"version": "0.0.2.1"
},
{
"id": "dd0be2ea-f733-4d65-bb34-a28f4624fb14",
Expand Down Expand Up @@ -50,13 +50,14 @@
],
"screenshots": [],
"platform": "17.0.0.0",
"application": "17.0.0.0",
"idRanges": [
{
"from": 50000,
"to": 79199
}
],
"contextSensitiveHelpUrl": "https://Base.com/help/",
"contextSensitiveHelpUrl": "https://github.com/TKapitan/ALRM-BusinessCentral/issues",
"showMyCode": true,
"runtime": "6.0",
"features": [
Expand Down

0 comments on commit b16c9f1

Please sign in to comment.