Salesforce Visual Flow lockdown - salesforce

Is there any way to deploy a visual flow as a managed package where the contents cannot be changed or viewed similar to apex code in a managed package?
If I elect to do it in apex, how do I create the managed locked down package?

According to this article flows don't support intellectual property protection. Flows supports only the following values:
Upgradeable. Flow is updated to a newer version when a package is upgraded.
Subscriber Deletable. A subscriber or installer of a package can delete the flow.
Flows don't support IP protection.
IP Protection
Certain components automatically include intellectual
property protection, such as obfuscating Apex code. The only
exceptions are Apex methods declared as global, meaning that the
method signatures can be viewed by the subscriber. The information in
the components you package and publish might be visible to users on
AppExchange. Use caution when adding your code to a custom s-control,
formula, Visualforce page, or any other component that you cannot hide
in your app.
So source of flows will be visible in subscriber organization
if you select to implement logic in apex code, apex supports intellectual property protection and source will not be viisble for subscriber.

Related

How do I create access control

Hi I am new to oracle express application and I am having trouble trying to create access control for different levels of users. I am not the admin, I am just the developer and cannot create users.
So far I have zero users. I want to create users. Not sure if it is possible. I don't have the function available.
The image below shows an error. Don't know how to solve this. I am assuming it is not possible to create access control if I don't have users. I am not sure.
This won't help you right now, and I know you're not in control of this, but you should encourage your teacher or administrators to update the version of Oracle APEX which is being used.
The version you're using (APEX 5.0) implemented access control by creating a table in your database schema. In newer versions of APEX, local access control is embedded as part of the framework itself.
Your instructions may be using a specific curriculum associated with this version of APEX, and it would be time-consuming to update. But please do let them know for future classes that Oracle does provide a completely free curriculum, with a permissive use license.
Here is more information about the curriculum, and here was the blog announcement.

SCCM Detection Methods - where are they stored?

By the end of last week our central IT Department introduced SCCM and applied it to a bunch of clients in our division. My colleagues and I work as so called "IT-Partner" in a 1st level support for a few hundrets of colleagues. Now we're facing some problems with our new SCCM System (installed packages do not work etc.) Now we'd like to "reset" applications so the SCCM Agend will reinstall them. I've read something about the detection methods but unfortunatelly I do not really know how they work nor I know where those methods are saved. I want to "analyse" those methods so I know which file to modify / delete that the agent will reinstall the application.
By the way, how much time does SCCM take from "assigning" a package to applying to the client?
Assuming you only have the client and no access to the SCCM Console the detection methods can be found using WMI. They are stored in root\ccm\CIModels in the Class Local_Detect_Synclet.
The format is XML in one column and it is designed so that all kinds of detection methods can basically be represented in the same style so it's not very readable but you should be able to get some basic understanding about the detection method used.
Keep in mind this is only true if the software was deployed in the "new" (introduced in sccm 2012) application format and not for the "old" package/program format.
If you want more detail I once tried to automate the process of triggering a reinstall for any given application but ultimately failed due to problems with the chache/distribution point. I posted all my findings here.
So from an application POV. When you deploy an app the detection method is setup in SCCM to determine wether or not the application installed successfully. This detection method could be configured a variety of ways. For example, it could check to see if the msi code is installed to determine success, it could check the .exe and compare it to a specific version, or even check a registry file for existence. In order to change/modify these detection methods you should be an SCCM admin and be able to login to the console. From there you would select the specific application or package you want to analyze and click through the properties of the deployment.

How to create a managed package for use within a single organization?

I need to create a reusable component that would only be used by other developers within a single SalesForce organization. The component is made up of VisualForce pages and Apex code. I believe this would normally be done as a managed package in ISVForce, but my understanding is that ISVForce requires additional reviews and this package is only for internal use - it shouldn't be listed on the App Exchange.
Is there a notion of managed packages for internal reuse? Or is there some other way to create distributable, closed-source packages?
You can simple create a managed package and install it to your org via install link, this way do not require security review because you do not need to publish your package in AppExchange. Just read a manual about creating managed package. I do believe that a creation of managed package without publishing in AppExchange is pretty simple and straightforward and that's what you really need

Detect Salesforce edition and/or capabilities from Apex/VisualForce

From within an Apex class, how can I detect the Edition (ie, Group, Professional, Enterprise, Unlimited). More specifically, is there an API to retrieve the capabilities (or lack thereof) for the user's edition?
The problem I am trying to solve is that from the Group/Professional edition, users cannot access the custom Web Services in my app, receiving the error LOGIN_OAUTH_API_DISABLED. Is there a way to detect whether this is going to work from within Apex?
You can use the following SOQL to determine the Organization's license type:
SELECT OrganizationType FROM Organization
For Professional it will return "Professional Edition". This is detailed on the Organization object page.
Are there any specific capabilities you're looking to discover? There's no way to determine the edition (and this would be mostly a red herring if you could). A lot of differences end up being reflected in the data model, and you can discover that using the describe features.
If you want to check from apex if your web services is enabled/available, then you could use apex callouts to try and make a call to it (and FWIW, the error code is from OAuth, and not from your apex web service)

Server-side reuse of a silverlight class that uses .Net RIA Domain Services

Currently I have a working Silverlight application that uses .Net RIA Services.
It's structure:
Client-side
Application.Client.UI.dll (Xamls and
basic UI stuff)
Application.Client.BL.dll (Contains the Link to RIA and most of the business logic)
Server-side
Application.Server.Data.dll (Server-side dll that holds the Entity-model and it's generated domain service)
Application.Server.Web.dll (Only the ASP.net hosting container, which references the
Application.Server.Data.dll)
I placed most of the business logic on the client side (Application.Client.BL.dll) for better user-experience (fast reactions) and to free up server resources. My challenge is now to re-use this client-side dll including it's RIA data access capabilities, in a server-side windows service. I'm wondering, is that possible at all? Is the Application.Client.BL.dll still able to consume the existing RIA service, or does that dll require the Silverlight runtime to identify/locate it's service target, and therefore will not work anywhere else.
Curious for your answers
You really shouldn't put any business logic on the client, the guys in security and / or architecture will hate you for it ;-). Furthermore you can't use Silverlight assemblies in ASP.Net or Desktop projects and vice versa. If memory serves correctly, Silverlight uses an entirely different CLR altogether.
I encountered similar needs when working with compact framework assemblies I also wanted to compile for the full framework. I'll describe how I would work around this scenario.
If there exist any issues referencing the Silverlight assembly, consider building two projects as follows:
Project #1 would be your Silverlight library, and should contain all the source files you want to use on the client.
Project #2 would be your Windows Service. Instead of including source files directly, use the "Add Existing Item", find the original source file in project #1, then (and this is the magic), drop down the Add button to choose, instead, choose "Add as Link".
By including the source file as a link, you retain the ability to maintain your source code in one location, but add the ability to compile your code for multiple frameworks. As long as the code relies on assemblies available in both the Silverlight framework and the full .NET framework, then you're money.
Now, regardless of whether you choose a multi-project approach, know that domain context classes have additional constructors that allow you to specify contextual information, such as the URL, for the corresponding domain service. I use the following code in one application to construct a domain context for a domain service that provides personnel data:
var context = new PersonnelDomainContext(
new Uri(ConfigurationManager.AppSettings["PersonnelServiceUrl"]))
In this case, the URL looks something like:
http://website-url/Services/Hyphenated-Namespace-PersonnelDomainService.svc
Of course, when writing a Windows Service, nothing is stopping you from referencing the server-side domain service (not context) assembly directly. With the domain service in hand, you can instantiate a service instance without all the additional configuration and without the additional network XML payload. There are trade-offs to this approach, such as forfeiting centralized configuration management (such as connection strings), but depending on your circumstances, you may find the trade-offs to be worth it.
Happy coding!
Have you considered using fork-reuse? Take a look at:
http://sharednow.blogspot.com/2011/05/its-not-just-reuse.html

Resources