Archive subsites from sites in SharePoint 2010 - sharepoint-2010

I have a requirement to find a way to archive subsites from a site.
When I say 'Archiving' I mean moving a subsite from one site to another so the end users can still access the subsites and check the history etc.
The main site is a Training site and the subsites are training courses, when these courses have ran there is no need for them to be sat under the training department site and I can envision it becoming confusing with too many of these subsites.
I know I can move them using structure and content in site admin but don't really want end users to be doing that after each course has ran ( we have had over 500 this year!)
Has anyone else faced a similar issue or have any advice to how they would go about it?
Many thanks

Is there a need to retain the subsites? If so, instead of moving the site, perhaps changing the way your users access the sites would be an easier way. You could set up a list with the current classes (assuming you don't have one already) and include a field in that list that links to the course's subsite. Create a view that shows only the current courses so the end users never see the other subsites.
If you don't need to keep the subsites, you should look into some kind of workflow that can kick off when a class expires that deltes the subsite. I'm pretty sure you can't create a workflow with Nintex or SharePoint Designer to move a site to another location, so you may need to code something with C#.

Related

Create login for multiple users with customized content with TYPO3 11.5.21

First of all, I must confess that I'm very, very new in TYPO3, therefore, my questions might be a bit confusing or not properly understandable. So, please be patient with me.
As already stated in the title, I want to create a login page for multiple users and every user should see a customized content, for example some pdf files or slides.
I was able to create a login page and it's working but I have no clue what's happening afterwards. I'm searching for a solution since days but the TYPO3 documentation is super shitty, especially for beginners like me.
My idea was to work with a MySQL database (I don't even know if this is possible). After the login all data about the customer are read from the database and defined files (some pdf and slides) should be shown.
Is this possible like that? Or how is the usual way to do that?
I'm happy for every hint!
Thanks a lot in advance :-)
cheers,
expikx
I tried to find a solution online but without success
you need a custom extension which will render the files based on the logged in user. By using the extension "extension builder" you can create a first version of your extension very quickly which can be used as base.
If you are german speaking, take a look at the videos of Stefan, e.g. https://www.youtube.com/watch?v=dhRBvTZoPQM& which document how to create an extension as well
If you use the Login of TYPO3 you can also use the access-management from TYPO3 for FrontEnd content:
for each erecord (page, content, news, ...) you can decide which group(!) of users can see it.
Each record in TYPO3 normaly contains a field (in the access tab) to select which groups can see this record.
It's up to you to define the groups each user belongs to.
And each group can access some content. TYPO3 merges it and even can give access to one record to multiple groups.
Regarding files like PDFs: if you do not need absolute access restrictions it would be possible to only list links to the files for the apropriate groups. (other users, even not logged in users could access the files if they know the URL)
e.g.:
You have users in three groups like owner of product A, product B, product C.
Of course there are owners of multiple Products.
For each group you can provide content like manuals, updates or lists of service points.
First you can give access to the pages about each product only to member of the matching group. All the content of that pages are visible only after login and if the user belongs to that group.
But you also can have mixed pages:
Maybe news where all updates are shown. Although each news record has (at least) one group to be shown to.
There could be one page with the news plugin to show all news. After login only those records are shown which belong to the groups of the user, other records are hidden. (not logged in users can see only records not restricted to any group)
If you want a individuality of content by person you need a group for each user.
If you want the user to select by himself what his interests are you need a FE plugin where he can select his memberships of individual groups.

VSTS Restrict access to sensitive work items

Foreword: I've searched around on this question a fair bit and found answers which are close to a solution, but not what I'm looking for. So here I am, and I hope someone can help me. I'm relatively new to VSTS, so be gentle (or at least constructive) ;P
The Question: I'm looking for a way to restrict access to specific tickets (NOT by ticket type) that contain NDA protected data, whilst keeping them in the same backlog and iterations as the rest of the tickets related to a project.
We have many different NDA protected customers, so whilst creating a new ticket type per NDA, and restricting access to this, could work, it's not the solution I'm looking for.
Alternatively, I'm barking up the wrong tree, and there is an entirely different and "better way" to support this use-case?
Edit 1 - More info: Let's say I have 1 backlog for a product. It contains only 2 work items. It's important there is only 1 backlog for planning and overview by a product owner.
One of the two work items contains sensitive information only half the development team should have visibility to. How do I keep both tickets in the same backlog and iterations, but hide the sensitive one from some team members?
Thanks in advance for your time!
Regarding permission of work items in a team project, you can set the permission in area and iteration scope, but can’t for specific work items.
So, you need to put these work items in different area and manage permission for this area. Simple steps:
Go to team project admin page
Work=>Areas
Click New/New child, to create a new area.
Click …=>Security, set the permission for the group(s) or user(s)
Click the default team’s settings => Areas
Click + Select areas to add that area in order to show related work items (in that area)

Permissions issues with Office365 Sharepoint, Owner account

I have just been tasked with overseeing an Office365 Sharepoint team site, and there is a very odd legacy issue that was left unresolved by the last administrator. We have the standard set of groups that you would expect to see (visitors, members, owners) and one of the folks here is in both the Members (contribute) and Owners (full control) permission groups.
However, her ability to access things is... strange. She can view most everything, and add new content to most everything (lists, forms, etc.) But she cannot edit any documents, list items, etc. Nor can she delete items.
Is there a way that her permissions (full control) could be in conflict with another setting? What should I look for to investigate further?
All help will be greatly appreciated, as this is quite mysterious.
Cross-listed at: https://sharepoint.stackexchange.com/questions/58306/permissions-issues-with-office365-sharepoint-owner-account
You want to look at the document libraries and lists in question, by default they inherit permissions but this can be changed. Select the library and select the permissions icon from the top ribbon to check to see what that particular user's rights are for the items in question.

Sharepoint site for external customers

I have an SP site where employees submit their reports. A report is submitted with Company information attached as metadata in a sharepoint library.
For a company there is a customer attached with a separate login in our AD and the customers all belongs to a separate user group.
I want to create a separate site where their customers can login and read their reports
My first problem is to share a library between sites so that the customers can access the reports submitted in our internal site.
Second problem is to create a connection between the company and the customer login so i can filter the reports so that the customer only sees their report.
How would you go about doing this?
From what I understand of this scenario, I would handle report sharing with customers as a content deployment exercise. Not sure whether you want one site for all customers from all companies to log in or if you'd want to create a site for each company. Custom development of either event receivers or workflow on the internal list would handle 'publication' (i.e. copying the document to the client-accessible list) of a report once uploaded (and potentially - approved).
If there is one common site, you would need to factor in item level permission setting based on the company metadata. If you have a site for each company, security should be a whole lot easier.
If your goal is only to share reports then going with separate site for customer login or with site per customer is IMHO huge overkill and almost useless.
Solution to your problem is quite easy: One site with separate Document Library for each customer. There is not much difference between 1 customer = 1 site and 1 customer = 1 library except for simple scenario I found that maintaining multiple libraries on single site is much more easier then maintaining multiple sites with basically one library on it. However if you plan to have more interaction and 'sharing' with customers (now or in future) then separate site for each customer is a option.
Steps:
Define custom Document Content Type on site level holding all metadata your report needs
Create Document Library for each customer with this new content type
Define permissions on Document Library level - each customer can access only one designated library (need to have read rights on site)
Your employees need to upload report to customer library so that customer can see it. If permissions are set correctly then customer can see only designated library and you can easily set administrators (can see all) and superusers (can see more then one library/customer).
Having all reports in single site will simplify developing process for additional business logic by using custom workflows and/or receivers. Also searching and aggregation for administrator or super user is much easier.

How to decide whether to split up a VB.Net application and, if so, how to split it up?

I have 2 1/2 years experience of VB.Net, mostly self taught, so please bear with me if I seem rather noobish still and do not know some of the basics. I would recommend you grab a cup of tea before starting on this, as it appears to have got quite long...
I currently have a rather large application (VB.Net website) of over 15000 lines of code at the last count. It does not do retail or anything particularly complex like that - it is literally just a wholesale viewing website with admin frontend, catalogue / catalogue management system and pageview system.
I don't really know much about how .Net applications work in the background - whether they are all loaded on the same thread or if each has its own thread... I just know how to code them, or at least like to think I do... :-)
Basically my application is set up as follows:
There are two different areas - the customer area and the administration frontend.
The main part of the customer frontend is the Catalogue. The MasterPage will load a list of products but that's all, and this is common to all the customer frontend pages.
I tend to work on only one or several parts of the application at a time before uploading the changes. So, for example, I may alter the hierarchy of the Catalogue and change the Catalogue page to match the hierarchy change whilst leaving everything else alone.
The pageview database is getting really quite large and so it is getting rather slow when the application is first requested due to the way it works.
The application timeout is set to 5 minutes - don't know how to change it, I have even tried asking this question on here and seem to remember the solution was quite complex and I was recommended not to change it, but if a customer requests the application 5 minutes after the last page view then it will reload the application from scratch. This means there is a very slow page load whenever it exceeds 5 minutes of inactivity.
I am not sure if this needs consideration to determine how best to split the application up, if at all, but each part of the catalogue system is set up as follows:
A Manager class at the top level, which is used by the admin frontend to add, edit and remove items of the specified type and the customer frontend to retrieve a list of items of the specified type. For example the "RangeManager" will contain a list of product "Ranges" and will be used to interact with these from the customer frontend.
An Item class, for example Range, which contains a list of Attributes. For example Name, Description, Visible, Created, CreatedBy and so on. The form for adding / editing loops through these to display relevant controls for the administrator. For example a Checkbox for BooleanAttribute.
An Attribute class, which can be of type StringAttribute, BooleanAttribute, IntegerAttribute and so on. There are also custom Attributes (not just datatypes) such as RangeAttribute, UserAttribute and so on. These are given a data field which is used to get a piece of data specific to the item it is contained in when it is first requested. Basically the Item is given a DataRow which is stored and accessed by Attributes only when they are first requested.
When one item is requested from a specific manager is requested, the manager will loop through all the items in the database and create a new instance of the item class. For example when a Range is requested from the RangeManager, the RangeManager will loop through all of the DataRows in the Ranges table and create a new instance of Range for each one. As stated above it simply creates a new instance with the DataRow, rather than loading all the data into it there and then. The Attributes themselves fetch the relevant data from the DataRow as and when they're first requested.
It just seems a tad stupid, in my mind, to recompile and upload the entire application every time I fix a minor bug or a spelling mistake for a word which is in the code behind (for example if I set the text of a Label dynamically). A fix / change to the Catalogue page, the way it is now, may mean a customer trying to view the Contact page, which is in no way related to the Catalogue page apart from by having the same MasterPage, cannot do so because the DLL is being uploaded.
Basically my question is, given my current situation, how would people suggest I change the architecture of the application by way of splitting it into multiple applications? I mean would it be just customer / admin, or customer / admin and pageviews, or some other way? Or not at all? Are there any other alternatives which I have not mentioned here? Could web services come in handy here? Like split the catalogue itself into a different application and just have the masterpage for all the other pages use a web service to get the names of the products to list on the left hand side? Am I just way WAY over-complicating things? Judging by the length of this question I probably am, and it wouldn't be the first time... I have tried to keep it short, but I always fail... :-)
Many thanks in advance, and sorry if I have just totally confused you!
Regards,
Richard
15000 LOC is not really all that big.
It sounds like you are not pre-compiling your site for publishing. You may want to read this: http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx
Recompiling and uploading the application is the best way to do it. If all you are changing is your markup, that can be uploaded individually (e.g. changing some html layout in an aspx page).
I don't know what you mean here by application timeout, but if your app domain recycles every 5 minutes, then that doesn't seem right at all. You should look into this.
Also, if you find yourself working on various different parts of the site (i.e. many different changes), but need to deploy only some items in isolation, then you should look into how you are using your source control tools (you are using one, aren't you?). Look into something like GIT and branching/merging.
Start by reading:
Application Architecture Guide