-
Implement a Project quotation entity + lines
The existing SalesQuotationTable V2 entity only supports quotations of the Sales type. There is currently no way you can export, or import a project quotation. Funny enough, there is a Project quotation WBS entity. Since you cannot import a header, the usage of that one must be very limited :))
-
Mobile RaF with no Automatic BOM consumption on the Finish flushing principle
There must be an option to turn off material consumption on the mobile scanner, and let the system only backflush materials at the Job card terminal. The Mobile menu items "Report as finished and put away" and "Report as finished" must be extended for non-compulsory material consumption. This is a one-liner in X++ in the WhsWorkCreateProdPut. setProdParmReportFinishedMainProductFieldsForProdItem() method: ... prodParmReportFinishedMainProduct.bomAutoConsump = ProdParametersDim::find(prodParmReportFinishedMainProduct.InventDimId).BOMAutoConsumpRepFin; ... Justification: the error-prone recording of the material consumption is an internal planning and controlling requirement, while labeling and shipping generates revenue. One does not want to see label printing failing just because one screw is missing in the ledger. See also https://experience.dynamics.com/ideas/idea/?ideaid=dd8b4ec9-781c-e811-80c1-00155d7c7f0c https://experience.dynamics.com/ideas/idea/?ideaid=aa2399b7-e407-e811-80c0-00155d7cd0b4
-
Split the flushing principle “Finish” into “Operation finish” and “Production finish”
Advanced scenarios may require a distinction between an “Operation finish” and “Production finish” as opposed to a single flushing principle “Finish”. This is hard to achieve through an extension to D365FO, as the respective enumeration is not extendable. For example, in a sophisticated environment where packing is performed by a robot, the last operation “Packing” is not managed by the Manufacturing execution module. The WHS “Report as finished” function is triggered as full boxes or pallets pass a simple photoelectric sensor or a bar code reader. While the preceding operations may be captured at the Job terminals, it might be tempting to backflush the packaging materials at the ‘non-operation’ Report as finished. This is not possible, because a material with no operation number is accredited to the first operation on the route. A split of the Finish flushing principle into 2 could have addressed this scenario: - Operation finish - Production finish where the mobile device only considered the latter. see http://erconsult.eu/blog/missing-flushing-principle/ for more details.
-
Parametrize the Manufacturing execution Report as finished by Resource, not only Site
The D365FO configuration is not granular enough to divide the Manufacturing execution RaF and the Warehouse management RaF (reporting as finished), and should better be enhanced by a parameter per Resource. Imagine operations running in dedicated production orders, with tangible semi-finished goods (SFG) exchanged between the machines. This is a common scenario in process manufacturing where the SFG batches can hardly be quantized and bear no labels. The output and input resource locations in the middle of the chain are not license plate controlled and do not have to be equipped with mobile scanners, as there is nothing to scan. Here we need a choice between semi-finished goods reported as finished at Job devices, and finished goods reported from Mobile scanner devices. This configuration – whether to trigger Reporting as finished in Manufacturing execution or not – is available at the Site level only, not a single Resource level. Yet an Advanced warehouse process cannot span multiple warehouses, let alone sites. This would end up either in full blown transfer orders between machines, or in an inability to track actual time at the Job card device. see also http://erconsult.eu/blog/missing-flushing-principle/
-
Project committed cost for a Purchase order linked to an Item requirement
Purchase orders (PO) derived from an “item requirement” sales order (e.g. through the MRP) are excluded from the project committed cost. It is only if the Item requirement is set to yes in the Cost commitment parameters, then the system starts recording committed cost from this pair SO-PO. An "Item requirement", however, is committed into the project budget as soon as the SO line has been created. From the standpoint of my customer, this is too early: 1) An item requirement sales order is created to initiate the R&D work on the equipment. The cost is not fully known yet, as the product BOM has not been fully developed and we may not have decided yet between procurement or own manufacturing. 2) A planned PO is prepared by the MRP, but not approved: there is no commitment yet, as a planned order is an artifact on the planning mechanism in D365FO and may be amended or cancelled in many ways. 3) A planned PO is converted into a real PO. We are getting close, but the ultimate price and delivery date has not been promised yet by the supplier. 4) The PO is confirmed. There is a signed agreement with the supplier, the cost is now committed. The logic should be reversed: if there is an item requirement sales order with a PO coverage, take the PO for the cost commitment and the SO delivery for the ultimate budget consumption. We can make this behavior dependent on the project management parameter Create item requirement. It if is set to No, apply the above modified logic. If it is set to yes, use the standard business logic.
-
Exchange rate entry in GL journals as an amount in the accounting currency
In every ledger journal, introduce an "edit" field to enter the exchange rate expressed as an amount in the accounting currency. Example: I receive a payment in CHF to my EUR account. The rate in the system was 0,95 CHF, and I expect to receive 950 EUR for a 1000 CHF bill. Yet the rate for buying Swiss francs applied by my bank is cheaper and I get just 941 EUR. Now to get to the exchange rate of 0,941 I need to perform calculations aside; moreover, the inline calculator has been deprecated in D365FO. I'd love to enter 941 EUR directly in a special field and let the system perform the calculation for me. Likewise, the same field would show be the EUR equivalent at all times. This is something natively supported by Oracle eBS, by the way. -
Add support for EcoResCatalogControl into the “Product category attributes” entity
The table EcoResCatalogControl is associated with product attributes bound to procurement categories. An import of these “Product category attributes” through the entity EcoResProductCategoryAttributeEntity leaves the attributes dysfunctional: the internal table EcoResCategoryAttributeLookup is left out of sync and the new attributes remain invisible in the product master. Only an EcoResCatalogControl entry triggers the sync. The only form where the EcoResCatalogControl is editable and visible is the Procurement category form, but an attempt to update the flag fails with a “Missing reference” error: the systems expects the EcoResCatalogControl record to exist already. Dead end. See my blog http://erconsult.eu/blog/electronic-reporting-in-data-migration/ -
Add an entity for un billed milestones
One can import invoiced milestones (on-account milestones) with a beginning balances journal, but not the un-invoiced, open ones. There is a strong need for an entity to migrate ProjOnAccTrans + ProjOnAccTransSale data. -
Recurring purchase invoices
Implement [semi-]automatic recurring invoices in the AP module similarly to what we have in the AP module. Typical examples of the recurring purchase invoice: 1) monthly electricity prepayment invoices 2) monthly car insurance 3) monthly traction battery rent (not the leasing) 4) monthly office rental At least the insurance bills may not have an invoice number, in my practice (2), (3), (4) don't have distinct invoice numbers and get credited unter the recurring invoice regime, i.e. these are not accrued invoices. SAP Business One has such an option, and there are ISVs implementing this. Business Central seems to have a standard feature too. The typical workaround is to open a purchase order and post the quantity = 1 every month, yet this is obviously time consuming and requires the fake invoice numbers to be invented by the user.
