The SAP ERP organizational structure - data-structures

SAP ERP software has quite a detailed organizational structure: what parts a client can have and how these parts can relate to each other.
E.g. a company code is an independent legal entity that belongs to a client and it has exactly one charts of accounts, i.e. rules that govern its accounting.
Company code, sales organization, plant, storage location and so on.
Is there an authorized full description of this hierarchy somewhere? There are various bits of it at:
https://help.sap.com/saphelp_47x200/helpdata/EN/dd/563599aea111d199b60000e8a5bd28/frameset.htm
https://archive.sap.com/discussions/thread/2082854
https://www.slideshare.net/DilipSadh1/sap-org-data-dilip-sadh
But I have found no full description of it.
Is there one on the Internet or in a book?

SAP better calls this Enterprise Structure:
https://wiki.scn.sap.com/wiki/display/ERPLO/Enterprise+Structure
https://www.guru99.com/structures-in-sap.html
https://help.sap.com/doc/0d98cf535b804808e10000000a174cb4/3.6/en-US/699ecf535b804808e10000000a174cb4.html

Related

PowerApps - create my own table or use a Dataverse table?

I have a couple of questions regarding PowerApps and the Dataverse. I don't know where else to ask them. I'm hoping someone here can help me.
I'm very familiar with creating a database in MS SQL SERVER. I've been doing that for 20+ years. I'm used to creating/seeing a database diagram that shows what tables are in the database and how they are related. Documentation about each table, what is it's business purpose etc.. Documentation about each column - what it's purpose is, it's domain of values etc.
Where do I find this same sort of documentation for the Dataverse? I've been searching for days and have not come across one schema diagram showing what tables are in the Dataverse or how they are related. Nor have I found any documentation that describes the business purpose of the tables or columns.
How would I know if I should create a table in the Dataverse for some business function or whether I should be using a table that already exits e.g. Company (to capture information about companies my organization cares about), Org Unit (to capture information about the org structure of my company), Staff (to capture information about staff in my company and what org unit they belong to), Business process (to capture information about processes executed by org units in my company)...
Dataverse (earlier called as Common Data service) is nothing but Dynamics CRM under the hood. So you can start here and you can find the Entity/Table metadata details here
If you are looking for ERD, then I will use XrmToolBox - ERD Visio Builder to connect and pull it.

Difference between Entity Type Standard and Managed in Common Data Service?

In PowerApps entity list page, we have default five fields Entity, Name, Type, Customizable & Tags
What does the Type field mean, I couldn't find any article related to this! Even Microsoft docs is a no go!!
I do know that Custom is the Type assigned to the tables created by us, whereas the default tables are grouped into two - Managed & Standard (refer screenshot).
But under what criteria do they get separated into the two groups?
This Standard type is part of Common Data Model (CDM) and PowerApps nomenclature:
CDM provides standard entities common across most industry domains – Sales, Purchase, Customer Service, Productivity among others. Leveraging the years of experience with Dynamics business applications and Office 365 and working with thousands of enterprise customers we have defined and implemented these standard entities that will connect to Microsoft’s first party business applications and support a broad ecosystem of ISV and customer solution development.
Learn more about CDM.
Managed is something like First party integration apps like LinkedIn, AI, Teams, etc. You will see publish prefix like msdyn_, li_, etc to see some identities. (maybe some third party Managed entities will follow this route, I'm not sure though).
I see some ADX portal like legacy entities marked as Standard rather than Managed, and some vice versa. I would say some sausage is being made, too early to look into that & that why documentation is missing.

Is Multi-Tenancy the correct approach where there is interactivity

I'm working on a project that is set up as multi-tenant, separate users, data stores, etc. However, as I look further into different scenarios, I see things that may not mix well with multi-tenancy, or at least as I understand it.
Tenants can be hierarchal
Company A
West Region
East Region
Company B
Campus A
Campus B
Company C
Tenants can provide resources to another resource
Company A creates a resource
Company A shares it with Company B with specified permissions
Company C shares a resource with Company B
Company B can now use resources provided by Company A and C
I'm not tied to multi-tenancy, but I want to make sure that whatever pattern I choose, I am following the best practices of the pattern.
Is hierarchal multi-tenancy defined well enough to actually attempt? I don't see much online about it, except for a proposed Open Stack project and a research paper in only 2014. I could potentially use hierarchal users instead, but there are, of course, other benefits to tenants.
Now given that I want tenants to be able to share resources, in any direction, maybe I don't need hierarchal tenants. Maybe a need a normal flat multi-tenant pattern with just an added layer of sharing. One tenant would share to another tenant or maybe a user in another tenant.
In the latter, each user seems like they become their own tenant, with their own data. It seems like it is more and more like a social network. in Facebook, I can share things to others, they can share things to me, there is no direct hierarchy, but brands will make pages that reflect the idea of a hierarchy, without actually having one. For instance, Microsoft has Microsoft, but also Xbox, Xbox Support 1, Xbox Support 7, Windows, Bing, etc.
So I've started here with a multi-tenant architecture in front of me and now I'm thing a business grade "social network" is what I really need.
Do either of those tracks make sense? Any thing you would have me change or consider?
In cloud computing, multi-tenancy (MT) is commonly accompanied by tenant isolation. If we take the Wikipedia definition, MT is independent of sharing.
In an MT architecture, one instance of a software serves multiple tenants (or groups of users). This is in contrast to multi-instance software in which multiple instances of a software serves multiple tenants.
The main benefit of the MT architecture is of cost - software updates can be done on the single instance to benefit all of the tenants. MT software provides a common base of functionality for tenants, but commonly have interfaces that allow each tenant to customize branding & workflows.
Your project looks to be MT with sharing capability. Let's assume each Company wants to be able to share access to some resources. The architecture then should have sufficient flexibility for the tenant to be able to control access to resources. The underlying frameworks should be fast, secure, and reliable, and auditable.
Since your focus is on sharing flexibility, it's important that the architecture supports letting tenants define access to resources the way you and they want - tenant to tenant, or tenant to some user.
In my opinion, I would consider starting with a "default-deny" architecture - one that doesn't share anything by default, and allow the tenants to setup rules for access to resources.
Short version: Multi-tenancy is generally independent of interactivity.

Licensing for CRM 2013

I'm registering a new 2013 on-line and I notice that there are two license types:
1. Microsoft Dynamics CRM Online
2. Microsoft Dynamics CRM Online Professional
What's the difference between them (in short)? I've read the description and I get the impression like "this one is yellow and the other is a car", so I simply can't compare.
According to this article, there are three (not two) different models and only one allows customizing the system (so it's only that one that there's any point showing to the customers).
What's up with that?!
In short, the headlines are:
All three licences allow access to CRM from all available clients eg browser, outlook, tablet, phone. (This is a big difference from the 2011 ESS CAL).
All three licences allow read access to all data, including custom entities. (subject to Security Roles of course).
Essential allows read/write access to activities, activity feeds and custom entities.
Basic allows everything in Essential, plus read/write to Accounts, Contacts, Cases, Leads. Also access to reports, and to create personal charts and dashboards.
Pro allows everything. Most notably Sales and Marketing (Opportunity, Quote etc, Campaign, Marketing List), plus service management (facility/equipment and all that).
Pro is needed to build customisations, but not to use them, which is where I think some confusion has arisen.
If you are talking about user licences there appears to be three distinct types.
It was a bit confusing however my general belief is:
1) Professional
This would be the Administration users who need to customize the system, build processes, templates, administer CRM, and run marketing campaigns.
2) Basic
Would be suitable for general users (ie:- ones that just need to work with entities but don't need to do much else). They can't do marketing campaigns which might restrict people who are given this licence. However your day to day staff should be fine with this as they have general access to entities as well as Reports and Dashboards etc.
3) Essential
Has very little access to core entities (even Account and Contact) so unless you have a client who wants to work with only custom entities then this seems like a pointless licence.

How to convert web app into saas?

I have a completed asp.net mvc 3 web application which relies on a mysql database and a mssql authentication/authorization database. How should I go about converting the application into Software as a Service - specifically with relation to having multiple tenants? Should the database just have its tables segregated based on tenant ids, or should there be one database per tenant? Are there any books or good sources I can reference? I am just trying to see if there is a best practice for this, or if what I am doing is standard.
Software as a Service is a huge industry and is rapidly growing. Major educational players are actively investing in including coursework regarding SaaS. One such institution is Unversity of Berkeley, California. They offer a free online course on SaaS at edx.org. The two professors teaching the class are highly acclaimed. The book for the course can be purchased via their site or through amazon.com.
Note: I am in no way affiliated with the course, the University, the professors, any of the free online education sites, nor am I enrolled in the class. There is not much content available on SaaS and this is one of the only sources that I was able to find.
Edit
With regards to the database, to convert from a single tenant to a multi tenant system, an abstraction must be used in order to separate the content. However, this will undeniably multiply the amount of content by the amount of tenants in the tables resulting in slower query times. In this respect, the tables must be partitioned by tenant ranges, with views representing those partitions. These views can then be queried.

Resources