How to stop SaaS users from joining and making duplicate companies rather then joining an existing setup company with other co-workers? - logic

We have a SaaS application that allows users to join from our Website. When they join they select a company to be part of... How can we stop them from creating a duplicate company if the company already exists that other co-workers are joined in already. For example, Jim joins and does company "NewCo". Then Steph joins and does "NewCo USA".
We are thinking of using the ending of the email address which shows the company name and programmatically assigning them.
We are looking for creative ideas around how we could do this another way.
We do not want to allow them to search and expose who all of our company's are...

Related

Exchange 2019: Manage distribution groups without EAC

we currently create our distribution groups directly via EAC and if a department wants to have a new group they have to contact the IT department for creation.
Now we want some individual employees to be able to create and manage the desired distribution groups themselves. These new groups should then also exist in the global address book, so that the employees can use these distribution groups directly.
Does anyone have a good idea for this?
Best regards
I don't see a native way of letting users create and manage distribution groups themselves.
If you get IT to create the distribution groups with the particular user as manager (ManagedBy), they will be able to add/remove members. This could ease the burden on IT. Furthermore you could script this, which will make it even easier for IT to manage.
It is a very simple procedure to do through PowerShell via. New-DistributionGroup:
https://learn.microsoft.com/en-us/powershell/module/exchange/new-distributiongroup?view=exchange-ps

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.

Table designing and efficiency

I am designing a database, in oracle 12c for my University assignment and have reached a point in my design, where I can't get much information about it.
Scenario of my assignment
You have been contracted by a UK internet service provider to completely overhaul their in-house software systems. This organisation provides broadband, fibre connections, telephone, IPTV and 4G connections plus several specific custom developments. The customer base is primarily students with the service being provided via their University. They are currently operating with a selection of legacy MySQL databases utilising the MyISAM database engine, as a result there are no suitable relationships in place.
My question
In the event of a RIPA request all the information stored about the student, including all the information gathered via tracking, should be accessible as a single query.
RIPA request
basically a RIPA request is when the policy wants to know everything that a certain individual has been up to, while using the internet, calls and etc.
how should i go about this? when designing my tables in the database, should i have a separate table where all this information gets gathered? example have a bunch of foreign keys inside the table to do with what the student has been up to?
UPDATE
the following is the rest of my assignment, just for a little more information about my question and for the curious.
The internet service provider requires the following for the users:
Students
• Ability for students to register for and purchase products tailored by their University
• Students to be able to view a notice board on an app, the website, the intranet and IPTV platforms.
• The students should be billed for using recurring products.
• Student activity should be tracked while using the internet and phone. Routers within the University will issue a configurable REST API query that provides the URL being accessed, along with details about the student and location. Phone calls are also tracked with phone numbers, duration and time of call also being provided via a configurable REST API query.
• Phone calls require a suitable level of credit balance; the router to which the phone is connected will make an API request reducing the call credit balance throughout the call.
• Students can make comments on notice board items and other students can comment upon those comments.
• Vouchers are available to students to enable them to pay for items or to reduce the cost of the item, either by a fixed amount or a percentage of the cost. A record of the vouchers used should be maintained.
• The television content watched should be recorded for advertising purposes. The IPTV system will request a configurable API that will provide the channel being watched, the student email and the time.
• Students require a log in to access the notice board, broadband, telephone, IPTV and 4G connection; this is stored on the individual device after the first login.
• Ability to access support via instant message, phone and email.
University Staff
• The University should be able to add notice board items.
• The University should be able to control products that are being offered to their students, limitations should be in place to ensure the University does not oversell connectivity available.
• Notice board content can be targeted to specific layers, starting at particular Universities then halls of residence within the Universities and finally custom student groups (by course, by club, etc), these groups should be specified by the University.
• University staff will require usage statistics.
• University staff will need to utilise an admin area to make changes
Internet Service Provider Staff
• The ISP should be able to manage the connectivity limitations
• In the event of a RIPA request all the information stored about the student, including all the information gathered via tracking, should be accessible as a single query.
• The ISP provides support via three methods, email, phone and instant messenger. The support emails and replies are managed on an existing server; this will issue a customisable REST API query that will provide the student email address, email subject, email body, date and time. Phone calls are manually recorded via desktop software, including details of the student who called and the nature of the query. Instant messages are recorded in the database and used to manage the instant message system.
• It should be possible to create vouchers for student use; these vouchers should be limited by time, how many students use it and number of uses per student. The voucher should be accessible via a random code.
• ISP management will require statistics about usage and sales.
• ISP staff must approve new products before they are displayed to students
• ISP staff should utilise desktop software to make any changes.
Including the following optional extensions will allow you to achieve a higher grading (see Grading Criteria- Implementation).
• Room repairs – students are able to request repairs to their room. While they are logged in to the website they can specify an issue with their room. The room number should not need to be provided.
• Free guest WIFI – guests are able to register to access the WIFI for free. Guests need to provide a home address, email address and phone number. The phone number must be confirmed before they can access the WIFI, this is managed with an existing server that sends a text message based on a REST API request and once it has been confirmed issues a REST API query.
In general, I would start by creating a "pure" relational model, based on what you know. You can then see if you need to do anything clever to meet that specific RIPA query requirement.
The entities you have described are:
the system has many customers
a customer has one or more services
a service has a type (broadband, TV, 4G, etc.)
a service has 0 or more monitorable events
an event has a type(make phone call, watch TV show, request URL etc.)
an event has data; each event type has a different schema for that data
There are likely lots of other interesting things to model - billing data, etc. - but your scenario doesn't mention them, so I won't worry about them.
If the entities above are correct, your schema is pretty obvious:
Customer
-----------------
CustomerID (PK)
Name
...
Service
--------------
ServiceID (PK)
Name
Type
.....
CustomerService
--------------------------
CustomerID (FK)
ServiceID (FK)
Event
-------------------------
CustomerID (FK)
ServiceID (FK)
Type
Date
Event_Data
The remaining challenge is "how do we store event data"? As you haven't specified any requirements other than "list it", I'd suggest either a text field to store the raw data, or XML/JSON to allow smarter queries (e.g. "find all events where someone started to watch Homeland on IPTV") - but as you haven't specified this requirement, you may not need to do this.
Your RIPA query would be something like:
select customer.*,
service.*,
customer_service.*,
event.*
from customer
inner join customer_service on customer.customerID = customer_service.customer_id
inner join service on customer_service.service_id = service_service_id
inner join event on customer.customer_id = event.customer_id
inner join event on service.service_id = event.service_id
where customer_id = ?
You can have a table to maintain users, another one to maintain services. Then another table to map user and services.
This will allow you to easily add/update/remove services. Removal can be done by marking service as inactive using a flag. This will allow retaining old data while new ones won't be using these services.
Update:
Your user table and services table will not be linked to each other directly through keys. The reason is that you have many to many relationship between user and services. One user can have many services and each service can be used by many users.
Instead, UserServiceMap table will have both user and services id as foreign keys. While getting data, you can join three tables and get the result. The map table should have its own primary key instead of using composite key. This will help users to stop and restart services.

How to create subgroups for #mentions in Microsoft Teams

Right now I have a small group of people beta testing MS Teams in hopes that it would be a good team collaboration/communication tool.
But, I need one important feature to really make it most useful and I can't find it.
I know you can mention everybody with an #team or #channel, or a single user with #username. But can I create subgroup names that include a subset of the entire team?
Let's say I have a big team of 25 users. I want to create certain subgroups, like #group1 that only includes 10 of those users or #group2 that only has 5 of those user.
I need to have a one mention way to contact this subgroup without having to individually mention each person or using #channel to mention to a lot of people who aren't interested.
Is there a way to do this?
Make 2 channels:
#group1
#group2
Ask people to join a channel or add them manually.
Now you can mention them by that channel name i.e. #group1 or #group2
For example, imagine you have developer and operations teams in your "Adme Inc" company.
You create a Team "AdmeInc".
General channel is created automatically.
You create a channel Dev in that team and add all developers to it
You create a channel Ops in that team and add everyone in operations team to it.
Now everyone can chat in General about all kind of stuff.
Anyone can mention #Dev anywhere and everyone in developers team is notified.
Or they can mention #Ops anywhere and everyone in operations team is notified.
In the meantime, MS Teams offers tags to achieve this. Tag the team members using your own defined tags. Then simply #-mention the tag name in a standard channel (or in a chat).
https://support.microsoft.com/en-us/office/using-tags-in-teams-667bd56f-32b8-4118-9a0b-56807c96d91e

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